Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #define MAX_N 32
- #define MAX_LEN 32
- /* leggi le parole, se contengono doppie, rendile singole */
- int get_data(FILE *, int (*)[2], char (*)[MAX_N][MAX_LEN]);
- int get_match(int, int, char *, int (*)[2], char (*)[MAX_N][MAX_LEN]);
- main(){
- FILE * fp;
- int stars_servs[MAX_N][2], stars_sel, hotels; /* 0 is for stars, 1 is for services */
- char string_servs[MAX_N][MAX_N][MAX_LEN], string_sel[MAX_LEN], input[MAX_LEN];
- ((fp=fopen("file.txt", "r"))!=NULL)?:(exit(1));
- hotels=get_data(fp, stars_servs, string_servs);
- puts("Insert min stars and the service you need");
- do{
- gets(input);
- if(sscanf(input, "%d %s", &stars_sel, string_sel)<2)
- puts("Error, you must insert all data needed");
- }while(sscanf(input, "%d %s", &stars_sel, string_sel)<2);
- printf("There are %d hotels matching your requirements\n", get_match(hotels, stars_sel, string_sel, stars_servs, string_servs));
- }
- int get_data(FILE * fp, int (*stars_servsPtr)[2], char (*string_servsPtr)[MAX_N][MAX_LEN]){
- int i=0, j;
- char deadbabe[MAX_LEN], string[MAX_LEN];
- while((feof(fp))==0){
- fscanf(fp, "%s %s %d", deadbabe, string, &stars_servsPtr[i][1]);
- stars_servsPtr[i][0]=strlen(string)-3;
- for(j=0;j<stars_servsPtr[i][1];j++)
- fscanf(fp, "%s", string_servsPtr[i][j]);
- printf("%s/%s/%d/%d\n", deadbabe, string, stars_servsPtr[i][0], stars_servsPtr[i][1]);
- i++;
- }
- return i;
- }
- int get_match(int hotels, int stars, char * selection, int (*stars_servsPtr)[2], char (*string_servsPtr)[MAX_N][MAX_LEN]){
- int i, j, matches=0, serv_match=0;
- for(i=0;i<hotels;i++){
- serv_match=0;
- if(stars_servsPtr[i][0]>=stars)
- for(j=0;j<stars_servsPtr[i][1];j++)
- if((strcmp(selection, string_servsPtr[i][j]))==0)
- serv_match=1;
- if(serv_match==1)
- matches++;
- }
- return matches;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement