Buongiorno a tutti! è la prima volta che scrivo in questo sito, ho letto il regolamento e spero vivamente di non aver sbagliato a formattare il codice, se così fosse chiedo perdono.
Venendo all'oggetto della discussione, ho scritto questo programma che , ricevendo dei dati dall'esterno, li immettesse in una lista. Inoltre , il programma include una funzione "visualizzaEcontrolla" che stampa i valori della lista e dovrebbe contare quanti sono i pari e i dispari. Ebbene, funziona tutto perfettamente tranne il discorso dei pari e dispari, quando vado a compilare entrambi i tipi di numeri mi si considerano pari a 0. Probabilmente avrò fatto un errore stupidissimo, se me lo faceste notare voi programmatori esperti ve ne sarei grato ;
Grazie in anticipo, posto qui il codice, la funzione che ho menzionato si trova proprio alla fine:
#include <stdio.h>
#include <malloc.h>
typedef struct lista {
int valore;
struct lista *pun;
}list;
list * creaLista();
void visualizzaEcontrolla(list *);
main () {
list * puntLista;
puntLista = creaLista();
visualizzaEcontrolla(puntLista);
}
list * creaLista() {
int i, n;
if (n==0) printf ("\nMa allora sei stronzo!");
else {
p=(list *)malloc(sizeof(list));
printf("\nInserisci il 1o valore: ");
scanf("%d", &p->valore);
aux=p;
for (i=2; i<=n; i++) {
aux->pun = (list*)malloc(sizeof(list));
aux = aux->pun;
list *p, *aux;
printf(" Quanti valori vuoi inserire ? ");
scanf ("%d", &n);
printf("\nInserisci il %do valore: ", i);
scanf("%d", &aux->valore);
}
aux->pun = NULL;
}
return (p);
}
void visualizzaEcontrolla(list *p)
{
int pari, dispari, resto;
printf("\nI valori della lista sono: ");
while (p != NULL) {
printf("%d", p->valore);
printf(" ---> ");
p = p->pun;
}
printf("NULL\n\n");
pari = 0;
dispari = 0;
while (p != NULL) {
resto = ((p->valore) % 2);
if ( resto == 0 )
pari = pari + 1;
else dispari = dispari + 1;
p = p->pun;
}
printf (" I valori pari sono %d ", pari);
printf ("\nI valori dispari sono %d", dispari);
}