Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    84

    [C] Programma per ordinare i risultati di una gara sportiva

    Si scriva un programma in linguaggio C che gestisca i dati relativi ai risultati di una gara di atletica
    leggera. Il programma, noto il numero di partecipanti alla gara, deve:
    a) allocare dinamicamente un vettore, nel quale ogni elemento rappresenta il risultato di un
    diverso atleta;
    b) Per ogni atleta e` necessario memorizzare:
    pettorale (intero): rappresenta il numero di pettorale dell'atleta iscritto alla gara;
    cognome (max 21caratteri);
    nome (max 21caratteri);
    specialità (max 7 caratteri): (es.: 1500m, 100m, 400m hs);
    tempo personale (intero): rappresenta il tempo in secondi (se questo valore e` uguale a 1,
    significa che l'atleta si è ritirato durante la gara.
    Una volta acquisiti i dati relativi alla gara, il programma deve:
    1. Visualizzare la graduatoria finale della competizione ( in ordine di tempo totale
    crescente) con, per ogni atleta cognome, nome, numero e tempo.
    2. Visualizzare cognome, nome, numero e tempo del vincitore.
    3. Visualizzare cognome, nome e numero degli atleti ritirati;

    Allora il programma è quasi completo, manca solo la parte che visualizza la graduatoria finale in ordine di tempo. Come si fa? Poi un'altra cosa: perchè quando mi visualizza il vincitore il nome e il cognome si vedono tutti a caratteri strani? Dove ho sbagliato?

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct{
    int pettorale;
    char cognome[21];
    char nome[21];
    char specialita[7];
    int tempo;
    }partecipante;
    
    main()
    {
          
    int n, i, pm, tm;
    char cm[21], nm[21];
    partecipante *p; 
    
    do{     
    printf("Quanti partecipanti? ");
    scanf("%d", &n);
    
    p=(partecipante *) malloc (sizeof(partecipante) * n);
    
    for(i=0;i<n;i++)
    {
                    printf("\nAtleta numero %d", i+1);
                    printf("\n\nNumero di pettorale: ");
                    scanf("%d", &p[i].pettorale);
                    printf("\nCognome: ");
                    scanf("%s", p[i].cognome);
                    printf("\nNome: ");
                    scanf("%s", p[i].nome);
                    printf("\nSpecialita': ");
                    scanf("%s", p[i].specialita);
                    printf("\nTempo: ");
                    scanf("%d", &p[i].tempo);
    }
    
    printf("\n\nRITIRATI:\n\n");
    
    for(i=0;i<n;i++)
    {
                    if(p[i].tempo == -1)
                    printf("%s---%s---%d\n\n", p[i].cognome, p[i].nome, p[i].pettorale);
    }
    
    printf("VINCITORE:\n\n");
    
    tm=p[0].tempo;
    
    for(i=0;i<n;i++)
    {
                    if(p[i].tempo < tm && p[i].tempo != -1)
                    {
                    strcpy(p[i].cognome, cm);
                    strcpy(p[i].nome, nm);
                    pm=p[i].pettorale;
                    tm=p[i].tempo;
                    }
                    
    }
    printf("%s---%s---%d---%d\n\n", cm, nm, pm, tm);
    
    }while(n);
    }

  2. #2

    Re: [C] Programma per ordinare i risultati di una gara sportiva

    Originariamente inviato da luci89
    Poi un'altra cosa: perchè quando mi visualizza il vincitore il nome e il cognome si vedono tutti a caratteri strani? Dove ho sbagliato?
    Leggiti bene la documentazione di strcpy: il secondo argomento viene copiato nel primo, non viceversa.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    84
    Ti ringrazio. Però me lo fa lo stesso... Come mai? Poi come faccio a visualizzare tutta la classifica in ordine?

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.