Perché questo errore nel programma?

di il
8 risposte

Perché questo errore nel programma?

Buonasera a tutti, questo è l'inizio di un semplicissimo programma che stavo realizzando. Sapete dirmi perché in riga 11 (prototipo della funzione ContaInsufficenti mi da il seguente errore:"error: expected ' ;', ',' or ')' before numeric constant" ?? (
Grazie...

#include <stdio.h>
#include <stdlib.h>
#define N 10

typedef struct studente{
char nome[40];
unsigned int matricola;
unsigned int voto;
} studente;

int ContaInsufficienti(studente vettstud[],int N);


Grazie per l'aiuto..

8 Risposte

  • Re: Perché questo errore nel programma?

    Il tuo prototipo viene letto così dal compilatore
    
    int ContaInsufficienti(studente vettstud[],int 10);
    
    perché c'è il #define N sopra. Cambia il nome della variabile in sostanza.
  • Re: Perché questo errore nel programma?

    Hai ragione... ho cambiato il nome ed è partito, ma chiaramente c'è ancora qualcosa che non va..
    posso lasciarti il pogrammino? È di poche righe.
    Non mi lascia inserire correttamente per ogni elemento del vettore/struttura i nome, matricola e voto. Quando arrivo al secondo studente non mi fa inserire nomi, matricole e voti, ma solo "Uno dei tre". Non so come spiegarmi sono una capra in informatica.
    Se mi puoi aiutare, andrei a dormire in pace: :/ grazie...

    #include <stdio.h>
    #include <stdlib.h>
    #define N 10

    typedef struct studente{
    char nome[40];
    unsigned int matricola;
    unsigned int voto;
    } studente;

    int ContaInsufficienti(studente vettstud[],int dim);
    int main()
    { int i, insufficienti=0;
    studente studenti[N];
    printf("Inserire NOME, MATRICOLA e VOTO per 10 studenti:\n");
    for(i=0;i<10;i++)
    {printf("%d studente:\n", i+1);
    gets(studenti.nome);
    scanf("%u", &studenti.matricola);
    scanf("%u", &studenti.voto);
    }
    for(i=0;i<10;i++)
    if(studenti.voto<18)
    insufficienti=0;
    insufficienti=ContaInsufficienti(studenti, N);
    printf("Il numero di alunni insufficenti e' %d", insufficienti);
    return 0;
    }

    int ContaInsufficienti(studente vettstud[],int dim)
    {
    int i, insufficienti=0;
    for(i=0;i<dim;i++)
    if(vettstud.voto<18)
    insufficienti++;
    return(insufficienti);
    }
  • Re: Perché questo errore nel programma?

    Metti i tag code per far si che il codice si legga meglio.
    Cambia gets in fgets(stdin,40,studenti.nome);
    metti uno spazio prima l'identificatore di formato in scanf
    
    scanf(" %u", &studenti[i].matricola); //nota lo spazio prima del %
    
    Puoi andare a dormire in pace
  • Re: Perché questo errore nel programma?

    E... insomma XD
    ho cambiato in fgets(stdin,40,studenti.nome); ed è successo un macello:
    warning: passing argument 1 ( e anche il 3) of fgets from incompatible pointer type

    e si è aperto un tab assurdo dove stanno scritte delle cose bruttissime con questo avviso:
    note: expected 'struct FILE *' but argument is of type 'char *'

    per di più all'esecuzione non mi fa inserire nessun carattere, rimane impallato ...

    [P.S. che sono i tag code?!]

    cmq grazie, magari nei prossimi giorni chiedo al prof.. non è facile risolverlo così su internet :/
  • Re: Perché questo errore nel programma?

    Scusa ho sbagliato io. scambia il primo parametro con il terzo in fgets. il resto va bene così. sai l'ora è tarda

    i tag code

    [code]metti il tuo codice qui[/code]
  • Re: Perché questo errore nel programma?

    ... continua con lo stesso dannato problema!!!!!
    Guarda... non so che sta succedendo;
    grazie cmq vado a dormire. TI tengo aggiornato.. non so.. bho
    grazie mille veramente però!
  • Re: Perché questo errore nel programma?

    Il problema sta nella scanf(). Infatti , se gets() elimina dallo stdin il carattere '\n' di fine linea, scanf() non lo fa, e quindi al prossimo uso di gets(), il primo carattere che trova è proprio '\n' quindi si ferma subito e restituisce stringa nulla. per cui dopo le due scanf() della matricola e voto, inserisci un bel getc(stdin) che ti elimina il carattere di fine linea '\n' dallo stream . Prova e facci sapere se va o no.
    
    scanf("%u",&studenti[i].matricola);
    scanf("%u",&studenti[i].voto);
    getc(stdin); //dovrebbe risolvere il problema
    
  • Re: Perché questo errore nel programma?

    Gira che è una meraviglia! *-*!!
    Grazie mille, se avrò altri problemi, potrò ancora disturbarvi??

    Grazie ancora!
Devi accedere o registrarti per scrivere nel forum
8 risposte