Guest User

Untitled

a guest
Jul 18th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. // ****************************************************
  2. // ****************************************************
  3. // * Created by: Andreas Adolfsson *
  4. // * Student ID: ada10j *
  5. // * Date: 3/30 *
  6. // ****************************************************
  7. // ****************************************************
  8.  
  9. #define MAXSIZE 80
  10.  
  11. #include <iostream>
  12. #include <string>
  13. #include <iomanip>
  14. #include <fstream>
  15. using namespace std;
  16.  
  17.  
  18. struct Roster {
  19. string LName;
  20. string FName;
  21. char Cheesecake;
  22. };
  23.  
  24. string FileNameRequest();
  25. int countrecords(const string file);
  26. void InputData(const int lines, const string file,struct Roster * MyRoster);
  27. void print(const int lines, struct Roster * MyRoster);
  28. void Alphabetize(const int lines, struct Roster * MyRoster);
  29.  
  30.  
  31. int main(void)
  32. {
  33. struct Roster * MyRoster;
  34.  
  35. int lines=0;
  36. string file;
  37.  
  38. file = FileNameRequest(); // requests filename and assigns it to file
  39. lines = countrecords(file);
  40.  
  41. system("cls");
  42.  
  43. MyRoster = new struct Roster[lines];
  44.  
  45. InputData(lines,file, MyRoster);
  46. Alphabetize(lines, MyRoster);
  47. print(lines, MyRoster);
  48.  
  49. system("pause");
  50. return 0;
  51. }
  52.  
  53. string FileNameRequest()
  54. {
  55. string FileName;
  56.  
  57.  
  58. cout << "\n\n\n\n\n\n\n\n\n\n\t\t\t"
  59. << "Please enter file name\n\t\t\t";
  60. cin >> FileName;
  61.  
  62. ifstream rawData;
  63. rawData.open(FileName); // attempt to open file to read in data
  64.  
  65. while (!rawData.is_open())// check file
  66. {
  67. system("cls");
  68. cout << "\n\n\n\n\n\n\n\n\n\n\t\t\t " // centers text
  69. << "Invalid File name\n"
  70. << "Please enter new file name\n\t\t\t";
  71. cin >> FileName;
  72.  
  73. rawData.open(FileName); // attempt to open file to read in data
  74. }
  75. rawData.close();
  76. return (FileName);
  77. }
  78.  
  79.  
  80. int countrecords(const string file)
  81. {
  82. ifstream rawData;
  83. int recordCounter = 0;
  84. char holder[MAXSIZE];
  85.  
  86. rawData.open(file);
  87. do
  88. {
  89. rawData.getline(holder, MAXSIZE);
  90. recordCounter++;
  91.  
  92. }while (!rawData.eof());
  93. rawData.close();
  94. return (recordCounter-1); // accounts for the last space
  95. }
  96.  
  97. void InputData(const int lines, const string file,struct Roster *MyRoster)
  98. {
  99. ifstream rawData;
  100. rawData.open(file);
  101. for(int i=0; i< lines; i++)
  102. {
  103. rawData >> MyRoster[i].LName;
  104. rawData >> MyRoster[i].FName;
  105. rawData >> MyRoster[i].Cheesecake;
  106. }
  107. rawData.close();
  108. }
  109.  
  110. void print(const int lines, struct Roster *MyRoster)
  111. {
  112. int Piecount = 0, Cakecount = 0;
  113.  
  114. cout << setw(18) << left << "Cheesecake Survey" << endl;
  115. cout << setw(18) << left << "Last Name" ;
  116. cout << setw(18) << left << "First Name" ;
  117. cout << setw(18) << left << "Cake or Pie" << endl;
  118. cout << "-----------------------------------------------" << endl;
  119.  
  120.  
  121. for(int num=0; num < lines; num++)
  122. {
  123.  
  124. cout << setw(18) << left << MyRoster[num].LName;
  125. cout << setw(18) << left << MyRoster[num].FName;
  126.  
  127. if(MyRoster[num].Cheesecake == 'P' || MyRoster[num].Cheesecake == 'p')
  128. {
  129. Piecount++;
  130. cout <<"Pie";
  131. }
  132. else
  133. {
  134. Cakecount++;
  135. cout <<"Cake";
  136. }
  137.  
  138. }
  139. cout << endl << "Records = " << lines << endl << "Pie Believers = " << Piecount << endl << "Cake Believers = " << Cakecount << endl;
  140. }
  141.  
  142. void Alphabetize(const int lines, struct Roster *MyRoster)
  143. {
  144. Roster swapper;
  145. bool change = true;
  146. while(change)
  147. {
  148. change = false;
  149. for(int loop = 0; loop< lines; loop++)
  150. {
  151. if(MyRoster[loop].LName > MyRoster[loop+1].LName)
  152. {
  153. swapper = MyRoster[loop];
  154. MyRoster[loop] = MyRoster[loop+1];
  155. MyRoster[loop] = swapper;
  156.  
  157. change = true;
  158. }
  159. }
  160. }
  161. }
Add Comment
Please, Sign In to add comment