Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    determino numero piu' frequente

    dov'è che sbaglio???
    #include <math.h>
    #include <stdlib.h>
    #include <stdio.h>
    #define dim 1000
    int main()
    {
    int Sam[dim];
    int y=0,m=0,x=0,j,max=0,i=0,k;
    printf("L'UTENTE INSERISCE UNA SERIE LUNGA A PIACERE DI INTERI COMPRESI TRA 0 E 100.\nLA SERIE TERMINA QUANDO L'UTENTE INSERISCE -1.IL PROGRAMMA DEVE STAMPARE IL NUMERO PIU' FREQUENTE E QUELLO MENO FREQUENTE.\n\n");
    do {
    printf("Inserisci numero %d: ",i+1);
    scanf("%d",&y);
    if(y==-1) break;
    Sam[i]=y;
    i++;
    } while(y!=-1);
    for(j=0;j<i;j++){ printf("%d\t",Sam[j]);}
    for(j=0;j<=100;j++) { for (k=0;k<=i;k++) {if (j==Sam[k]){ m++;
    if(m>max) {max=m;x=j;
    }
    }
    }
    m=0;


    }

    printf("Il numero che hai inserito con piu' frequenza nella serie e': %d",x);
    system("PAUSE");
    return 0;
    }
    ---------------------------------------------------------------------
    alcune volte il numero + frequente non è quello giusto...
    Nel caso inserisco numeri tutti diversi e volessi avere un messaggio che mi avvisa?
    Come imposto il codice se volessi determinare anche un numero minimo come frequenza?
    E nel caso in cui numeri diversi appaiano con la stessa frequenza?
    scusate ma nn c sto + dentro avrei bisogno di qlk dritta....
    magari poi è sbagliata proprio l'impostaizonje del flusso e per gestire casi + ampi bisogna impostarlo proprio diversamente..nn so..semidate una manina vene sarei grato..
    p.s. grassie oregon ..scusa se stresso 6 molto gentile !
    ciao
    WithoutSam

  2. #2
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,035

    Re: determino numero piu' frequente

    Originariamente inviato da WithoutSam
    dov'è che sbaglio???
    codice:
    for(j=0;j<=100;j++){ 
       for (k=0;k<=i;k++)
          if (j==Sam[k]) 
             m++;
       if(m>max){
          max=m;
          x=j;
       }
       m=0;
    }
    in quel pezzo qui sopra ho variato la posizione delle parentesi... secondo me non c'è bisogno che controlli m ad ogni passaggio, basta che lo fai alla fine del ciclo for più interno... solo a quel punto ti sarà utile sapere se è maggiore del massimo o meno.
    Occhio agli indici di non sforare oltre e il costrutto while in alto mi sembra ridondante... subito dopo scanf hai già il controllo con il break... puoi benissimo usare un for infinito.

    Comunque, per fare quello che chiedi tu (maggiore e minor numero di occorrenze), perchè non usi un array di 100 elementi sfruttandone gli indici e incrementandolo ogni volta di una unità? Alla fine avrai l'array che ti riassume tutte le occorrenze per ogni numero. Ovvero, indice=numero, contenuto=occorrenze.

    due righe valgon più di mille parole, quindi posto anche le righe:

    codice:
    int risultati[100]={0};
    
    for(k=0;k<=i;k++)
       risultati[Sam[k]]++;
    Così facendo eviti due cicli for da un numero di iterazioni pari a 100*size(sam[]) e alla fine hai pure un array completo da cui estrarre qualsiasi tipo di statistica...

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Moderazione

    Ricordo di indicare il linguaggio anche nel titolo...
    Qui ho corretto io.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.