Advertisement
Mazamin

Esercizio Hotel Stelle Servizi Search Engine

Dec 18th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.99 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #define MAX_N 32
  5. #define MAX_LEN 32
  6. /* leggi le parole, se contengono doppie, rendile singole */
  7. int get_data(FILE *, int (*)[2], char (*)[MAX_N][MAX_LEN]);
  8. int get_match(int, int, char *, int (*)[2], char (*)[MAX_N][MAX_LEN]);
  9.  
  10. main(){
  11.     FILE * fp;
  12.     int stars_servs[MAX_N][2], stars_sel, hotels; /* 0 is for stars, 1 is for services */
  13.     char string_servs[MAX_N][MAX_N][MAX_LEN], string_sel[MAX_LEN], input[MAX_LEN];
  14.     ((fp=fopen("file.txt", "r"))!=NULL)?:(exit(1));
  15.     hotels=get_data(fp, stars_servs, string_servs);
  16.     puts("Insert min stars and the service you need");
  17.     do{
  18.         gets(input);
  19.         if(sscanf(input, "%d %s", &stars_sel, string_sel)<2)
  20.             puts("Error, you must insert all data needed");
  21.     }while(sscanf(input, "%d %s", &stars_sel, string_sel)<2);
  22.     printf("There are %d hotels matching your requirements\n", get_match(hotels, stars_sel, string_sel, stars_servs, string_servs));
  23. }
  24.  
  25. int get_data(FILE * fp, int (*stars_servsPtr)[2], char (*string_servsPtr)[MAX_N][MAX_LEN]){
  26.     int i=0, j;
  27.     char deadbabe[MAX_LEN], string[MAX_LEN];
  28.     while((feof(fp))==0){
  29.         fscanf(fp, "%s %s %d", deadbabe, string, &stars_servsPtr[i][1]);
  30.         stars_servsPtr[i][0]=strlen(string)-3;
  31.         for(j=0;j<stars_servsPtr[i][1];j++)
  32.             fscanf(fp, "%s", string_servsPtr[i][j]);
  33.         printf("%s/%s/%d/%d\n", deadbabe, string, stars_servsPtr[i][0], stars_servsPtr[i][1]);
  34.         i++;
  35.     }
  36.     return i;
  37. }
  38.  
  39. int get_match(int hotels, int stars, char * selection, int (*stars_servsPtr)[2], char (*string_servsPtr)[MAX_N][MAX_LEN]){
  40.     int i, j, matches=0, serv_match=0;
  41.     for(i=0;i<hotels;i++){
  42.         serv_match=0;
  43.         if(stars_servsPtr[i][0]>=stars)
  44.             for(j=0;j<stars_servsPtr[i][1];j++)
  45.                 if((strcmp(selection, string_servsPtr[i][j]))==0)
  46.                     serv_match=1;
  47.         if(serv_match==1)
  48.             matches++;
  49.     }
  50.     return matches;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement