main

by mai on February 26th, 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. int vater[800];
  13. };
  14.  
  15. struct personen person[800];
  16. int verarbeitePerson();
  17. void druckePerson(int ordnungsnr1);
  18. int verarbeiteBeziehung();
  19. int ordnungsnr2;
  20.  
  21. enum zustand {inOrdnungsnr1, imNamen, inID, inURL, anzahl};
  22.  
  23.  
  24.  
  25. int main()
  26. {
  27. int i;
  28. bool aktiv, gefunden;
  29. char ident[100];
  30.  
  31. aktiv = true;
  32.  
  33. while (aktiv != false) {
  34. cout << "Nach welcher Person suchen Sie? (ID) ";
  35. cin >> ident;
  36.  
  37.  
  38. for (int m=0; m<i; m++)
  39. {
  40. gefunden=false;
  41. if (strcmp(person[i].id, ident)==0) gefunden = true;
  42. }
  43.  
  44. if (gefunden==true)
  45. {
  46. verarbeitePerson();
  47. verarbeiteBeziehung();
  48. druckePerson(i);
  49. cout << endl;
  50. }
  51. }
  52. }
  53.  
  54.  
  55.  
  56. int verarbeitePerson()
  57. {
  58. ifstream datei;
  59. char puffer[100], zeichen;
  60. int zaehler;
  61. enum zustand zustand;
  62.  
  63. datei.open("personen.txt");
  64.  
  65. if(!datei)
  66. {
  67. cout << "Die Datei konnte nicht gefunden werden." << endl;
  68. return 1;
  69. }
  70.  
  71. zustand=inOrdnungsnr1;
  72. zaehler=0;
  73.  
  74. int i=0;
  75. for (datei.get(zeichen);!datei.eof();datei.get(zeichen))
  76. {
  77. switch(zeichen)
  78. {
  79. case '(':
  80. puffer[zaehler]='\0';
  81. strcpy(person[i].name,puffer);
  82. zustand=inID;
  83. zaehler=0;
  84. break;
  85.  
  86. case ')':
  87. puffer[zaehler]='\0';
  88. strcpy(person[i].id,puffer);
  89. zustand=inURL;
  90. zaehler=0;
  91. break;
  92.  
  93. case '"':
  94. puffer[zaehler]='\0';
  95. if (zustand==inOrdnungsnr1)
  96. {
  97. puffer[zaehler]='\0';
  98. zaehler=0;
  99. i++;
  100. zustand=imNamen;
  101. }
  102. else if (zustand==inURL)
  103. {
  104. break;
  105. }
  106. break;
  107.  
  108. case ' ':
  109. if (zustand==inOrdnungsnr1) break;
  110. else {
  111. puffer[zaehler]=zeichen;
  112. zaehler++;
  113. break;
  114. }
  115. break;
  116.  
  117. case '\n':
  118. zustand=inOrdnungsnr1;
  119. zaehler=0;
  120. break;
  121.  
  122. default:
  123. puffer[zaehler]=zeichen;
  124. zaehler++;
  125. break;
  126. }
  127. }
  128. }
  129.  
  130. void druckePerson(int i)
  131. {
  132. int j;
  133.  
  134. cout << person[i].name << "hat die Identifikation: " << person[i].id << " und hat folgende Patenschaften uebernommen " << endl;
  135.  
  136. for (j=0; j<800;j++)
  137. {
  138. if (person[i].vater[j]==0) continue;
  139. else cout << person[i].vater[j] << " Patenkind(er)von " << person[j].name << endl;
  140. }
  141. }
  142.  
  143.  
  144. int verarbeiteBeziehung()
  145. {
  146. ifstream datei;
  147. char puffer[100], zeichen;
  148. int zaehler;
  149. int zustand;
  150. /*
  151.   zustand=0 : leer,
  152.   zustand=1 : inOrdnungsnr1,
  153.   zustand=2 : inOrdnungsnr2,
  154.   zustand=3 : inAnzahl,
  155.   */
  156.  
  157. datei.open("beziehungen.txt");
  158.  
  159. if(!datei)
  160. {
  161. cout << "Die Datei konnte nicht gefunden werden." << endl;
  162. return 1;
  163. }
  164.  
  165. zustand=0;
  166. zaehler=0;
  167.  
  168. int ordnungsnr1, anzahl;
  169. for (datei.get(zeichen);!datei.eof();datei.get(zeichen))
  170. {
  171. switch(zeichen)
  172. {
  173. case ' ':
  174. if (zustand==1){
  175. puffer[zaehler]='\0';
  176. ordnungsnr1=atoi(puffer);
  177. zustand=2;
  178. zaehler=0;
  179. break;
  180. }
  181.  
  182. else if (zustand==2){
  183. puffer[zaehler]='\0';
  184. ordnungsnr2=atoi(puffer);
  185. zaehler=0;
  186. zustand=3;
  187. break;
  188. }
  189.  
  190. else if (zustand==0){
  191. break;
  192. }
  193.  
  194. case '\n':
  195. puffer[zaehler]='\0';
  196. anzahl=atoi(puffer);
  197. person[ordnungsnr1].vater[ordnungsnr2]=anzahl;
  198. zustand=0;
  199. zaehler=0;
  200. break;
  201.  
  202. default:
  203. puffer[zaehler]=zeichen;
  204. zaehler++;
  205. if (zustand==0) zustand=1;
  206. break;
  207. }
  208. }
  209. }
  210.  

Leave a Reply

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

Subscribe to this comment feed via RSS