Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_NUM_LINES 400
- #define MAX_STR_LEN 200
- int readCDdata(char fileName[], char cvsMatrix[][MAX_STR_LEN])
- {
- int i, count;
- count = 0;
- FILE *fp;
- fp = fopen(fileName, "r");
- for(i = 0; i < 369; i++)
- {
- fgets(cvsMatrix[i], MAX_STR_LEN, fp);
- count++;
- }
- return (count);
- }
- void stripNewLineAtEOS(char str[])
- {
- int n;
- n = strlen(str);
- if(str[n] == '\n') str[n] = '\0';
- }
- int getCommaIndex(char str[], int index[])
- {
- int i, counter;
- i = 0;
- counter = 0;
- while(i < strlen(str))
- {
- if(str[i] == ',')
- {
- index[counter] = i;
- counter++;
- }
- i++;
- }
- return(counter);
- }
- void getSubString(char str[], int i1, int i2, char substr[])
- {
- int i;
- i = 0;
- while (i1 < (i2 - 1))
- {
- substr[i] = str[i1];
- i1++;
- i++;
- }
- substr[i] = '\0';
- }
- void parseCVS_String(char cvsStr[], char artist[], char title[], int year[], char genre[], float rating[], char fan[], int counter)
- {
- int commaindex[10000], numcommas, i, i1, i2;
- char substring[1000];
- numcommas = getCommaIndex(cvsStr, commaindex);
- for (i = 0; i <= numcommas; i++)
- {
- if(i == 0)i1 = 0;
- else i1 = commaindex[i-1] + 1;
- if (i == numcommas)i2 = strlen(cvsStr);
- else i2 = commaindex[i] + 1;
- getSubString(cvsStr, i1, i2, substring);
- if(i == 0) strcpy(artist, substring);
- if(i == 1) strcpy(title, substring);
- if(i == 2) year[counter] = atoi(substring);
- if(i == 3) strcpy(genre, substring);
- if(i == 4) rating[counter] = atof(substring);
- if(i == 5) strcpy(fan, substring);
- }
- }
- void parseCVS_Matrix(int n, char cvsMatrix[][MAX_STR_LEN], char artist[][MAX_STR_LEN], char title[][MAX_STR_LEN], int year[], char genre[][MAX_STR_LEN], float rating[], char fan[][MAX_STR_LEN])
- {
- int i, j, counter;
- counter = 0;
- for (i = 0; i < n; i++)
- {
- parseCVS_String(cvsMatrix[i], artist[i], title[i], year, genre[i], rating, fan[i], counter);
- counter++;
- }
- }
- void printCD(int index, char cdDB_artist[][MAX_STR_LEN], char cdDB_title[][MAX_STR_LEN], int cdDB_year[], char cdDB_genre[][MAX_STR_LEN], float cdDB_rating[], char cdDB_fan[][MAX_STR_LEN])
- {
- printf("\n%s,%s,%d,%s,%f,%s", cdDB_artist[index], cdDB_title[index], cdDB_year[index], cdDB_genre[index], cdDB_rating[index], cdDB_fan[index]);
- }
- void printCdList(int n, int index[], char cdDB_artist[][MAX_STR_LEN], char cdDB_title[][MAX_STR_LEN], int cdDB_year[], char cdDB_genre[][MAX_STR_LEN], float cdDB_rating[], char cdDB_fan[][MAX_STR_LEN])
- {
- int i, counter;
- for (i = 0; i < n; i++)
- {
- counter = index[i];
- printf("\n%s,%s,%d,%s,%f,%s", cdDB_artist[counter], cdDB_title[counter], cdDB_year[counter], cdDB_genre[counter], cdDB_rating[counter], cdDB_fan[counter]);
- }
- }
- int queryByGenre(int n, char genre_of_interest[], int index[], char cdDB_genre[][MAX_STR_LEN])
- {
- int i, indexcounter;
- indexcounter = 0;
- for(i = 0; i < n; i++)
- {
- if(strcmp(genre_of_interest, cdDB_genre[i]))
- {
- index[indexcounter] = i;
- indexcounter++;
- }
- }
- return (indexcounter);
- }
- int queryByArtist(int n, char artist_of_interest[], int index[], char cdDB_artist[][MAX_STR_LEN])
- {
- int i, indexcounter;
- indexcounter = 0;
- for(i = 0; i < n; i++)
- {
- if(strcmp(artist_of_interest, cdDB_artist[i]) == 0)
- {
- index[indexcounter] = i;
- indexcounter++;
- }
- }
- return (indexcounter);
- }
- int queryByTitle(int n, char title_of_interest[], int index[], char cdDB_title[][MAX_STR_LEN])
- {
- int i, indexcounter;
- indexcounter = 0;
- for (i = 0; i < n; i++)
- {
- if(strcmp(title_of_interest,cdDB_title[i]) == 0)
- {
- index[indexcounter] = i;
- indexcounter++;
- }
- }
- return (indexcounter);
- }
- int queryByYear(int n, int minYear, int maxYear, int index[], int cdDB_year[])
- {
- int i, indexcounter;
- indexcounter = 0;
- for (i = 0; i < n; i++)
- {
- if(cdDB_year[i] >= minYear && cdDB_year[i] <= maxYear)
- {
- index[indexcounter] = i;
- indexcounter++;
- }
- }
- return (indexcounter);
- }
- int queryByRating(int n, float minRating, float maxRating, int index[], float cdDB_rating[])
- {
- int i, indexcounter;
- indexcounter = 0;
- for (i = 0; i < n; i++)
- {
- if(cdDB_rating[i] >= minRating && cdDB_rating[i] <= maxRating)
- {
- index[indexcounter] = i;
- indexcounter++;
- }
- }
- return (indexcounter);
- }
- int queryByFan(int n, char fan_of_interest[], int index[], char cdDB_fan[][MAX_STR_LEN])
- {
- int i, indexcounter;
- indexcounter = 0;
- for (i = 0; i < n; i++)
- {
- if(strcmp(fan_of_interest, cdDB_fan[i]) == 0)
- {
- index[indexcounter] = i;
- indexcounter++;
- }
- }
- return (indexcounter);
- }
- int main()
- {
- char searchnum[2];
- int searchindexs[500], count, minYear, maxYear;
- float minRating, maxRating;
- char searchstr[50];
- char artist[MAX_NUM_LINES][MAX_STR_LEN];
- char title[MAX_NUM_LINES][MAX_STR_LEN];
- int year[MAX_NUM_LINES];
- char genre[MAX_NUM_LINES][MAX_STR_LEN];
- float rating[MAX_NUM_LINES];
- char fan[MAX_NUM_LINES][MAX_STR_LEN];
- int index[500], counter;
- char fileName[] = "Parsing.txt";
- char csvMatrix [MAX_NUM_LINES][MAX_STR_LEN];
- int numberoflines, i;
- numberoflines = readCDdata(fileName, csvMatrix);
- for(i = 0; i < numberoflines; i++)
- {
- stripNewLineAtEOS(csvMatrix[i]);
- }
- parseCVS_Matrix(numberoflines, csvMatrix, artist, title, year, genre, rating, fan);
- printf("\n1. Artist.");
- printf("\n2. Title.");
- printf("\n3. Year.");
- printf("\n4. Genre.");
- printf("\n5. Rating.");
- printf("\n6. Fan.");
- printf("\nEnter a number corresponding to the search you wish to perform: ");
- fgets(searchnum, 2, stdin);
- if (searchnum[0] == '1')
- {
- printf("\nEnter the name of the Artist you wish to search: ");
- scanf("%s", &searchstr);
- count = queryByArtist(numberoflines, searchstr, searchindexs, artist);
- printf("\n%-3d Results.", count);
- for (i = 0; i < count; i++)
- {
- printCD(searchindexs[i], artist, title, year, genre, rating, fan);
- }
- }
- if (searchnum[0] == '2')
- {
- printf("\nEnter the title you wish to search: ");
- scanf("%s", &searchstr);
- count = queryByTitle(numberoflines, searchstr, searchindexs, title);
- printf("\n%-3d Results.", count);
- for (i = 0; i < count; i++)
- {
- printCD(searchindexs[i], artist, title, year, genre, rating, fan);
- }
- }
- if (searchnum[0] == '3')
- {
- printf("\nEnter the earliest year you wish to search for: ");
- scanf("%d", &minYear);
- printf("\nEnter the later year you wish to search for: ");
- scanf("%d", &maxYear);
- count = queryByYear(numberoflines, minYear, maxYear, searchindexs, year);
- printf("\n%-3d Results.", count);
- for (i = 0; i < count; i++)
- {
- printCD(searchindexs[i], artist, title, year, genre, rating, fan);
- }
- }
- if (searchnum[0] == '4')
- {
- printf("\nEnter the genre you wish to search: ");
- scanf("%s", &searchstr);
- count = queryByGenre(numberoflines, searchstr, searchindexs, genre);
- printf("\n%-3d Results.", count);
- for (i = 0; i < count; i++)
- {
- printCD(searchindexs[i], artist, title, year, genre, rating, fan);
- }
- }
- if (searchnum[0] == '5')
- {
- printf("\nEnter the lowest rating you wish to search for: ");
- scanf("%f", &minRating);
- printf("\nEnter the highest rating you wish to search for: ");
- scanf("%f", &maxRating);
- count = queryByRating(numberoflines, minRating, maxRating, searchindexs, rating);
- printf("\n%-3d Results.", count);
- for (i = 0; i < count; i++)
- {
- printCD(searchindexs[i], artist, title, year, genre, rating, fan);
- }
- }
- if (searchnum[0] == '6')
- {
- printf("\nEnter the fan you wish to search: ");
- scanf("%s", searchstr);
- count = queryByFan(numberoflines, searchstr, searchindexs, fan);
- printf("\n%-3d Results.", count);
- for (i = 0; i < count; i++)
- {
- printCD(searchindexs[i], artist, title, year, genre, rating, fan);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement