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.  
  24. int main()
  25. {
  26. //struct person personen;
  27. char puffer[100],zeichen;
  28. int zaehler;
  29. enum zustand zustand;
  30.  
  31. ifstream datei;
  32.  
  33. datei.open("personen.txt"); //ab hier auslagern
  34.  
  35. zustand=vorOrdnungsnummer;//Startzustand
  36. zaehler=0;
  37. for (;;)
  38. {
  39. datei.get(zeichen);
  40. if (datei.eof())break;
  41. switch(zeichen)
  42. {
  43.  
  44. case '"':
  45. break;
  46.  
  47. case ' ':
  48.  
  49. if (zustand == vorOrdnungsnummer)//entweder doppeltes Leerzeichen vor Ordnungnummer: dann ignorieren...
  50. {
  51. break;
  52. }
  53.  
  54. if (zustand == inOrdnungsnummer)//oder Leerzeichen nach Ordnungsnummer, dann: war das die Ordnungsnummer
  55. {
  56. puffer[zaehler]='\0';
  57. zaehler=0;
  58. ordnungsnummer=atoi(puffer); //schreibe in Puffer, mache aus den Ziffern eine Zahl (personen.ordnungsnummer)
  59. zustand=imNamen; //erwarte Name der Person
  60. //cout << "Gelesen: " << "Ordnungsnummer: " << personen.ordnungsnummer << endl;
  61. break;
  62. }
  63.  
  64. if (zustand==imNamen)// war das ein Name
  65. {
  66.  
  67. datei.get(zeichen); //pruefe ob Leerzeichen letztes=also Ende des Namen ist: nimm Zeichen nach Leerstelle mit auf...
  68. if (zeichen=='(') //...ist es ein ( ->ist Name zu Ende
  69. {
  70. puffer[zaehler]='\0';
  71. zaehler=0;
  72. strcpy(personen[ordnungsnummer].name,puffer);
  73. zustand=inId;//erwarte wir nun ID
  74. personen[ordnungsnummer].name; //im Array abspeichern
  75. //cout << "Gelesen: " << "Name: " << personen.name << endl;
  76. }
  77. else //...ist es kein ( ->lege das Zeichen zurueck
  78. {
  79. datei.putback(zeichen);
  80. puffer[zaehler]=' ';
  81. zaehler++;
  82. }
  83. break;
  84. }
  85. case '(':
  86. zaehler=0;
  87. break; //ignoriere Klammer-auf
  88. case ')': //das war ID
  89. puffer[zaehler]='\0';
  90. zaehler=0;
  91. strcpy(personen[ordnungsnummer].id,puffer);
  92. zustand=ignoriereUrl;
  93. personen[ordnungsnummer].id;
  94. //cout << "Gelesen: " << "ID: " << personen.id << endl;
  95. break;
  96.  
  97. case '\n':
  98. zaehler=0;
  99. zustand=vorOrdnungsnummer; //soll URL ignorieren
  100. break;
  101.  
  102. default:
  103. if (zustand==vorOrdnungsnummer) { zustand=inOrdnungsnummer; }
  104. puffer[zaehler]=zeichen;
  105. zaehler++;
  106. break;
  107. }
  108. }
  109. datei.close();
  110. druckePersonen();
  111. }
  112.  
  113. void druckePersonen()
  114. {
  115. for (int i=0; i<ordnungsnummer; i++)
  116. {
  117. cout << i << " Name: " << personen[i].name << " ID: " << personen[i].id << endl;
  118. }
  119. }
  120.  

Leave a Reply

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

Subscribe to this comment feed via RSS