PDA

View Full Version : [c]2 compilatori 2 ris diversi


emiliano30
04-06-2005, 19:23
questo prog su visual gira alla grande, sul dev lo compila ma non lo esegue ..chi mi risolve il problema?
:eek:


/*PROGRAMMA PER L'INSERIMENTO IN TESTA AD UNA PILA*/

#include<stdio.h>
#include<stdlib.h>

/*definisco la struttura nodoPila che contiene un dato di tipo intero ed un
puntatore ad una struttura uguale a quella che sto dichiarando*/
struct nodoPila{
int dato;
struct nodoPila *nextPtr; /*definisco una struttura ricorsiva*/
};

typedef struct nodoPila NodoPila; /*sinonimo di struct pila*/
typedef NodoPila *NodoPilaPtr; /*sinonimo di pila**/

void push(NodoPilaPtr *topPtr,int info);/*prototipo inseimento nodo in testa*/
int pop(NodoPilaPtr *topPtr);/*prototipo rimozione nodo in testa*/
void stampaPila(NodoPilaPtr currentPtr);
void instructions(void);
int isEmpty(NodoPilaPtr topPtr);
int main()
{
NodoPilaPtr nodoPtr=NULL;/*punta alla testa della pila*/
int scelta;
int Val;
instructions();/*visualizza menu*/
printf("?");
scanf("%d",&scelta);

while (scelta!=-1){
switch(scelta){

/*inserisce un valore in cima alla lista*/
case 1:
printf("inserisci un intero:");
scanf("%d",&Val);
push(&nodoPtr,Val);
stampaPila(nodoPtr);
break;

/*estrae un valore dalla lista*/
case 2:
/*se la pila non è vuota*/
if(!isEmpty(nodoPtr)){
printf("il valore estratto è%d.\n",pop(&nodoPtr));
}/*fine comando if*/
stampaPila(nodoPtr);
break;
}/*fine comando switch*/
printf("?");
scanf("%d",&scelta);

}/*fine while*/

system("PAUSE");
return 0;

}/*FINE MAIN*/


/*visualizza le istruzioni all'utente*/
void instructions(void)

{
printf("inserisci la scelta:\n"
"1 inserisci un valore in testa\n"
"2 elimini un valore in testa\n"
"-1 esci dal programma\n" );
}


/*inserisce un nodo in cima alla pila*/
void push(NodoPilaPtr *topPtr,int info)
{
NodoPilaPtr newPtr;/*puntatore al nuovo nodo*/
newPtr=malloc(sizeof(NodoPila));/*sto allocando dinamicamente memoria per il nuovo nodo*/

/*inserisco il nodo in cima alla pila*/
if (newPtr!=NULL){
newPtr->dato=info;
newPtr->nextPtr=*topPtr;
*topPtr=newPtr;
}/*fine ramo if*/
else{
printf("%d inserimento impossibile.Non c'è memoria disponobile.\n",info);
}/*fine else*/
}/*fine funzione push*/

/*rimuove un nodo dalla tesa della pila*/
int pop(NodoPilaPtr *topPtr)
{
NodoPilaPtr tempPtr;/*puntatore ad un nodo temporaneo*/
int popVal;/*valore del nodo*/

tempPtr=*topPtr;/*a temp gli passo il valore a cui punta top(valore che sta nel primo nodo),*/
popVal=(*topPtr)->dato;/*assegno (*topPtr)->dato a popVal*/
*topPtr=(*topPtr)->nextPtr;/*topPtr contiene l'indirizzo del nuovo nodo di testa*/
free(tempPtr);/*libero la memoria puntata da temp*/
return popVal;
}/*fine pop*/

/*visualizzo la pila*/
void stampaPila(NodoPilaPtr currentPtr)
{
/*se la pila non è vuota*/
if (currentPtr==NULL){
printf("la pila è vuota.\n\n");
}
else{
printf("la pila è:\n");

/*finche non raggiunge la fine della pila*/
while(currentPtr!=NULL){
printf("%d-->",currentPtr->dato);
currentPtr= currentPtr->nextPtr;
}/*fine while*/
printf("NULL\n\n");
}/*fine else*/
}/*fine funzione print*/


/*se la pila è vuota restituisce 1 altrimenti 0*/

int isEmpty(NodoPilaPtr topPtr)
{
return topPtr==NULL;
}

Fenomeno85
04-06-2005, 19:46
guarda gli errori che ti da il compilatore... vuole il cast su malloc :)

~§~ Sempre E Solo Lei ~§~

emiliano30
04-06-2005, 19:57
il mio dev non da errori lo compila ma quando gli do esegui non fa nulla

intendevi questo?
newPtr=(NodoPila*)malloc(sizeof(NodoPila));
cmq non fa nulla lo stesso

Fenomeno85
04-06-2005, 20:02
il mio dev non da errori lo compila ma quando gli do esegui non fa nulla

intendevi questo?
newPtr=(NodoPila*)malloc(sizeof(NodoPila));
cmq non fa nulla lo stesso

si il cast va fatto ;)

a me parte ... non è che hai fatto solo compila e non compila ed esegui?
~§~ Sempre E Solo Lei ~§~

emiliano30
04-06-2005, 20:09
vabbè che sono una p...a in programmazione..ma fino li ci arrivo :D

emiliano30
04-06-2005, 20:12
ora però vorrei poter sommare gli elementi della pila riempita, solo che non mi ci ritrovo con questi nodi, mi fai un esempio dettagliato? ricordandoti sempre che sono una pippa ;)

Fenomeno85
04-06-2005, 20:12
http://img108.echo.cx/img108/5267/immagine6by.jpg

questo è quello che vedo

~§~ Sempre E Solo Lei ~§~

emiliano30
04-06-2005, 20:16
ho riprovato ma nulla da che può dipendere?

Fenomeno85
04-06-2005, 20:18
ho riprovato ma nulla da che può dipendere?

non lo so :D che versione di dev hai?

~§~ Sempre E Solo Lei ~§~

emiliano30
04-06-2005, 20:31
mi sono appena scaricato l'aggiornamento(ho visto che tu hai la.2)ho riprovato ma nulla di fatto(per la cronaca vado su ESEGUI -COMPILA-ESEGUI)

anx721
05-06-2005, 01:31
gli altri progetti li esegue?

prova a reistallare