Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    30

    [C]...problemi con le strutture

    ciao a tutti ragazzi....
    allora mi è stato assegnato un esercizio sulle strutture...
    Quattro università si sfidano in un torneo sportivo. Alla sfida partecipano N studenti contrassegnati da un intero tra 0 e N-1. Ogni studente compare una sola volta. L’elenco dei partecipanti viene memorizzato in un vettore di strutture. La struttura deve contenere il tipo di sport praticato, il codice dell’Università di appartenenza (intero tra 0 e 3) e la posizione in classifica nella gara.
    Costruire una funzione che permetta di visualizzare dal main i codici delle Università in cui almeno due studenti sono arrivati primi nelle loro gare.

    ho svolto in questo modo(vedi sotto).. ma c'è un errore, nel senso che mi stampa anche il codice di una facoltà dove è arrivato solo uno studente primo. mi aiutate a capire dove sbaglio??grazie in anticipo



    #include<stdio.h>

    struct gare{

    char sport[20];
    int codice;
    int posizione;
    };
    int stampaprimi (struct gare *, int );
    main()
    {
    struct gare v[100];
    int i, n=5, cod;


    //acquisizione dati
    for(i=0;i<n;i++)
    {
    printf("\nInserisci Sport praticato dallo studente n.%d: ", i+1);
    scanf("%s",v[i].sport);

    printf("\nInserisci codice universita' studente n.%d: (intero compreso tra 0-3)", i+1);
    scanf("%d",&v[i].codice);
    if(v[i].codice > 3){
    printf("Codice facoltà non corretto!\n Reiserisci il codice ricordando che sia compreo tra 0-3!:");
    scanf("%d",&v[i].codice);
    printf("\nInserisci posizione in classifica dello studente n.%d: (intero compreso tra 1 e 10)", i+1);
    scanf("%d",&v[i].posizione);}
    else{
    printf("\nInserisci posizione in classifica dello studente n.%d: (intero compreso tra 1 e 10)", i+1);
    scanf("%d",&v[i].posizione);}
    }

    printf("\n\n");

    //stampa dati struttura
    printf("STUDENTE SPORT CODICE POSIZIONE\n");
    printf("---------------------------------------------\n");

    for(i=0;i<n;i++){
    printf("\n\t%d%10s%8d%15d\n", i+1,v[i].sport, v[i].codice, v[i].posizione);
    }




    stampaprimi(v,n);



    fflush(stdin);
    getchar();
    }

    int stampaprimi (struct gare *v, int n )

    {
    int i, primi=0, pos;

    for(i=0;i<n;i++){
    if(v[i].posizione==1){
    primi++;
    pos=i;
    }
    if(primi=>2)
    printf("\n %d ", v[pos].codice);

    }
    }

  2. #2
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    Costruire una funzione che permetta di visualizzare dal main i codici delle Università in cui almeno due studenti sono arrivati primi nelle loro gare.
    ma forse non ho capito bene io...però non mi pare così semplice da risolvere..intanto così ti stamperà sempre perchè la variabile primi una volta che diventa maggiore di 2 entrerà sempre in quell'if e stamperà cose che non c'èntrano o ripetute penso!! e poi scusa ma dovresti tenere conto delle discipline di ciascuno studente!!
    cioè facendo un esempio con questo input:

    1studente) disciplina:calcio
    Cod. università: 2
    Posizione: 1
    2studente) disciplina: volley
    Cod. università: 1
    Posizione: 2
    3studente) disciplina: nuoto
    Cod. università: 2
    Posizione: 1
    4studente) disciplina: scherma
    Cod. università: 1
    Posizione: 1

    ecco con questo esempio...cosa dovrebbe stampare?? a quanto ne ho capito dovrebbe stampare il codice 2 soltanto! giusto?
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

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.