Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <malloc.h>
- #define M 10
- struct articolo_d{
- char tipologia[M+1];
- char marca[M+1];
- float prezzo;
- int qnt;
- struct articolo_d *pun;
- };
- typedef struct articolo_d articolo;
- int menu();
- articolo *articoli(FILE *,FILE *,char *, int *);
- int main()
- {
- int i;
- FILE *listino;
- FILE *venduti;
- char tipo[M+1];
- int len=0;
- articolo *artic;
- while(menu()){
- system("cls");
- /*apertura file*/
- listino=fopen("C:\\Users\\user\\Desktop\\listino.txt", "r");
- venduti=fopen("C:\\Users\\user\\Desktop\\venduti.txt", "r");
- if(listino==NULL){ printf("\n\n!!!Errore apertura FIlE listino.txt!!!\n"); getchar();}
- else if(venduti==NULL){ printf("\n\n!!!Errore apertura FILE venduti.txt!!!\n"); getchar();}
- else{ /*se tutto ok chiede articolo*/
- printf("\nInserire tipologia articolo\n");
- scanf("%s", tipo); getchar();
- artic=articoli(listino, venduti, tipo, &len); /*<-- chiamata funzione*/
- if(artic==NULL){ printf("\n\n!!!Nessun articolo corrispondente trovato!!!");}
- else{
- printf("Sono stati trovati %d articoli\n", len);
- printf("\n\tTipologia\tMarca\t\tPrezzo cad.\tQuantita' venduta\n");
- for(i=0; artic!=NULL; i++){ /*stampa articoli*/
- printf("\t%-10s\t%-10s\t %.2f\t\t\t%d\n", artic->tipologia, artic->marca, artic->prezzo, artic->qnt);
- artic=artic->pun;}} getchar();
- fclose(listino);
- fclose(venduti);}
- }
- return 0;
- }
- int menu() /*menu' semplice*/
- {
- int opz;
- system("cls");
- printf("\n1. Cerca prodotto\n0. Esci \t");
- scanf("%d", &opz); getchar();
- return opz;
- }
- /*funzione ricerca e creazione lista*/
- articolo *articoli(FILE *listino, FILE *venduti, char *tipo, int *len)
- {
- int f=1, g=1;
- articolo x;
- articolo *p=NULL, *artic=NULL;
- while(f>0){
- f=fscanf(listino, "%s %s %f\n", x.tipologia, x.marca, &x.prezzo);
- if(strcmp(x.tipologia, tipo)==0 && f>0){ /*confronto per tipologia*/
- if(artic==NULL){ artic=(articolo *)malloc(sizeof(articolo)); p=artic;}
- else{ /*la prima volta crea lista, poi concatena*/
- artic->pun=(articolo *)malloc(sizeof(articolo));
- artic=artic->pun;}
- strcpy(artic->tipologia, x.tipologia);
- strcpy(artic->marca, x.marca);
- artic->prezzo=x.prezzo; artic->qnt=0; artic->pun=NULL;
- /*reset puntatore file venduti*/
- fseek(venduti, 0, SEEK_SET); g=1;
- while(g>0){
- g=fscanf(venduti, "%s %s\n", x.tipologia, x.marca);
- /*confronto per marca e incremento quantità venduta*/
- if(strcmp(x.marca, artic->marca)==0 && g>0) (artic->qnt)=artic->qnt+1;}
- (*len)++; /*<-- incremento articoli trovati in listino*/}
- }
- return p;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement