Tema esame

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Fili
Linux 0.x
Linux 0.x
Messaggi: 10
Iscritto il: mar 8 set 2009, 11:17

Tema esame

Messaggio da Fili »

Codice: Seleziona tutto

#include<stdio.h>
#include<string.h>

struct Media{
char matricola[7];
int esami;
int media;
};
struct Verbalizzazione{
int voto;
char mat[7];
}

void Scrittura_uscita(char nome_file_i[],char nome_file_ii[], 
                      char nome_file_iii[]);
 
int main()
{
 struct Media fine;
 char nome_file_i[]="1";
 char nome_file_ii[]="2";
 char nome_file_iii[]="3";
 Scrittura_uscita("1","2","3");
 printf("Matricola: %s\n Numero esami: %d\n Media %.2f",fine.matricola,
         fine.esami,fine.media);
return 0;
}

void Scrittura_uscita(char nome_file_i [],char nome_file_ii [], 
                      char nome_file_iii[])
{
 struct Media inizio,fine;
 struct Verbalizzazione a;
 float nuova_media;
 int nuovi_esami;
 char c[7],

 FILE *fpi;
 FILE *fpii;
 FILE *fpiii;
 
 fpi=fopen(nome_file_i,"r");
 while(fscanf(fpi,"%s%d%.2f",inizio.matricola,&inizio.esami,inizio.media)!=EOF)
  ;
 fpii=fopen(nome_file_i,"r");
 while(fscanf(fpii,"%*s%*d%*c%*d%*c%*d%d%s",&a.voto,&a.mat)!=EOF){
  fpiii=fopen(nome_file_i,"w");
  if(strcmp(a.mat,inizio.matricola)==0){
   nuovi_esami=inizio.esami;
   nuovi_esami++;
   nuova_media=(inizio.media+a.voto)/nuovi_esami;
   fine.matricola=a.mat;
   fine.esami=nuovi_esami;
   fine.matricola=nuova_media;
   }
  else{
    inizio.matricola=a.mat;
    inizio.media=a.voto;
    inizio.esami=1;  
  fclose(fpiii);
  }
 }
fclose(fpii);
fclose(fpi);
}
Mi da questi errori:

Codice: Seleziona tutto

15: error: two or more data types in declaration of 'Scrittura_Uscita'
In Function 'Scrittura_uscita'
52: error: incompatible types in assignmet
54: error: incompatible types in assignmet
57: error: incompatible types in assignmet
Non riesco a farlo partire cosa devo fare?

Inoltre anche questo non funziona:

Codice: Seleziona tutto

#include<stdio.h>
#include<math.h>

int velocita_superata(char nome_file[],int velocita_soglia);

