main

by marietta on February 23rd, 2012
No notes
Syntax: C++
Show lines - Hide lines - Show in textbox - Download
  1. //Schritt 1: Person einlesen und Zeile ausgeben
  2. #include <iostream>
  3. using namespace std;
  4. #include <string.h>
  5. #include <string>
  6.  
  7. #include <stdlib.h>
  8. #include <fstream>
  9.  
  10. struct person
  11. {
  12. char name[60];
  13. char id[20];
  14. char url[60]; //raus?
  15. //int ordnungsnummer; //dient als zaehlvariable des array, raus aus struct
  16. };
  17. enum zustand {imNamen, inId, ignoriereUrl, vorOrdnungsnummer, inOrdnungsnummer}; //inUrl=Ignorieren
  18.  
  19. struct person personen [800];
  20. int ordnungsnummer = 0; //Array Zaehlvariable
  21.  
  22. void druckePersonen();
  23. void suchePersonen();
  24.  
  25. int main()
  26. {
  27. //struct person personen;
  28. char puffer[100],zeichen;
  29. int zaehler;
  30. enum zustand zustand;
  31.  
  32. ifstream datei;
  33.  
  34. datei.open("personen.txt"); //ab hier auslagern
  35.  
  36. suchePersonen();
  37.  
  38. zustand=vorOrdnungsnummer;//Startzustand
  39. zaehler=0;
  40. for (;;)
  41. {
  42. datei.get(zeichen);
  43. if (datei.eof())break;
  44. switch(zeichen)
  45. {
  46.  
  47. case '"':
  48. break;
  49.  
  50. case ' ':
  51.  
  52. if (zustand == vorOrdnungsnummer)//entweder doppeltes Leerzeichen vor Ordnungnummer: dann ignorieren...
  53. {
  54. break;
  55. }
  56.  
  57. if (zustand == inOrdnungsnummer)//oder Leerzeichen nach Ordnungsnummer, dann: war das die Ordnungsnummer
  58. {
  59. puffer[zaehler]='\0';
  60. zaehler=0;
  61. ordnungsnummer=atoi(puffer); //schreibe in Puffer, mache aus den Ziffern eine Zahl (personen.ordnungsnummer)
  62. zustand=imNamen; //erwarte Name der Person
  63. //cout << "Gelesen: " << "Ordnungsnummer: " << personen.ordnungsnummer << endl;
  64. break;
  65. }
  66.  
  67. if (zustand==imNamen)// war das ein Name
  68. {
  69.  
  70. datei.get(zeichen); //pruefe ob Leerzeichen letztes=also Ende des Namen ist: nimm Zeichen nach Leerstelle mit auf...
  71. if (zeichen=='(') //...ist es ein ( ->ist Name zu Ende
  72. {
  73. puffer[zaehler]='\0';
  74. zaehler=0;
  75. strcpy(personen[ordnungsnummer].name,puffer);
  76. zustand=inId;//erwarte wir nun ID
  77. personen[ordnungsnummer].name; //im Array abspeichern
  78. //cout << "Gelesen: " << "Name: " << personen.name << endl;
  79. }
  80. else //...ist es kein ( ->lege das Zeichen zurueck
  81. {
  82. datei.putback(zeichen);
  83. puffer[zaehler]=' ';
  84. zaehler++;
  85. }
  86. break;
  87. }
  88. case '(':
  89. zaehler=0;
  90. break; //ignoriere Klammer-auf
  91. case ')': //das war ID
  92. puffer[zaehler]='\0';
  93. zaehler=0;
  94. strcpy(personen[ordnungsnummer].id,puffer);
  95. zustand=ignoriereUrl;
  96. personen[ordnungsnummer].id;
  97. //cout << "Gelesen: " << "ID: " << personen.id << endl;
  98. break;
  99.  
  100. case '\n':
  101. zaehler=0;
  102. zustand=vorOrdnungsnummer; //soll URL ignorieren
  103. break;
  104.  
  105. default:
  106. if (zustand==vorOrdnungsnummer) { zustand=inOrdnungsnummer; }
  107. puffer[zaehler]=zeichen;
  108. zaehler++;
  109. break;
  110. }
  111. }
  112. datei.close();
  113. for (int i=0; i<800; i++)
  114. {
  115. druckePersonen[i];
  116. }
  117. }
  118.  
  119. void druckePersonen(int i)
  120. {
  121. cout << i << " Name: " << personen[i].name << " ID: " << personen[i].id << endl;
  122.  
  123. }
  124.  
  125. void suchePersonen(){
  126. int ausgabePerson;
  127.  
  128. cout << "Welche Person möchten sie ausgeben?";
  129. cin >> ausgabePerson;
  130.  
  131. druckePersonen(ausgabePerson);
  132. }
  133.  
  134.  

Leave a Reply

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

Subscribe to this comment feed via RSS