main

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

Leave a Reply

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

Subscribe to this comment feed via RSS