Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-03-2015, 15:00   #1
TheVeryKill
Member
 
Iscritto dal: Nov 2010
Messaggi: 42
[C] Stack e funzione Pop

Salve a tutti, sto studiando il linguaggio C e prendendo spunto da i programmi di un professore mi sto esercitando sullo Stack e le funzioni di Push e Pop. Il file Cpp che ho sottomano è questo:



#define MAX 4

int main(){
int stack[MAX+1];
int i,n,stato;
stack[0]=MAX;

for (i=1;i<=stack[0];i++){
printf("Inserisci il %d elemento dello stack (max 4 elementi):\n",i);
scanf("%d",&stack);
}

printf("\nLo stack e\':\n");
for(i=1;i<=stack[0];i++){
printf("%d ",stack);
}
printf("\n");
stato=1;
while(stato==1||stato==2){
printf("Cosa vuoi fare?\n POP(1) - PUSH(2) - STAMPA(3)\n");
scanf("%d",&stato);
switch(stato){
case 1:
if(stack[0]==0){
printf("\nNon ci sono elementi nello stack\n");
}
else{
stack[0]--;
printf("Il top era %d\n",stack[stack[0]+1]);
}
break;

case 2:
if(stack[0]==MAX){
printf("\nLo stack e\' pieno\n");
}
else{
printf("Che valore vuoi mettere al top?\n");
scanf("%d",&n);
stack[stack[0]+1]=n;
stack[0]++;
}
break;
}
}

printf("\nLo stack e\':\n");
for(i=1;i<=stack[0];i++){
printf("%d ",stack);
}
printf("\n");

system("PAUSE");
return 0;

}


Ovviamente mancano le librerie ma non è questo il punto. Come potete vedere in grassetto ho indicato una piccola stringa, la mia domanda è: ma cosa vorrebbe indicare? Cioè mi spiego meglio: come da struttura dovrebbe dire "Se lo stack è vuoto dì all'utente che non si può togliere più nulla" ma perché stack[0]==0 dovrebbe indicare stack vuoto? Lo stack così definito non è altro che un vettore di 5 elementi (0 1 2 3 4) ove il valore dell'elemento 0 è pari a MAX (costante predefinita pari a 4), qualcuno mi può spiegare perchè il confronto positivo tra stack[0] e 0 sta ad indicare che il contenitore è vuoto?
Ringrazio tutti in anticipo!
TheVeryKill è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2015, 15:05   #2
Simonex84
Senior Member
 
L'Avatar di Simonex84
 
Iscritto dal: Jun 2003
Messaggi: 15829
probabilmente l'assunzione di chi ha scritto il codice è che 0 indica "nessun elemento" e siccome lo stack è un "oggetto" dove gli elementi vengono impilati, se il primo posto utile (stack[0]) è vuoto (cioè uguale a 0) la pila è vuota e quindi non si può fare nessun push

PS, se stai iniziando a studiare un linguagigo di programmazione (vale per tutti i linguaggi) devi sempre scrivere il codice con un'indentazione corretta, così come l'hai scritto te è illeggibile e un casino da debuggare in caso di errori

Ultima modifica di Simonex84 : 13-03-2015 alle 15:09.
Simonex84 è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2015, 15:09   #3
TheVeryKill
Member
 
Iscritto dal: Nov 2010
Messaggi: 42
Sì ma come puoi vedere ad inizio compilazione ha dichiarato che quella posizione è occupata da un elemento pari a MAX che è uguale a 4, come può mai variare una cosa fissata quindi?

PS: io uso il costrutto funzionale, cioè con i void e poi richiamo tutto nel main, questa è fatta così solo per dare un idea di come si esercita in situazioni del genere.
TheVeryKill è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2015, 15:11   #4
Simonex84
Senior Member
 
L'Avatar di Simonex84
 
Iscritto dal: Jun 2003
Messaggi: 15829
Quote:
Originariamente inviato da TheVeryKill Guarda i messaggi
Sì ma come puoi vedere ad inizio compilazione ha dichiarato che quella posizione è occupata da un elemento pari a MAX che è uguale a 4, come può mai variare una cosa fissata quindi?
se però fai due pop al primo hai "MAX" al secondo niente
Simonex84 è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2015, 15:18   #5
TheVeryKill
Member
 
Iscritto dal: Nov 2010
Messaggi: 42
Cavolo hai ragione ora ci arrivo! E' ovvio che non è uguale a 0 appena inizio ma dopo che ho fatto 4 Pop si svuota!! XD Io ragionavo in termini diciamo immediati senza pensare che quella istruzione era vera solo dopo che avevo fatto 4 Pop ed ero passato da Max a 0 xD Grazie mille!
TheVeryKill è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2015, 15:20   #6
Simonex84
Senior Member
 
L'Avatar di Simonex84
 
Iscritto dal: Jun 2003
Messaggi: 15829
Di niente mi raccomando con l'indentazione è molto ma molto importante
Simonex84 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La prima missione orbitale del razzo spa...
Servizi in streaming sempre più c...
Anteprima della Leapmotor B03X: inizia l...
Anthropic accusa la Cina: Claude utilizz...
I satelliti Rassvet (Starlink russo) di ...
Un agente IA ha risolto un problema su W...
Cina: la CMSA potrebbe cambiare parte de...
68 mensilità di bonus per i dipen...
Rocket Lab ha fatto ricorso contro la de...
Nutanix rende disponibile Azure Virtual ...
Il padrino del deep learning avverte: gl...
Il finto avviso "iPhone Storage is Full"...
Dietrofront in Cina, addio touchscreen p...
Un piccolo accessorio trasforma lo smart...
Dopo 370 anni il Cyphral Distich non è p...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:26.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v