Analisi variabili con programma c

di il
10 risposte

Analisi variabili con programma c

Ciao a tutti, sono nuova quindi mi scuso sin sin da ora se mi esprimo male o sbaglio sezione.
Sono passata da poco dalla programmazione con python a c, essendo poco esperta ho cercato di creare un programma ma arrivo sino ad un certo punto e poi mi blocco. Qualcuno di voi potrebbe darmi qualche suggerimento? vi posto il mio esempio so che e' stupido ma sarebbe troppo lungo mettere le mie variabili reali.

ho una competizione sportiva in cui ci sono n.x gare da 3 partecipanti con dei dati del tipo:

tempo_maria 3.0
tempo_luca 8.6
tempo_lory 8.7
il tempo migliore e maria

tempo_marco 3.58
tempo_francesca 8.6
tempo_giovanna 2.1
il tempo migliore e giovanna

continua cosi per n gare: io devo scrivere un programma che mi legga tutti i risultati, mi dica quanti blocchi ci sono ( es qui si sono svolte 2 gare e hanno vinto maria e giovanna) e mi dica per ogni blocco chi ha vinto. Devo provare a postare i miei programmi di prova?
io ho fatto una stringa del tipo
for (i=0 ; i<=n ; ++i) {

do++K ; wile (getchar() ! ='=') ;
scanf ("%f , & d (i) (0)) ;

do++K ; wile (getchar() ! ='=') ;
scanf ("%f , & d (i) (1)) ;

do++K ; wile (getchar() ! ='=') ;
scanf ("%f , & d (i) (2) ;

adesso dovrei scrivere il risultamo (tempo migliore) ma non riesco, credevo di farlo conn printf ma non riesco.
ringrazio tutti per l'aiuto buon pomeriggio

10 Risposte

  • Re: Analisi variabili con programma c

    Ciao, non ho capito come gestisci l'input, dove salvi i dati. Comunque io ti faccio vedere un codice che ho fatto adesso:
    **********************************************
    #include <stdio.h>
    #include <string.h>
    #include <windows.h>
    /* questa è una strttura dove saranno salvati i dati del candidato dall'input dell'utente */
    struct Candidato
    {
    int tempo; //conterrà il tempo
    char nome[120]; //conterrà il nome del candidato
    };

    int GetVincitore(struct Candidato*, int nblocco);

    int main()
    {
    struct Candidato cnd[9]; //creo un vettori di Candidato ci saranno 9 candidati per 3 gare quindi.
    char ris[2]={'Y'}; //serve per sapere se aggiungere candidati per una gara
    char buffer[100]; //conterrà le stringhe per l'output
    int r=0;
    int i=0;//conta il numero di candidati ed è l'indice del vettore cnd
    int y=0; //conta i candidati per gara
    int cmpt=0;//conterrà il numero di manche

    /* l'output del programma */
    while ((strcmp(ris,"Y")==0) || (strcmp(ris,"y")==0))
    {
    while (y<3) //dopo 3 candidati fine della manche
    {
    printf("%s\n","Inserisci il nome del candidato:");
    scanf("%s",cnd.nome); //salva il nome del candidato nel vettore iesimo della struttura cnd
    printf("%s\n","Inserisci il tempo:");
    scanf("%d",&cnd.tempo); //salva il tempo nel vettore iesimo della struttura cnd
    i++;
    y++;
    }
    y=0;
    printf("%s","Inserire un nuovo candidato?[Y/N]");//se inserire nuova manche
    scanf("%s",ris);
    }
    cmpt = i/3; //numero di competizioni avrei potuto anche inserire una variabile che si incrementasse per ogni volta che inserivamo una nuova manche(competizione)
    sprintf(buffer,"%s%d\n","Le competizioni sono ",cmpt);
    printf("%s\n",buffer);
    for (int cnt=1;cnt<=cmpt;cnt++)//adesso faccio un ciclo e ottengo il vincitore di ogni manche(competizione)
    {
    r = GetVincitore(cnd,cnt);
    sprintf(buffer,"%s%d%s%s\n","Il vincitore del gruppo ",cnt, " e' ",cnd[r-1].nome); //lo stampo su schermo
    printf("%s",buffer);
    }
    system("pause");
    return 1;
    }
    /* questa funzione estrae il vincitore dalla manche */
    int GetVincitore(struct Candidato* cnd,int nblocco)
    {
    //nblocco è il numero della manche(competizione)
    //cnd è il puntatore che punta al primo elemento dell'array creato prima che contiene tutti i dati dei concorrenti
    int i;
    struct Candidato* p;
    /* confronto il primo elemento con il secondo se questo(il primo) è maggiore del secondo verifica se è maggiore anche dell'ultimo e ritorna questo altrimenti verifica il secndo con l'ultimo se il secondo è + piccolo ritorna il secondo altrimenti ritorna il terzo.
    Avendo la struttura cosi:
    0: gara1 dove 0 è l'indice del vettore della struttura ecc...
    1: gara2
    2: gara3
    ----- manche 2
    3: gara1
    4: gara2
    5: gara3
    ---ecc..
    per sapere dal blocco quali elementi confrontare faccio (nblocco-1)*3. Se ad esempio voglio il vincitore del blocco 1 quindi nblocco=1 viene nblocco-1=0*3=0 quindi indice 0 inizio dall'elemento dell'array con indice 0(l'inizio) se voglio il blocco 2 invece (nblocco=2) nblocco-1=1*3=3 quindi elemento terzo dell'array(inizia il confronto dall'elemento 3. Se voglio il vincitore del blocco 3 nblocco=3 viene nblocco-1=2*3=6 quindi parlo dall'elemento con indice 6 ecc...*/
    for(i=(nblocco-1)*3;i<((nblocco-1)*3)+3;cnd++)
    {
    i++;
    p=cnd;/*faccio puntare p al successivo di cnd*/
    p++;
    for(int j=i;i<((nblocco-1)*3)+3;j++,p++)
    {
    if(cnd->tempo >p->tempo)
    break;
    if (j+1==((nblocco-1)*3)+3) return i;
    }

    }
    return i;
    }

    **********************************************
    La funzione + importante è appunto GetVincitore
    Non è difficile se vuoi te lo spiego meglio...
  • Re: Analisi variabili con programma c

    Grazie overflow,
    ti posto i miei prograamma di prova (con delle variabile diverse perche le gare erano solo esempi) il programma e' sviluppato pero' ci deve essere qualche errore perche' non si compila. comunque grazie dell'aiuto.

    # include <stdio.h>
    main()
    {
    int K,i,n;
    float [distance_mono][100];
    float [distance_homo][100];
    float [distance_etero][100];

    do++K; while (getchar()!='\n');
    for(i=0; getchar()!=EOF ; ++i) {

    do++K; while (getchar()!='=');
    scanf("f%",& });

    do++K; while (getchar()!='=');
    scanf("f%",& distance_homo);

    do++K; while (getchar()!='=');
    scanf("f%",& [distance_etero]);

    printf("The proteine is probability\n");
    sistem ("PAUSE");
    return 0;

    }

    }

    -----------------------------------
    # include <stdio.h>
    main ()
    {
    int K,i,n;
    float d[100000][3];

    do++K; while (getchar()!='\n');
    for(i=0; getchar()!=EOF ; ++i) {
    for(i=0; i<=n; ++i)
    do++K; while (getchar()!='=');
    scanf("f%",& d[0]);

    do++K; while (getchar()!='=');
    scanf("f%",& d[1]);

    do++K; while (getchar()!='=');
    scanf("f%",& d[2]);

    printf("The proteine is probability\n");
    sistem ("PAUSE");
    return 0;
    }



    }
  • Re: Analisi variabili con programma c

    Scusa ma dal tuo codice non ho capito bene cosa vuoi fare esattamente...
    comunque ti posso dare una mano a correggere alcuni errori:
    nella prima main che hai postato all'inizio crei dei vettori cosi:
    float [distance_mono][100];
    float [distance_homo][100];
    float [distance_etero][100];
    ma i vettori vanno creati in questo modo:
    tipo nome_vettore[dimensione] quindi:
    float distance_mono[100];
    float distance_homo[100];
    float distance_etero[100];
    quindi quando vuoi chiamare un elemento iesimo del vettore farai nome_vettore=1 per esempio viene:
    distance_mono=1; //dove i è l'indice del vettore e deve essere compreso tra 0 e 99 perchè il vettore è di 100 elementi.
    cosi nella scanf("%f",&distance_mono);
    nel secondo ciclo do.. while() c'è scanf("f%",& }); va corretta in scanf("f%",&i); però non ne capisco l'utilità
    poi per la pausa bisogna scrivere system("PAUSE"); e includere la libreria windows.h e infine se scrivi return 0; implica che la funzione main ritorna un valore quindi dichiara la funzione main cosi: int main().

    comunque se mi spieghi meglio la funzione del programma posso darti una mano. soprattutto per la gestione dell'input e dell'output non mi è molto chiara, l'utilizzo della getchar e della scanf... l'utente cosa dovrebbe scrivere??
  • Re: Analisi variabili con programma c

    Grazie per l'aiuto in effetti sono gli errori a preoccuparmi, non so come correggerli
  • Re: Analisi variabili con programma c

    Dimenticavo, non so se haimp ma lavoro su linux (fedora)
  • Re: Analisi variabili con programma c

    Spiegami cosa deve fare il programma.
  • Re: Analisi variabili con programma c

    Ho una lunga serie di risultati, se vuoi provo a mandartela per mail, non posso postarla qui.
    io devi scrivere un programma di analisi, ma c e' troppo difficile per me.
  • Re: Analisi variabili con programma c

    Posso chiederti tu come hai imparato cosi' bene questo linguaggio di programmazione?
  • Re: Analisi variabili con programma c

    Vabè mandameli a questo indirizzo (non è l'email di registrazione!!!). Comunque l'ho imparato da solo con due manuali uno di C e uno di C++ più approfondito. Ma non credere che lo conosca bene io sono ancora un principiante ( e non sono modesto!)...
  • Re: Analisi variabili con programma c

    Io ho 2 manuali di c ma non ci capisco molto, con python ci ho messo pochissimo, questo e' molto diff per me.
Devi accedere o registrarti per scrivere nel forum
10 risposte