Programma aggiornamento data

di
Anonimizzato18054
il
5 risposte

Programma aggiornamento data

Ciao a tutti, avrei un problema con il seguente programma scritto in linguaggio C, questo programma ha il compito di scrivere la data successiva a quella che verrà inserita all'interno di essa.

Questo è il programma:

#include <stdio.h>
#include <stdbool.h>


struct data
{
int giorno;
int mese;
int anno;
} oggi, domani;


bool è_bisestile (struct data x)
{
bool bisestile;

if (x.anno % 4 == 0 && x.anno % 100 != 0 || x.anno % 400 == 0)
bisestile = true;
else
bisestile = false;

return bisestile;
}


int determina_giorni_mese (struct data x)
{
int giorni;
const int giorni_mese[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

if (x.mese = 2 && è_bisestile (x) = true)
giorni = 29;
else
giorni = giorni_mese[x.mese];

return giorni;
}


struct data aggiorna_data (struct data x)
{
if (x.giorno != determina_giorni_mese (x))
{
++x.giorno;
x.mese = x.mese;
x.anno = x.anno;
}
else
{
if (x.giorno = 31 && x.mese = 12)
{
x.giorno = 1;
x.mese = 1;
++x.anno;
}
else
{
x.giorno = 1;
++x.mese;
x.anno = x.anno;
}

return x;
}


int main (void)
{
printf ("Inserire data odierna: ");
scanf ("%i/%i/%i", &oggi.giorno, &oggi.mese, &oggi.anno);

domani = aggiorna_data (oggi);

printf ("Domani sarà il %i/%i/%i\n", &domani.giorno, &domani.mese, &domani.anno);

return 0;
}


Questo è l'errore che mi da il compilatore:

programma.c:13:1: error: stray ‘\303’ in program
programma.c:13:1: error: stray ‘\250’ in program
programma.c: In function ‘determina_giorni_mese’:
programma.c:31:2: error: stray ‘\303’ in program
programma.c:31:2: error: stray ‘\250’ in program
programma.c:31:37: error: lvalue required as left operand of assignment
programma.c: In function ‘aggiorna_data’:
programma.c:50:31: error: lvalue required as left operand of assignment
programma.c: In function ‘main’:
programma.c:75:2: warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
programma.c:75:2: warning: format ‘%i’ expects argument of type ‘int’, but argument 3 has type ‘int *’ [-Wformat]
programma.c:75:2: warning: format ‘%i’ expects argument of type ‘int’, but argument 4 has type ‘int *’ [-Wformat]
programma.c: In function ‘aggiorna_data’:
programma.c:78:1: error: expected declaration or statement at end of input


Dove ho sbagliato?
Grazie mille in anticipo.

5 Risposte

  • Re: Programma aggiornamento data

    Ciao,
    Ci sono diversi errori:
    - stray..: qualche carattere non ASCII deve essere finito nel sorgente, puoi provare con editor a visualizzare caratteri nascosti x cercarli. Magari hai fatto copy/paste del codice dal web
    -format...: non usare & negli argomenti di printf, x la scan servono perché passi i parametri x indirizzo, nella print x valore
    - expected..: sembra che manchi qualche graffa di chiusura nella controlla data

    Aldo

    Inviato dal mio GT-I9301I utilizzando Tapatalk
  • Re: Programma aggiornamento data

    Riguardo ai caratteri strani non ascii non è detto che siano dei caratteri nascosti: a volte sono impazzito con dei meno che in realtà erano dei trattini simile ai meno ma con un altro codice Unicode.
    Prova semplicemente a cancellare e riscrivere, non incollare, la riga dove ti dà errore

    Inviato dal mio GT-I9301I utilizzando Tapatalk
  • Re: Programma aggiornamento data

    È_bisestile

    non va bene. Scrivi isbisestile ed evita quella è
  • Re: Programma aggiornamento data

    Grazie a tutti, applicando le vostre correzioni sono riuscito a farlo girare.
  • Re: Programma aggiornamento data

    L'ho fatta più complicata del dovuto.. Scusate sul cell è scomodo contare le righe e ho risposto senza controllare dove fosse l'errore

    Inviato dal mio GT-I9301I utilizzando Tapatalk
Devi accedere o registrarti per scrivere nel forum
5 risposte