DOMANDA piccolo dubbio

simo9115

Nuovo Utente
139
3
salve a tutti sono alle prime armi in c e da novellino e da autodidatta ho delle cose che nn mi sono chiare a partire da questa :

main()

{
int somma, numero;
printf("SOMMA NUMERI\n");
printf("zero x terminare\n");
numero=1;
somma=0;
while(numero!=0)
{
printf("Inser. Intero: ");
scanf("%d", &numero);
somma = somma+numero;
}
printf("Somma: %d\n",somma);
}

perchè in questo programma numero=1?nn riesco a capirlo anche perchè tolgo quella stringa il programma funziona uguale...
 

pabloski

Utente Èlite
2,868
916
Perchè la lista dei numeri viene letta dal while, il quale termina se e solo se numero==0. Se tu mettessi numero=0 invece di numero=1, appena arriva al while, il ciclo nemmeno inizia e il programma termine.

Se levi numero=1 funziona lo stesso, perchè il tuo compilatore non inizializza automaticamente le variabili e quindi numero conterrà un valore pescato dalla memoria a caso. Ma se quel valore dovesse casualmente essere 0? Il tuo programma semplicemente uscirebbe senza farti inputtare nemmeno un numero.
 
  • Mi piace
Reazioni: simo9115

simo9115

Nuovo Utente
139
3
grazie finalmento ho capito...sentite io in verità dovrei sostenere l'esame di c++ e nn di c...solo che io ho un manuale di c! mi consigliate di vedere c e poi passare a c++ oppure buttarmi direttamente dentro c++?
 

pabloski

Utente Èlite
2,868
916
c++ è un superset di c, quindi tutto quello che impari del c è utilizzabile al 100% in c++

e comunque quasi tutti i manuali di c++ pretendono che tu abbia una conoscenza del c
 

simo9115

Nuovo Utente
139
3
#include <stdio.h>
#include <stdlib.h>


main ()
{
int voti[6];
int i, max, min;
float media;


printf("VOTI STUDENTI\n\n");
/*Immissione voti*/
for(i=0; i<=5; i++) {
printf("Voto %d° studente: ", i+1);
scanf("%d", &voti[1]);
}
/* Maggiore, Minore, Media*/
max= voti[0];
min= voti[0];
media = voti[0];
for(i=0; i<=5; i++); {
if(voti > max)
max = voti ;
if(voti < min)
min = voti ;
media = media+voti;
}
media= media/6;
printf("Meggiore: %d\n", max);
printf("Minore: %d\n", min);
printf("Media: %d\n", media);




}

allora apprescindere che l'ho copiato da un testo nn mi porta e nn riesco a capire il perchè...io nn riesco a capire i vari procedimenti nella ricerca del maggiore minore e media...me li potete spiegare?grazie mille ;)
 
M

Mursey

Ospite
La programmazione e' legata si ad un linguaggio ma in primo luogo e' un modo di pensare, una metodologia per la soluzione di problemi.
Quello che devi imparare e' come si ragiona per risolvere i problemi.

Nel caso di maggiore e minore si crea una variabile di riferimento che conterra' il maggiore poi si controllano tutti i numeri della lista, se uno di questi e' maggiore del riferimento allora diventa lui il nuovo riferimento, alla fine della lista quel valore e' il maggiore. Per il minore e' la stessa cosa.
La media e' ancora piu' semplice perche' si fa come si farebbe sulla carta o in matematica: somma di tutti i numeri in lista e divisione per il numero di elementi.
 
L

lock3r

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


main ()
{
int voti[6];
int i, max, min;
float media;


printf("VOTI STUDENTI\n\n");
/*Immissione voti*/
for(i=0; i<=5; i++) {
printf("Voto %d° studente: ", i+1);
scanf("%d", &voti[1]);
}
/* Maggiore, Minore, Media*/
max= voti[0];
min= voti[0];
media = voti[0];
for(i=0; i<6; i++); //Normalmente si usa la notazione minore stretto...
{
if(voti > max)
max = voti ;
if(voti < min)
min = voti ;
media = media+voti;
}
media= media/6;
printf("Meggiore: %d\n", max);
printf("Minore: %d\n", min);
printf("Media: %d\n", media);




}

allora a prescindere che l'ho copiato da un testo non mi porta e non riesco a capire il perchè...io non riesco a capire i vari procedimenti nella ricerca del maggiore minore e media...me li potete spiegare?grazie mille ;)ù

Non stai scrivendo un sms... i caratteri non ti finiscono!


Ciao. Come ti ha detto Mursey prima di passare al codice dovresti già avere in mente la "logica" per risolvere il tuo problema. Hai un array, e devi trovare il minore, il maggiore e la media. Per la media, come ti è stato detto, devi semplicemente individuare il numero di elementi del tuo array, fare la somma di tutti e dividere la somma per il numero di elementi (esattamente come faresti a mano).
Per il minore ed il maggiore ti imposti un riferimento, come ti ha detto Mursey. Fai conto che per esempio l'array è lungo 6, con indici da 0 a 5. A questo punto, come fa il tuo codice, prendi come riferimento per il minimo ed il massimo la prima cella dell'array, perché è ovvio che all'inizio, il minore ed il maggiore sono sicuramente entrambi il primo elemento dell'array.
Codice:
/* Maggiore, Minore, Media*/
max= voti[0];
min= voti[0];

Dopodiché ti scorri l'array con un ciclo for fino alla fine e per ogni elemento controlli che sia maggiore del tuo riferimento per il maggiore e minore per il tuo riferimento minore.
Codice:
for(i=0; i<=5; i++); {
if(voti[i] > max)
max = voti [i];
if(voti[i] < min)
min = voti [i];
media = media+voti[i];}

Sulla media c'è un errore, perché inizializzi la variabile assegnandole come valore la prima cella dell'array, che poi RISOMMI durante il ciclo for. L'implementazione corretta è (correzione in blu):
Codice:
/* Maggiore, Minore, Media*/
max= voti[0];
min= voti[0];
[B][COLOR="#0000FF"]media = 0[/COLOR][/B];
for(i=0; i<=5; i++); {
if(voti[i] > max)
max = voti [i];
if(voti[i] < min)
min = voti [i];
media = media+voti[i];
}

Ci sarebbero altre cosucce, ma visto il livello dell'esercizio questa soluzione va più che bene.
 
Ultima modifica da un moderatore:

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili