Domanda semplice

di il
11 risposte

Domanda semplice

Salve a tutti,
sono un nuovo iscritto che deve sostenere un esame di informatica. Sono alle prime armi quindi mi scuso se la domanda potrà sembrarvi banale.
Devo realizzare un programma che mi chiede di inserire 10 numeri da tastiera e di trovare il maggiore tra questi.

int counter,number;

for (counter=0;counter<10;counter++)
{
printf ("valore: ");
scanf ("%d",&number);
}

poi dovrei inserire una condizione che mi determini il più grande tra questi dieci...mi potreste dare una mano?.Grazie..

11 Risposte

  • Re: Domanda semplice

    Prova così... ho inserito il valore max e modificato number in array
    
    int counter, max;
    int number [10];
    max=0;
    for (counter=0;counter<10;counter++)
    { 
    printf ("valore: ");
    scanf ("%d",&number[counter]);
        if (number[counter]>=max){
        max=number[counter]
        }
    }
    
    printf ("il numero maggiore è %d",max);
    
    
  • Re: Domanda semplice

    Anzi, farei una modifica, perché nell'opzione che si inseriscano solo numeri negativi da tastiera alla fine il programma ti direbbe che il numero maggiore è 0, che in realtà non hai mai inserito.
    quindi farei:
    int counter, max;
    int number [10];
    printf ("valore: ");
    scanf ("%d",&number[0]);
    max=number[0];
    for (counter=1;counter<10;counter++)
    { 
    printf ("valore: ");
    scanf ("%d",&number[counter]);
        if (number[counter]>=max){
        max=number[counter];
        }
    }
    printf ("il numero maggiore è %d",max);
    
    così va bene per tutte le eventualità...
  • Re: Domanda semplice

    Grazie mille.
    Avrei un altro quesito da proporvi. Ho realizzato un programma in cui devo inserire da tastiera dei numeri fino a quando non inserisco il valore 0. Poi devo calcolare la media dei numeri. Inoltre devo inserire solo quei valori compresi tra un MAX e MIN a piacere.
    Io l'ho fatto così ma non mi parte:
    #include <stdio.h>
    #include <stdlib.h>
    int main ()
    {
        int a,i,sum;
        float media;
        sum=0;
        i=0;
    
        printf ("valore:");
        scanf ("%d" ,&a);
        if (a<3 && a>5){
            printf ("valore: ");
            scanf ("%d",&a);
        }
    else {
            i++;
            sum=sum+a;
    }
    
        while (a!=0)
        {
            printf ("valore:");
            scanf ("%d" , &a);
            if ((a<3) && (a>5))
            {
                printf ("Sbagliato. Valore:");
                scanf ("%d", &a);
            }
            else {
                i++;
                sum=sum+a;
            }
    
        }
    
        media =(float) sum/(i-1);
    
        printf ("media: %.2f" ,media);
    
        return 0;
    }
    
  • Re: Domanda semplice

    Prova così
    stdlib.h non mi pare serva al questo scopo, puoi ometterla...
    l'errore stava nel fatto che tu non inserivi all'interno del while !=0 il controllo if
    #include <stdio.h>
    
    int main(int argc, const char * argv[])
    {
        int i, a, sum;
        float media;
        
        i=0;
        sum=0;
        
        printf("inserisci un valore tra 3 e 10: ");
               scanf("%d",&a);
        
               while (a!=0){
                   
                   if (a>=3 && a<=10){
                       sum = sum + a;
                       i++;
                       printf("inserisci valore: ");
                       scanf("%d",&a); 
                   }
                   else {
                       printf("Valore Errato. inserisci valore: ");
                       scanf("%d",&a);
                   }
               }
        media = (float) sum/i;
        printf("la media è %.2f", media);
        return 0;
    }
  • Re: Domanda semplice

    Un mio consiglio per ottimizzare il ciclo è usare una do...while usando una sola scanf
  • Re: Domanda semplice

    Un'altro consiglio è di prestare attenzione ai NaN
  • Re: Domanda semplice

    Quoto ixamit
    per i NaN (Not a Number) che in questo caso credo ixamit si riferisca al caso in cui il primo numero che inseriamo è 0, quindi usciremmo subito dal ciclo while e andremmo a calcolare la media che in questo caso sarebbe 0 diviso 0, che produrrebbe un NaN.
    potremmo mettere un controllo if prima del calcolo della media, se i==0 allora return 0 ...
  • Re: Domanda semplice

    Giusto per divagare Una curiosità come mai usi i float? Non li trovi scomodi? Dato che le espressioni vengono calcolate come double ti tocca continuamente fare dei cast a float, usando i double non hai questo problema e il codice diventa più leggero. Poi i microprocessori dei pc eseguono le operazioni come double, per cui non hai neanche vantaggi come performance. L' unico vantaggio sono le dimensioni ridotte ma non mi sembra ne valga la pena.
  • Re: Domanda semplice

    toti81 ha scritto:


    quoto ixamit
    per i NaN (Not a Number) che in questo caso credo ixamit si riferisca al caso in cui il primo numero che inseriamo è 0, quindi usciremmo subito dal ciclo while e andremmo a calcolare la media che in questo caso sarebbe 0 diviso 0, che produrrebbe un NaN.
    potremmo mettere un controllo if prima del calcolo della media, se i==0 allora return 0 ...
    Ti ringrazio..in effetti ora con la condizione if (i==0) va molto meglio . Però non ho capito perchè nella parte di codice
    printf ("inserisci un valore tra 3 e 10")
    scanf ("%d",&a);
    non hai messo subito dopo
    sum = sum +a;
    i++;
    while ...
  • Re: Domanda semplice

    Se metti sum = sum+a; prima del ciclo vorrebbe dire ometterlo poi nel ciclo.
    e se lo tieni anche nel ciclo vuol dire che, inserendo per esempio 5 come valore a, entri nel ciclo con sum = 5; il ciclo controlla la condizione che essendo verificata ricalcola sum che a questo punto varrà 10.
    se invece ometti sum = sum + a; dentro il ciclo la somma non funziona per tutti gli input successivi.
    spero di esser stato chiaro...
  • Re: Domanda semplice

    Si è chiaro adesso grazie
Devi accedere o registrarti per scrivere nel forum
11 risposte