Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C] numero di volte che spunta il numero max

    if(numero>max)
    {
    max = numero;
    printf("Numero massimo %d\n", max);
    }

    questo mi determina il numero massimo.
    Io vorrei stampare anche il numero di volte che compare questo numero max.
    Cioè ho una serie di numeri, di questi numeri determino il max e voglio stampare quante volte spunta il max.

    Grazie.

  2. #2

    Re: [C] numero di volte che spunta il numero max

    Originariamente inviato da Matthew82
    if(numero>max)
    {
    max = numero;
    printf("Numero massimo %d\n", max);
    }

    questo mi determina il numero massimo.
    Io vorrei stampare anche il numero di volte che compare questo numero max.
    Cioè ho una serie di numeri, di questi numeri determino il max e voglio stampare quante volte spunta il max.

    Grazie.
    La soluzione più banale consiste prima nel calcolare il massimo e poi contare la sua frequenza all'interno della struttura.

  3. #3

    Re: Re: [C] numero di volte che spunta il numero max

    Originariamente inviato da VincenzoTheBest
    La soluzione più banale consiste prima nel calcolare il massimo e poi contare la sua frequenza all'interno della struttura.
    Cioè in codice?

  4. #4
    codice:
    int vettore[DIM];
    //inserisci elementi nel vettore
    max=vettore[0];
    int frequenza=1;
    for(int i=1;i<DIM;i++)
    {
    if(vettore[i]>max)
    {
    max=vettore[i];
    frequenza=1;
    }
    else if(vettore[i]==max)
    frequenza++;
    }
    Se trova un nuovo max imposta il nuovo valore come max e la frequenza a 1, se invece trovi un valore uguale a max incrementi la frequena.
    Scusa se è tabulato male

  5. #5
    grazie per la risposta ma dovrei farlo senza usare i vettori!!!!

  6. #6
    Ti basta avere due casi nel ciclo in cui esamini tutti i numeri dati in input e scegli il massimo: se il numero esaminato è maggiore, lo segni come massimo e resetti la variabile "conteggio" a 1, se il numero esaminato è uguale al massimo incrementi di uno il valore di "conteggio".
    codice:
    int max, conteggio=1;
    max= /* ... */;
    for( ... )
    {
        if(numero>max)
        {
            max=numero;
            conteggio=1;
        }
        else if(numero==max)
            conteggio++;
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente bannato
    Registrato dal
    Dec 2007
    Messaggi
    14
    potrebbe essere fatto in questo modo:


    int cont=0;

    for(...;....;....){

    if(numero>max){
    max = numero;
    cont++;
    printf("Numero massimo %d\n", max, " ",cont);
    }

    }

  8. #8
    Originariamente inviato da manuel_samele
    potrebbe essere fatto in questo modo:


    int cont=0;

    for(...;....;....){

    if(numero>max){
    max = numero;
    cont++;
    printf("Numero massimo %d\n", max, " ",cont);
    }

    }
    No, con il tuo approccio verrebbero contati solo quanti "massimi temporanei" ci sono stati.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Originariamente inviato da MItaly
    Ti basta avere due casi nel ciclo in cui esamini tutti i numeri dati in input e scegli il massimo: se il numero esaminato è maggiore, lo segni come massimo e resetti la variabile "conteggio" a 1, se il numero esaminato è uguale al massimo incrementi di uno il valore di "conteggio".
    codice:
    int max, conteggio=1;
    max= /* ... */;
    for( ... )
    {
        if(numero>max)
        {
            max=numero;
            conteggio=1;
        }
        else if(numero==max)
            conteggio++;
    }
    Volendo essere stilisticamente corretti, nel caso in cui i valori vengono presi dallo standard input è meglio usare un ciclo while.
    Il for, in generale, è adatto per scorrere le collezioni..

  10. #10
    ok sono soluzioni che avevo provato, ma forse il mio problema si genera perchè ho due valori max da considerare. Vi scrivo il listato e vediamo se mi potete aiutare.

    if(sesso=='M')
    {
    scanf("%d",&mesi);

    if(mesi>max_m)
    {
    max_m = mesi;
    }
    }
    else if(sesso=='F')
    {
    scanf("%d",&mesi);
    if(mesi>max_f)
    {
    max_f = mesi;
    }
    }
    }

    if(max_m>max_f)
    {
    max = max_m;
    conteggio=1;
    printf("Numero massimo di mesi%d\n", max);
    }
    else if(max_m==max)
    {
    conteggio++;
    printf("volte che compare %d\n", conteggio);
    }
    else if(max_f>max_m)
    {
    max = max_f;
    conteggio=1;
    printf("Numero massimo di mesi%d\n", max);
    }
    else if(max_f==max)
    {
    conteggio++;
    printf("volte che compare %d\n", conteggio);
    }

    però così non funziona!!!!
    Come faccio a conteggiare il massimo di mesi (cioè ho un valore 28 e questo volore dei mesi spunta 4 volte e in uscita voglio il conteggio dei mesi massimi cioè 4), massimo anche tra max_f e max_m???

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.