Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <malloc.h>
- #include <string.h>
- struct listino{
- int tipo;
- char modello[31];
- int cilindrata;
- long int ricam[11];
- struct listino *next;
- };
- struct ricambi{
- long int codice[11];
- float prezzo;
- int giorni;
- int orelav;
- char descrizione[101];
- struct ricambi *prox;
- };
- int menu(struct listino *, struct ricambi *);
- struct listino *database(struct listino *, struct ricambi **);
- int ripara(struct listino *, struct ricambi *);
- int main()
- {
- struct listino *p=NULL;
- struct ricambi *pr=NULL;
- int err;
- while(1){
- switch(menu(p, pr)){
- case 0: return 0;
- case 1:{ p=database(p, &pr); break;}
- case 2:{ if(p!=NULL && pr!=NULL) err=ripara(p, pr);
- else printf("\n!!!Database mancante"); getchar(); break;}}
- if(err==0) printf("\ncalcolo fallito"); getchar();}
- }
- int menu(struct listino *p, struct ricambi *pr)
- {
- int men=-1;
- system("cls"); printf("\n");
- while(men<0 || men>2){
- if(p==NULL && pr==NULL) printf("\n1. carica database\n");
- else printf("\n1. database caricato\n");
- printf("\n2. cerca modello\n\n0. esci\t");
- scanf("%d", &men); if(men<0 || men>2){ system("cls"); getchar();
- printf("!!!Inserire opzione corretta!\n");}}
- return men;
- }
- struct listino *database(struct listino *p, struct ricambi **pr)
- {
- FILE *listi;
- FILE *ricam;
- struct listino *pc=p;
- struct ricambi *pt=*pr;
- int n=1, m=1, i=0;
- listi=fopen("C:\\Users\\user\\Desktop\\Milicia444159\\listino.txt", "r");
- if(listi==NULL){ printf("\n!!!Errore apertura file listino.txt\n"); getchar();}
- else{ while(n>0){
- if(p==NULL){ p=(struct listino *)malloc(sizeof(struct listino)); p->next=NULL; pc=p;}
- else{ p->next= (struct listino *)malloc(sizeof(struct listino)); p=p->next; p->next=NULL;}
- n=fscanf(listi, "%d %s %d ", &p->tipo, p->modello, &p->cilindrata); printf("%d %s %d\n",p->tipo, p->modello, p->cilindrata);
- if(n==0) printf("\n!Fine lettura file listino\n");
- else{ while(m>0 && ferror(listi)){ m=fscanf(listi, "%d", &p->ricam[i]);if(m>0){ printf("\n%10d %d", p->ricam[i], i);i++;}}
- }}
- fclose(listi);}
- n=1;
- ricam=fopen("C:\\Users\\user\\Desktop\\Milicia444159\\ricambi.txt", "r");
- if(ricam==NULL){ printf("\n!!!Errore apertura file ricambi.txt\n"); getchar();}
- else{ while(n>0){
- if(*pr==NULL){ *pr=(struct ricambi *)malloc(sizeof(struct ricambi)); (*pr)->prox=NULL; pt=(*pr);}
- else{ (*pr)->prox= (struct ricambi *)malloc(sizeof(struct ricambi)); (*pr)=(*pr)->prox; (*pr)->prox=NULL;}
- n=fscanf(ricam, "%d %f %d %d %s", &(*pr)->codice, &(*pr)->prezzo, &(*pr)-> giorni, &(*pr)->orelav, (*pr)-> descrizione);
- if(n==0) printf("\n!Fine lettura file ricambi\n");}
- fclose(ricam);}
- if(p!=NULL && *pr!=NULL){ printf("\n!Database caricato correttamente"); getchar();}
- *pr=pt;
- return pc;
- }
- int ripara(struct listino *p, struct ricambi *pr)
- {
- char nome[31];
- long int pezzi[11]; pezzi[11]=0;
- int ore=0, day=0, n=0, i;
- float prez=0, tot=0;
- printf("\nInserire nome veicolo\t");
- scanf("%s", nome);
- nome[30]='\0'; /*evita errori in caso di overflow*/
- for(i=0; i<10; i++){
- printf("\t\t\t\t\t , , , , ,\n");
- printf("Inserire codice ricambio, 0 per uscire\t");
- scanf("%d", &pezzi[i]); if(pezzi[i]==0) break;
- else n++;}
- while(p!=NULL){printf("%s %s", nome, p->modello);
- if(strcmp(nome, p->modello)==0){ printf("si");
- for(i=0; i<=n; i++){
- if(pezzi[i]==p->ricam[i]==0){
- while(pr!=NULL){
- if(pezzi[i]==pr->codice[i]==0){
- ore+=pr->orelav; day+=pr->giorni;
- prez+=pr->prezzo;}
- pr=pr->prox;}}}
- p=NULL;}
- else p=p->next;}
- tot=ore*20+prez;
- if(tot==0) return 0;
- else{
- printf("\nCosto totale: %.2f", tot);
- printf("\nGiorni di attesa: %d", day+1);
- getchar(); return 1;}
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement