Ultima modifica da un moderatore:
Salve ragazzi, volevo chiedervi se fosse possibile ricevere un piccolo
aiuto con questa traccia d'esame, sono bloccato sui punti 2 e 3 e non so come uscirne
Apprezzo l'aiuto di chiunque e vi ringrazio in anticipo.
C:
#include "dati.h"
//parte di acquisizione dati
typedef struct
{
int codice;
char cognome[SIZE];
char esenzione[SIZE];
int giorno;
float orario;
}medici;
medici med[SIZE];
int nPrescrizioni;
int FlagAcq;
void IncNPrescrizioni()
{
++nPrescrizioni;
}
void DecNPrescrizioni()
{
--nPrescrizioni;
}
unsigned int getNprescrizioni()
{
return nPrescrizioni;
}
void setFlagPos()
{
FlagAcq = 1;
}
void setFlagNeg()
{
FlagAcq = 0;
}
int getFlagAcq()
{
return FlagAcq;
}
int getCodiceByI(int i)
{
if(i < 0 || i > SIZE)
{
puts("Errore");
i = 0;
}
return med[i].codice;
}
char* getCognomeByI(int i)
{
if(i < 0 || i > SIZE)
{
puts("Errore");
i = 0;
}
return med[i].cognome;
}
char* getEsenzioneByI(int i)
{
if(i < 0 || i > SIZE)
{
puts("Errore");
i = 0;
}
if(strcmp(med[i].esenzione, "si") == 0 || strcmp(med[i].esenzione, "no") == 0)
{
return med[i].esenzione;
}
else
{
puts("Errore");
return;
}
}
int getGiornoByI(int i)
{
if(i < 0 || i > SIZE)
{
puts("Errore");
i = 0;
}
return med[i].giorno;
}
float getOrarioByI(int i)
{
if(i < 0 || i > SIZE)
{
puts("Errore");
i = 0;
}
return med[i].orario;
}
C:
#include "file.h"
//parte sui file
FILE *p;
int apri_file(char* file_name, char* modo)
{
p = fopen(file_name, modo);
if(p == NULL)
{
perror("Impossibile aprire il file\n");
return 0;
}
else
{
return 1;
}
}
void chiudi_file()
{
fclose(p);
}
void leggi_file()
{
char verify[BIG_SIZE];
unsigned int counter;
int j = 0;
if(getNprescrizioni() != 0)
{
counter = getNprescrizioni();
}
else{counter = 0};
while(!feof(p))
{
if(counter < 0 || counter > SIZE)
{
puts("Errore");
return;
}
verify[j] = fgetc(p);
if((verify[j] == '\n' || verify[j] == EOF) && strlen(verify) > 2)
{
verify[j] = '\0';
if(CancSuRighe(verify))
{
tokenator(verify, &counter);
strcpy(verify, "");
counter++;
j = -1;
}
else
{
j = -1;
}
}
else if(verify[0] == '\n')
{
strcpy(verify, "");
j = -1;
}
j++;
}
puts("Caricamento completato...");
}
void tokenator(char *frase, unsigned int *i)
{
controllo_indice_tok(*i);
char* token = NULL;
int controllo = 0;
int codice;
char cognome[SIZE];
char esenzione[SIZE];
int giorno;
float orario;
token = strtok(frase, "#");
codice = atoi(token);
if(controllo_vuota(codice, "Codice"))
{
puts("Errore");
--*i;
system("pause");
return;
}
token = strtok(NULL, "#");
strcpy(cognome, token);
if(controllo_vuota(cognome, "Cognome"))
{
puts("Errore");
--*i;
system("pause");
return;
}
token = strtok(NULL, "#");
strcpy(esenzione, token);
if(controllo_vuota(esenzione, "Esenzione"))
{
puts("Errore");
--*i;
system("pause");
return;
}
token = strtok(NULL, "#");
giorno = atoi(token);
if(controllo_vuota(giorno, "Giorno"))
{
puts("Errore");
--*i;
system("pause");
return;
}
token = strtok(NULL, "#");
orario = atof(token);
if(controllo_vuota(orario,"Orario"))
{
puts("Errore");
--*i;
system("pause");
return;
}
if(!controllo_atoi(codice) || !controllo_cognome(cognome) || !controllo_atoi(giorno) || !controllo_atof(orario))
{
controllo = 1;
}
if(!controllo)
{
setCodiceByI(*i, codice);
setCognomeByI(*i, cognome);
setEsenzioneByI(*i, esenzione);
setGiornoByI(*i, giorno);
setOrarioByI(*i, orario);
IncNPrescrizioni();
}
}
void scrivi_file(unsigned int i)
{
fprintf(p, "%d%#%s#%s#%d#%.2f\n", getCodiceByI(i), getCognomeByI(i), getEsenzioneByI(i), getGiornoByI(i), getOrarioByI(i));
}
C:
#include "funzioni.h"
//funzioni varie
void cleanconsole()
{
system("pause");
system("cls");
}
void menu()
{
printf("Benvenuto nel sistema di gestione prenotazioni\nInserisci 1 per visualizzare\nInserisci 2 per controllare\nInserisci 3 per ordinare\nScelta: ");
int scelta = 0;
controllo_scelta(&scelta);
while(scelta > 0 && scelta < 4)
{
switch(scelta)
{
case 1:
acquisizione()
cleanconsole();
break;
case 2:
controllare();
cleanconsole();
break;
case 3:
ordinare()
cleanconsole();
}
printf("Benvenuto nel sistema di gestione prenotazioni\nInserisci 1 per visualizzare\nInserisci 2 per controllare\nInserisci 3 per ordinare\nScelta: ");
controllo_scelta(&scelta);
}
puts("Arrivederci!");
}
void stampaRecord(int i)
{
printf("%d#%s#%s#%d#%.2f\n",getCodiceByI(i), getCognomeByI(i), getEsenzioneByI(i), getGiornoByI(i), getOrarioByI(i))
}
void visualizza()
{
puts("=====PRESCRIZIONI=====");
for(unsigned int i = 0; i < getNprescrizioni(); i++)
{
stampaRecord(i);
puts("");
}
}
void controllo_acquisizione()
{
if(getFlagAcq() == 0)
{
puts("Bisogna acquisire i dati da file: ");
acquisizione();
printf("%d\n", getFlagAcq());
cleanconsole();
return;
}
}
void inizializza(int i)
{
setCodiceByI(i, 0);
setCognomeByI(i, "");
setEsenzioneByI(i, "");
setGiornoByI(i, 0);
setOrarioByI(i, 0);
}
void inizializzaAll()
{
for(unsigned int i = 0; i < getNprescrizioni(); i++)
{
inizializza(i);
}
}
void acquisisci()
{
puts("Inserisci il nome del file da acquisire:");
char nome_file[SIZE];
scanf("%s", nome_file);
if(apri_file(nome_file, "r") == 0)
{
puts("Impossibile aprire il file\n");
return;
}
else
{
puts("Acquisizione in corso...");
inizializzaAll();
leggi_file();
if(getNprescrizioni() != 0)
{
visualizza();
setFlagPos();
}
else
{
puts("File Vuoto\nAcquisire nuovamente");
acquisizione();
}
}
chiudi_file();
puts("Acquisizione terminata");
}
void controlla()
{
puts("Sto controllando il tuo archivio...");
if(apri_file("Prescrizioni.txt", "w") == 0)
{
puts("Impossibile aprire il file!");
return;
}
else
{
unsigned int counter = 1;
for(unsigned int i = 0; i < getNprescrizioni(); i++)
{
for(unsigned int j = i+1; j < getNprescrizioni(); j++)
{
if(getGiornoByI(i) == getGiornoByI(j) && strcmp(getCognomeByI(i), getCognomeByI(j)) == 0)
{
counter++;
}
}
}
if(counter >= 3)
{
}
}
}
Apprezzo l'aiuto di chiunque e vi ringrazio in anticipo.