Buongiorno.
Avrei una domanda da farvi. Sono sempre alle prese col mio primo programma: ho costruito una lista con puntatori, della qual dovrei stampare numero di elementi, somma di tutti gli elementi contenuti al suo interno e infine la Media.
Col vostro aiuto sono riuscito a occuparmi del primo passo. Ho provato poi, replicando il ciclo while costruito per sommare gli elementi, ad effettuare la conta e a richiamare le due variabili (totale e numero: somma delle variabili e loro numero) per farne la media, dividendone una per l'altra.
Il programma però continua ad effettuare solo la conta delle variabili e a stamparle .
Sapreste correggermi e spiegarmi cos'è che sbaglio affinché possa capire.
Grazie a tutti per la pazienza e per l'aiuto che mi date.
#include <stdio.h>
#include <malloc.h>
#include"stdafx.h"
//struttura della lista: preimpostata da C (studiala e basta)
struct elemento {
int inf;
struct elemento *next;
};
struct elemento *crea_lista();
void visualizza_lista(struct elemento*);
int totaleInf(struct elemento*);
int numeroinf(struct elemento*);
int main()
{
struct elemento *lista; // puntatore della lista
lista = crea_lista(); // crea la lista
visualizza_lista(lista); // stampa la lista
printf("%d\n", totaleInf(lista));
printf("%d\n", numeroinf(lista));
float media;
int numero;
int totale;
}
// strumenti per scorrere la lista:
struct elemento *crea_lista()
{
struct elemento *p, *punt;
int i, n;
// permetto all'utente di aggiungere elementi alla mia lista
printf("Specificare il numero di elementi... ");
scanf("%d", &n);
if (n == 0)
{
p = NULL; // lista vuota
}
else {
/* creazione primo elemento */
p = (struct elemento *)malloc(sizeof(struct elemento));
printf("Inserisci il primo valore: ");
scanf("%d", &p->inf);
punt = p;
// se la lista non è vuota ggiungo il primo elemento
/* creazione elementi successivi */
for (i = 1; i < n; i++)
{
punt->next = (struct elemento *)malloc(sizeof(struct elemento));
punt = punt->next;
printf("Inserisci il %d elemento : ", i + 1);
scanf("%d", &punt->inf);
} // chiudo il for
punt->next = NULL; // marcatore fine lista
} // chiudo l’if-else
return(p);
} // chiudo la funzione
void visualizza_lista(struct elemento *p)
{
printf("%s", "lista = ");
// ciclo di scansione
while (p != NULL)
{
printf("%d ", p->inf); // visualizza l’informazione
p = p->next; // scorre di un elemento
}
printf("%c", '\n');
}
int totaleInf(struct elemento * p) {
printf("%s", "totale = ");
int totale = 0;
while (p != NULL)
{
totale += p->inf;
p = p->next;
}
return totale;
int numeroinf(struct elemento * p) {
printf("%s", "numero = ");
int numero = 0;
while (p != NULL)
{
numero = p->inf + 1;
p = p->next;
}
return numero;
}
//calcolo della media
media = totale / numero;
return media;
}