Main

by Mai on February 23rd, 2012
No notes
Syntax: C++
Show lines - Hide lines - Show in textbox - Download
  1. #include <iostream>
  2. using namespace std;
  3. #include <string.h>
  4. #include <fstream>
  5. #include <stdlib.h>
  6.  
  7.  
  8. struct personen
  9. {
  10. char name[40];
  11. char id[20];
  12. };
  13. struct personen person[800];
  14. void verarbeitePerson(ifstream& dat);
  15. void druckePerson(int ordnungsnr1);
  16. void verarbeiteBeziehung(ifstream& dat);
  17. void druckeBeziehung (int ordnungsnr1, int ordnungsnr2);
  18. int liesPerson();
  19. int liesBeziehung();
  20.  
  21. enum zustand {inOrdnungsnr1, inOrdnungsnr2, imNamen, inID, inURL, anzahl};
  22.  
  23. int main()
  24. {
  25. int ordnungsnr1;
  26.  
  27. cout << "Geben Sie eine Ordnungsnummer ein: ";
  28. cin >> ordnungsnr1;
  29. liesPerson();
  30. liesBeziehung();
  31. }
  32.  
  33. int liesPerson()
  34. {
  35. ifstream dateip;
  36. int ordnungsnr1;
  37.  
  38. dateip.open("personen.txt");
  39.  
  40. if(!dateip)
  41. {
  42. cout << "Die Datei konnte nicht gefunden werden." << endl;
  43. return 1;
  44. }
  45. verarbeitePerson(dateip);
  46. druckePerson(ordnungsnr1);
  47. dateip.close();
  48. }
  49.  
  50. void verarbeitePerson(ifstream& dat)
  51. {
  52. char puffer[100], zeichen;
  53. int zaehler;
  54. enum zustand zustand;
  55.  
  56. zustand=inOrdnungsnr1;
  57. zaehler=0;
  58.  
  59. int ordnungsnr1=0;
  60. for (;;)
  61. {
  62. dat.get(zeichen);
  63. if (dat.eof()) break;
  64. switch(zeichen)
  65. {
  66. case '(':
  67. puffer[zaehler]='\0';
  68. strcpy(person[ordnungsnr1].name,puffer);
  69. zustand=inID;
  70. zaehler=0;
  71. break;
  72.  
  73. case ')':
  74. puffer[zaehler]='\0';
  75. strcpy(person[ordnungsnr1].id,puffer);
  76. zustand=inURL;
  77. zaehler=0;
  78. break;
  79.  
  80. case '"':
  81. cout << endl;
  82. puffer[zaehler]='\0';
  83. if (zustand==inOrdnungsnr1)
  84. {
  85. puffer[zaehler]='\0';
  86. zaehler=0;
  87. ordnungsnr1++;
  88. zustand=imNamen;
  89. }
  90. else if (zustand==inURL)
  91. {
  92. break;
  93. }
  94. break;
  95.  
  96. case ' ':
  97. if (zustand==inOrdnungsnr1) break;
  98. else {
  99. puffer[zaehler]='\0';
  100. zaehler=0;
  101. ordnungsnr1++;
  102. zustand=inOrdnungsnr1;
  103. break;
  104. }
  105.  
  106. case '\n':
  107. cout << endl;
  108. zustand=inOrdnungsnr1;
  109. zaehler=0;
  110. break;
  111.  
  112. default:
  113. puffer[zaehler]=zeichen;
  114. zaehler++;
  115. break;
  116. }
  117. }
  118. }
  119.  
  120. void druckePerson(int ordnungsnr1)
  121. {
  122. cout << ordnungsnr1 << ":" << person[ordnungsnr1].name << "hat die Identifikation: " << person[ordnungsnr1].id << endl;
  123. }
  124.  
  125. int liesBeziehung()
  126. {
  127. ifstream dateip;
  128. int ordnungsnr1, ordnungsnr2;
  129.  
  130. dateip.open("beziehungen.txt");
  131.  
  132. if(!dateip)
  133. {
  134. cout << "Die Datei konnte nicht gefunden werden." << endl;
  135. return 1;
  136. }
  137. verarbeiteBeziehung(dateip);
  138. druckeBeziehung(ordnungsnr1, ordnungsnr2);
  139. dateip.close();
  140. }
  141.  
  142. void verarbeiteBeziehung(ifstream& dat)
  143. {
  144. char puffer[100], zeichen;
  145. int zaehler, ordnungsnr1, ordnungsnr2;
  146. enum zustand zustand;
  147.  
  148. zustand=inOrdnungsnr1;
  149. zaehler=0;
  150.  
  151. for (;;)
  152. {
  153. dat.get(zeichen);
  154. if (dat.eof()) break;
  155. switch(zeichen)
  156. {
  157. case ' ':
  158. if (zustand==inOrdnungsnr1){
  159. zustand=inOrdnungsnr2;
  160. break;
  161. }
  162. else if (zustand==inOrdnungsnr2){
  163. puffer[zaehler]='\0';
  164. ordnungsnr1=atoi(puffer);
  165. zaehler=0;
  166. zustand=anzahl;
  167. break;
  168. }
  169. else if (zustand==anzahl){
  170. puffer[zaehler]='\0';
  171. ordnungsnr2=atoi(puffer);
  172. zaehler=0;
  173. zustand=inOrdnungsnr1;
  174. break;
  175. }
  176.  
  177. case '\n':
  178. cout << endl;
  179. break;
  180.  
  181. default:
  182. puffer[zaehler]=zeichen;
  183. zaehler++;
  184. break;
  185. }
  186. }
  187. }
  188.  
  189. void druckeBeziehung(int ordnungsnr1, int ordnungsnr2)
  190. {
  191. cout << ordnungsnr1 << ":" << person[ordnungsnr1].name << "hat" << anzahl << "Patenkinder von " << person[ordnungsnr2].name << endl;
  192. }
  193.  

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS