Advertisement
Dany1858

inf. Compito 19-06-2013

May 21st, 2015
581
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.13 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <malloc.h>
  5. #define M 10
  6.  
  7. struct articolo_d{
  8.         char tipologia[M+1];
  9.         char marca[M+1];
  10.         float prezzo;
  11.         int qnt;
  12.         struct articolo_d *pun;
  13. };
  14. typedef struct articolo_d articolo;
  15.  
  16. int menu();
  17. articolo *articoli(FILE *,FILE *,char *, int *);
  18.  
  19. int main()
  20. {
  21.   int i;
  22.   FILE *listino;
  23.   FILE *venduti;
  24.   char tipo[M+1];
  25.   int len=0;
  26.   articolo *artic;
  27.  
  28. while(menu()){
  29.    system("cls");    
  30.                         /*apertura file*/
  31.   listino=fopen("C:\\Users\\user\\Desktop\\listino.txt", "r");
  32.   venduti=fopen("C:\\Users\\user\\Desktop\\venduti.txt", "r");
  33.   if(listino==NULL){ printf("\n\n!!!Errore apertura FIlE listino.txt!!!\n"); getchar();}
  34.   else if(venduti==NULL){ printf("\n\n!!!Errore apertura FILE venduti.txt!!!\n"); getchar();}
  35.   else{                  /*se tutto ok chiede articolo*/
  36.        printf("\nInserire tipologia articolo\n");
  37.        scanf("%s", tipo); getchar();
  38.        artic=articoli(listino, venduti, tipo, &len);   /*<-- chiamata funzione*/
  39.  
  40.        if(artic==NULL){ printf("\n\n!!!Nessun articolo corrispondente trovato!!!");}
  41.        else{
  42.            printf("Sono stati trovati %d articoli\n", len);
  43.            printf("\n\tTipologia\tMarca\t\tPrezzo cad.\tQuantita' venduta\n");
  44.            for(i=0; artic!=NULL; i++){                /*stampa articoli*/
  45.                printf("\t%-10s\t%-10s\t   %.2f\t\t\t%d\n", artic->tipologia, artic->marca, artic->prezzo, artic->qnt);
  46.                artic=artic->pun;}} getchar();
  47.        fclose(listino);
  48.        fclose(venduti);}    
  49. }          
  50.   return 0;
  51. }
  52.  
  53. int menu()                /*menu' semplice*/
  54. {
  55.     int opz;
  56.     system("cls");
  57.     printf("\n1. Cerca prodotto\n0. Esci \t");
  58.     scanf("%d", &opz); getchar();
  59.     return opz;
  60. }
  61.  
  62.                       /*funzione ricerca e creazione lista*/
  63. articolo *articoli(FILE *listino, FILE *venduti, char *tipo, int *len)
  64. {
  65.       int f=1, g=1;
  66.       articolo x;
  67.       articolo *p=NULL, *artic=NULL;
  68.       while(f>0){
  69.           f=fscanf(listino, "%s %s %f\n", x.tipologia, x.marca, &x.prezzo);
  70.           if(strcmp(x.tipologia, tipo)==0 && f>0){     /*confronto per tipologia*/
  71.               if(artic==NULL){ artic=(articolo *)malloc(sizeof(articolo)); p=artic;}
  72.               else{           /*la prima volta crea lista, poi concatena*/
  73.                    artic->pun=(articolo *)malloc(sizeof(articolo));
  74.                    artic=artic->pun;}
  75.               strcpy(artic->tipologia, x.tipologia);
  76.               strcpy(artic->marca, x.marca);
  77.               artic->prezzo=x.prezzo; artic->qnt=0; artic->pun=NULL;
  78.                                       /*reset puntatore file venduti*/
  79.               fseek(venduti, 0, SEEK_SET); g=1;
  80.               while(g>0){
  81.                     g=fscanf(venduti, "%s %s\n", x.tipologia, x.marca);
  82.                           /*confronto per marca e incremento quantità venduta*/
  83.                     if(strcmp(x.marca, artic->marca)==0 && g>0) (artic->qnt)=artic->qnt+1;}
  84.               (*len)++;      /*<-- incremento articoli trovati in listino*/}
  85.               }
  86.       return p;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement