AIUTO PER ESERCIZIO

di il
17 risposte

AIUTO PER ESERCIZIO

Ciao a tutti ,

devo realizzare un programma che dopo aver scelto quanti numeri inserire li somma e verifica qual'è il maggiore ed il minore dei numeri inseriti .
per quanto riguarda la somma ci sono riuscito e il codice è questo:

//VERIFICA IL MAGGIORE ED IL MINORE E FAI LA SOMMA DEI NUMERI INSERITI

#include <stdio.h>


int main(void){

int n,i,mag,m,min,somma;

	printf("Quanti numeri vuoi inserire? "); // CHIEDO ALL'UTENTE QUANTI NUMERI VUOLE INSERIRE 
	scanf("%2d",&n); // INSERIMENTO DELLA QUANTITA' DEI NUMERI DA INSERIRE
	
	somma=0; // VARIABILE PER LA SOMMA INIZIALIZZATA A 0
	m=0; // VARIABILE PER L'ISERIMENTO DEI NUMERI 
	
	for(i=0;i<n;i++) //IL CICLO INIZIA A 0 E TERMINA QUANDO SONO STATE INSERITI LA QUANTITA' SCELTA  
	
	{
		printf("%d) Inserisci numero: ",i);
		scanf("%d",&m);// INSERIMENTO DEI NUMERI DA SOMMARE
		somma=somma+m;	
		
	}

	printf("La somma dei %d numeri inseriti e %d: \n",n,somma);//STAMPA LA SOMMA DEI NUMERI INSERITI
	
	
}



ma non riesco a trovare un modo per verificare il maggiore ed il minore dei numeri inseriti
mi potete aiutare?

17 Risposte

  • Re: AIUTO PER ESERCIZIO

    Man mano che li inserisci, controlla con il precedente e memorizza il maggiore / minore se è il caso ...
  • Re: AIUTO PER ESERCIZIO

    Quindi Se ho capito bene devo fare in modo che ad ogni numero inserito deve verificare se maggiore o minore di quello precedente , quindi cosa mi conviene usare un if o un while? Li metto dentro nelle istruzioni del for o fuori?
  • Re: AIUTO PER ESERCIZIO

    Il ciclo per l'inserimento dei numeri già ce l'hai.

    Al suo interno controlla il valore del numero appena inserito con la scanf (come si controlla il valore di un numero?) rispetto ad altri due valori che conserverai in due variabili vmin e vmax ... Solo la prima volta (quando il ciclo comincia ovvero l'indice i sarà uguale a 0) assegnerai a vmin e a vmax il valore in input, in seguito farai il controllo ...

    E' più facile scrivere il codice ...
  • Re: AIUTO PER ESERCIZIO

    Prima di tutto grazie mille per l'aiuto che mi stai dando, ho provato a scrivere il codice come hai suggerito e se ho capito bene dovrebbe essere così.
    però fa la somma dei numeri ma non il controllo , dove sbaglio?
    
    
    #include <stdio.h>
    
    int main(void){
    
    int n,i,vmax,m,vmin,somma;
    
       printf("Quanti numeri vuoi inserire? "); // CHIEDO ALL'UTENTE QUANTI NUMERI VUOLE INSERIRE
       scanf("%2d",&n); // INSERIMENTO DELLA QUANTITA' DEI NUMERI DA INSERIRE
    
       somma=0; // VARIABILE PER LA SOMMA INIZIALIZZATA A 0
       m=0; // VARIABILE PER L'ISERIMENTO DEI NUMERI
       vmax=0;
       vmin=0;
    
       for(i=0;i<n;i++) //IL CICLO INIZIA A 0 E TERMINA QUANDO SONO STATE INSERITI LA QUANTITA' SCELTA
    
       {
          printf("%d) Inserisci numero: ",i);
          scanf("%d",&m);// INSERIMENTO DEI NUMERI DA SOMMARE
          somma=somma+m; // SOMMA DEI NUMERI INSERITI
                  // VMAX ASSUME IL NUMERO INSERITO
                  // VMIN ASSUME IL NUMERO INSERITO
    
    vmax=m;
    vmin=m;
    
                    if(vmax>m)       //CONTROOLLO DEI NUMERI INSERITI QUAL' E' QUELLO PIU' GHRANDE
                        printf("Il valore max e %d",vmax);
    
                              if(vmin<m)      //CONTROOLLO DEI NUMERI INSERITI QUAL' E' QUELLO PIU' PICCOLO
    
                                   printf("Il valore min e %d",vmin);
    }
    
    printf("La somma dei %d numeri inseriti e %d: \n",n,somma);//STAMPA LA SOMMA DEI NUMERI INSERITI
    
    }
    
    
    
  • Re: AIUTO PER ESERCIZIO

    No ...

    vmax=m e vmin=n SOLO se i==0

    e poi

    SE m>vmax ALLORA vmax=m
    SE m<vmin ALLORA vmin=m

    E la visualizzazione di vmin e vmax, come per la somma, FUORI dal ciclo
  • Re: AIUTO PER ESERCIZIO

    Grazie mille ora funziona
    
    
    //VERIFICA IL MAGGIORE ED IL MINORE E FAI LA SOMMA DEI NUMERI INSERITI
    
    #include <stdio.h>
    
    int main(void){
    
    int n,i,vmax,m,vmin,somma;
    
       printf("Quanti numeri vuoi inserire? "); // CHIEDO ALL'UTENTE QUANTI NUMERI VUOLE INSERIRE
       scanf("%2d",&n); // INSERIMENTO DELLA QUANTITA' DEI NUMERI DA INSERIRE
    
       somma=0; // VARIABILE PER LA SOMMA INIZIALIZZATA A 0
       m=0; // VARIABILE PER L'ISERIMENTO DEI NUMERI
       vmax=0;
       vmin=0;
    
       for(i=0;i<n;i++) //IL CICLO INIZIA A 0 E TERMINA QUANDO SONO STATE INSERITI LA QUANTITA' SCELTA
    
       {
          printf("%d) Inserisci numero: ",i);
          scanf("%d",&m);// INSERIMENTO DEI NUMERI DA SOMMARE
          somma=somma+m; // SOMMA DEI NUMERI INSERITI
                  // VMAX ASSUME IL NUMERO INSERITO
                  // VMIN ASSUME IL NUMERO INSERITO
    
            if(i==0)
            vmax=m;
            vmin=n;
    
            if(m>vmax)
                    vmax=m;
            if(m<vmin)
                    vmin=m;
    }
    
    printf("Il valore massimo e %d\n",vmax);
    printf("Il valore minimo e %d\n",vmin);
    printf("La somma dei %d numeri inseriti e %d: \n",n,somma);//STAMPA LA SOMMA DEI NUMERI INSERITI
    
    }
    
    
    
  • Re: AIUTO PER ESERCIZIO

    Guarda che questa if
    
            if(i==0)
            vmax=m;
            vmin=n;
    
    non è scritta correttamente
  • Re: AIUTO PER ESERCIZIO

    Essendo un'istruzione composta devo mettergli le parentesi graffe giusto?
  • Re: AIUTO PER ESERCIZIO

    Esatto e poi chiediti cosa c'entra n ?
  • Re: AIUTO PER ESERCIZIO

    Allora io adesso non ci capisco più niente , ho sistemato if mettendo le parentesi graffe e , sia che metto
    vmin=m e vmax=m e vmax=n e vmin=n
    il programma funziona lo stesso ed in entrambi i casi mi trova il min e il max perchè?
  • Re: AIUTO PER ESERCIZIO

    Rifletti ...

    devi mettere n (che è un contatore, che c'entra con i valori che inserisci?)
    o mettere m (che è il valore che inserisci?)

    Se funziona anche con n è solo per caso ...
  • Re: AIUTO PER ESERCIZIO

    E proprio questo che mi manda in confusione se n è un contatore perchè il programma funziona ugualmente?, quello che devo verificare sono i valori che inserisco ossia m e non n , ho capito l'errore che ho fatto, ma se poi quando eseguo il programma e vedo che funziona e non guardo più il codice come faccio ad accorgermi dell'errore ?
    La prima volta ho inserito questo n per sbaglio
            if(i==0)
            vmax=m;
            vmin=n;
    
    e comunque il programma andava lo stesso , poi dopo solo perchè sei stato tu a dirmi che non era corretto che ho notato l'errore , io uso dev c++ come compilatore ne esiste un'altro migliore magari che ti visualizza subito che c'è qualcosa che non va?
  • Re: AIUTO PER ESERCIZIO

    Ragiona ... se scrivi

    vmin=n;

    cosa significa?

    Fai un esempio con dei valori di prova e vedi - sulla carta - cosa significa, comprenderai perché "a volte" funziona. Ma comprenderai che è sbagliato.

    Ad esempio, prova con 3 valori ... inserisci 10, 20, 30
  • Re: AIUTO PER ESERCIZIO

    Ora ho capito , mettendo vmin=n farà la verifica tra la variabile contatore ed il numero inserito e non tra i soli numeri inseriti .
    Grazie mille per l'aiuto e la pazienza nel farmi capire le cose
Devi accedere o registrarti per scrivere nel forum
17 risposte