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

    Help!!Linguaggio C..il programma parte ma nn da un output correct

    Chi è così gentile da aiutare un povero sventurato???...Ho creato un prog con quincy in linguaggio C.
    Questa è la traccia dell'esercizio:

    Un programma riceve sull’unita di input standard i dati relativi ad alcuni esami universitari. Ogni riga
    contiene un dato che pu`o essere in uno dei due seguenti formati:
    • il carattere C seguito da uno spazio e dalla sigla del corso (composta da 7 caratteri alfanumerici);
    • il carattere S seguito da uno spazio, la matricola di uno studente (6 caratteri numerici), uno
    spazio ed il voto (numero intero compreso tra 18 e 31 se lo studente ha superato l’esame, 0 se
    lo studente `e iscritto ma non ha superato l’esame).
    Ad esempio:
    C 06AZNDI
    S 000999 0
    S 111222 29
    C 01FQTCX
    S 000111 18
    S 111222 30
    I dati di un corso si intendono implicitamente terminati quando inizia un altro corso o quando terminano
    i dati in input.
    Il programma deve leggere i dati forniti in input e per ogni corso presentare in output la sua sigla e le
    relative statistiche: numero di studenti iscritti, numero e percentuale di studenti promossi, voto medio
    dei promossi (con una sola cifra dopo la virgola). Ad esempio se il programma ricevesse i dati sopra
    elencati dovrebbe produrre il seguente output:
    Corso 06AZNDI:
    - 2 studenti iscritti
    - 1 studente promosso (50 %)
    - 29.0 voto medio
    Corso 01FQTCX:
    - 2 studenti iscritti
    - 2 studenti promossi (100 %)
    - 24.0 voto medio
    Se il programma trova una riga con formato errato (come sintassi o come logica, ad esempio un voto
    maggiore di 31) deve scartarla e segnalare errore, indicando anche il numero della riga errata.


    Premetto che sn 2 settimane che stud ogni giorno e ormai anche la notte,tuttavia ancora nn mi sento padrone degli strumenti di programmazione in linguaggio C
    Ad ogni modo io l'ho sviluppato così:

    #include <stdio.h>
    #include <stdlib.h>

    #define MAXBC 127
    #define MAXCHAR 8 /*Valore max. caratteri */

    int main ()
    {
    const char NULLCHAR = '\0';
    const int EOL = '\n';
    char buf [MAXBC+1];
    char corso [MAXCHAR+1];
    char c, s;
    int subj, grade;
    int iscr=1;
    int prom=0;
    int grades=0;

    while (gets (buf)!= NULL)
    {
    if (sscanf (buf, "%c %s", &c, &corso) != 2)
    {
    fprintf (stderr, "Errore nel corso\n");
    exit (1);
    }
    else if (c == tolower ('C'))
    {
    gets(buf);
    while (gets (buf)!= NULL)
    {
    if ((sscanf (buf, "%c%d%d", &s, &subj, &grade ) ==3) && (s == tolower('S')))
    {
    iscr++;
    if ((grade >= 18) && (grade <= 31))
    {
    prom++;
    grades=(grades+grade);
    }
    }
    }
    }
    printf ("Corso %s:\n- %d studenti iscritti\n- %d studenti promossi (%3.0lf%%)\n- %3.1lf voto medio\n",
    toupper(corso), iscr, prom, (float)prom/iscr*100, (float) (grades/prom) );
    }
    return 0;
    }


    Infine preciso che ho inteso:
    grade=voto esame
    grades=voti tot
    subj=materia

    Se mi date una mane ve ne sarei grato perchè nn so proprio da dv iniziare la correzione!

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325

    Moderazione

    Ho corretto il titolo della discussione.
    Ti invito a leggere il regolamento per conoscere le norme di partecipazione a quest'atra e ad usare i tag CODE per postare il codice.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.