int main()
{
 int v;
 char nome_file[]="4";
 printf("inserisci la velocita di soglia: ");
 scanf("%d",&v);
 printf("%f",velocita_superata("4",v);
 return 0;
}
  
int velocita_superata(char nome_file[],int velocita_soglia)
{
 float a[1000],b[1000];
 float c[50][50];
 int x=0,y=0,i,j;
 FILE *fp;
 fp=fopen(nome_file,"r");
 while(fscanf(fp,"%f%f",&a,&b)!=EOF){
   ;}
 for(i=0;i<a[x];i++)
  for(j=0;j<b[y];j++){
    if(velocita_soglia=(sqrt(pow((a[x]-a[x-1]),2)+pow((b[y]-b[y-1]),2))*3.6){
     fclose(fp);
     return c[x][y];}
    else{
     fclose(fp);
     return 0;}
  }
}
E mi dice:

Codice: Seleziona tutto

In function 'main':
In function 'velocita_superata'
27: error: parse error before ' { ' token
30: error: parse error before "else"
At top level
33: error: parse error before ' } ' token
Vi prego aiutatemi
Ultima modifica di Fili il mar 8 set 2009, 12:18, modificato 6 volte in totale.

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Re: Tema esame

Messaggio da absinthe »

non sono sicuro che sia accettata la sintassi char un_vettore []. dipende se è c/c++ e dal compilatore. e comunque nel main chiami Scrittura_uscita senza argomenti! tra l'altro: perchè il compilatore da errore in "Scrittura_Uscita" e non in "Scrittura_uscita"??? dove è l'errore!? quale è la funzione giusta?!

nel secondo caso manca una parentesi al printf segnalato alla riga 12 e mi sa che hai fatto casino con le parentesi graffe nella funzione sottostante il main (ma è un giudizio a colpo d'occhio: prima fissa il baco del printf! e ricontrolla)


M

Fili
Linux 0.x
Linux 0.x
Messaggi: 10
Iscritto il: mar 8 set 2009, 11:17

Re: Tema esame

Messaggio da Fili »

Ho controllato e cambiato quelle cose che mi hai detto però mostra ancora errori..(vedi quelli aggiornati sopra)

Avatar utente
ccts2002
Linux 1.x
Linux 1.x
Messaggi: 155
Iscritto il: gio 9 nov 2006, 23:20
Località: milano - trieste - catania
Contatta:

Re: Tema esame

Messaggio da ccts2002 »

per il primo programma, nella riga 52 e 54 assegni un intero ad una stringa, e non è concesso (usa sprintf) nella riga 57 vuoi copiare, penso, una stringa in un'altra...devi usare la libreria <string.h> e la funzione strcpy().
per il secondo programma mancano 2 parentesi tonde di chiusura, una nel printf e una nell'if che ti da errore.

ciao

Avatar utente
Blallo
Packager
Packager
Messaggi: 3302
Iscritto il: ven 12 ott 2007, 11:37
Nome Cognome: Savino Liguori
Slackware: 14.2 / 12.2
Kernel: 4.4.14-smp
Desktop: DWM
Località: Torino / Torremaggiore (FG)
Contatta:

Re: Tema esame

Messaggio da Blallo »

allora...non capisco questo:

Codice: Seleziona tutto

fscanf(fpii,"%*s%*d%*c%*d%*c%*d%d%s",&a.voto,&a.mat)!=EOF
innanzitutto quando ricavi da fscanf una stringa char non si mette '&', poichè è già un puntatore a quell'indirizzo di memoria.
Non capisco tutti gli argomenti che ci hai messo dentro francamente poi...
qui

Codice: Seleziona tutto

while(fscanf(fpi,"%s%d%.2f",inizio.matricola,&inizio.esami,inizio.media)!=EOF)
a inzio.media dovresti mettercelo invece '&'
qui

Codice: Seleziona tutto

fine.matricola=a.mat;
devi usare la strcpy (le stringhe non si copiano con '=' )
e poi se non ci dici a che serve il programma non capiamo granchè...

Fili
Linux 0.x
Linux 0.x
Messaggi: 10
Iscritto il: mar 8 set 2009, 11:17

Re: Tema esame

Messaggio da Fili »

Grazie 1000 per il secondo esercizio, ora funziona.
Riguardo al primo, mi vengono dati 3 file: nel primo ho delle informazioni, la matricola il numero esami e la media,il seonco ho delle robe che non servono e poi il voto dell'esame e la matricola inerente al voto, in fine il terzo file lo devo aprire in scrittura per in modo che risulti essere alla fine il primo file però aggiornato.
Esempio:
1°file:
A-456373 8 27.87
2° file:
nome esame 12/12/2009 25 A-456373

Fili
Linux 0.x
Linux 0.x
Messaggi: 10
Iscritto il: mar 8 set 2009, 11:17

Re: Tema esame

Messaggio da Fili »

Ora è quasi tutto ok, ho utilizzato lo strcpy e quindi sistemato gli errori 52,54,57 purtroppo alla riga 15 dice:
15: error: two or more data types in declaration of 'Scrittura_uscita'

Avatar utente
Blallo
Packager
Packager
Messaggi: 3302
Iscritto il: ven 12 ott 2007, 11:37
Nome Cognome: Savino Liguori
Slackware: 14.2 / 12.2
Kernel: 4.4.14-smp
Desktop: DWM
Località: Torino / Torremaggiore (FG)
Contatta:

Re: Tema esame

Messaggio da Blallo »

non puoi definire i char di Scrittura_uscita on [], devono poter avere una lunghezza massima, tipo char xxx[30]

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Re: Tema esame

Messaggio da absinthe »

nel secondo esercizio leggo:

Codice: Seleziona tutto

while(fscanf(fp,"%f%f",&a,&b)!=EOF){
   ;}
non ha senso. a parte il fatto che un ciclo while senza iente dentro non ha senso e potresti commentarlo, quello che non torna è che tu inserisca un punto e virgola dentro le graffe!

M

Fili
Linux 0.x
Linux 0.x
Messaggi: 10
Iscritto il: mar 8 set 2009, 11:17

Re: Tema esame

Messaggio da Fili »

Finalmente ora funziona tutto.
Un grazie 1000 a tutti quelli che mi hanno aiutato!!!

Fili
Linux 0.x
Linux 0.x
Messaggi: 10
Iscritto il: mar 8 set 2009, 11:17

Messaggio da Fili »

Funzia
Ultima modifica di Fili il mar 22 set 2009, 17:05, modificato 4 volte in totale.

Avatar utente
kreen
Linux 2.x
Linux 2.x
Messaggi: 228
Iscritto il: mer 1 feb 2006, 18:32
Slackware: 12.0
Kernel: 2.6.21.5-smp
Desktop: KDE
Località: Verona

Re: Tema esame

Messaggio da kreen »

Ciao,
non voglio darti l'impressione di essere duro, ma i l piu' prezioso aiuto che ti posso dare è quello di consigliarti di studiare.
Non so che scuola tu stia facendo, beh, se è una università informatica la cosa e' preoccupante.

Tralasciando cose meno gravi, ma preoccupanti come l'apertura di un file e l'utilizzo del puntatore senza nemmeno controllare se lo hai aperto, se esiste....
vedo, ad esempio, il fatto che allochi una matrice a livello locale

char m[10][5][8];

poi la riempi e ritorni m, significa che di linguaggi di programmazione non hai ancora imparato (e forse capito) nulla e hai un mare di lavoro da fare.
Se vuoi continuare a farti del male, domanda ad altri di aiutarti. Se vuoi imparare, studia.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Tema esame

Messaggio da conraid »

tra l'altro è la seconda volta che apri un topic con lo stesso titolo e senza usare i tag code
Te lo sposto nell'altra discussione
Se hai dubbi su qualcosa puoi trovare qualcuno disposto ad aiutarti, ma le soluzioni già pronte come dice Kreen non sono la "soluzione"

Fili
Linux 0.x
Linux 0.x
Messaggi: 10
Iscritto il: mar 8 set 2009, 11:17

Re: Tema esame

Messaggio da Fili »

Bè meglio adesso che l'ho modificato?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Tema esame

Messaggio da conraid »

Fili ha scritto:Bè meglio adesso che l'ho modificato?
se parli del codice in quanto tale non so aiutarti
se parli di come hai postato, no, non va meglio e ti chiedo di usare i tag code

Rispondi