HILFE beim Telefonverzeichnis



  • Gut - reicher Mann - grosse Ehrfurcht!
    Hier die kompl.version bei der in der Suchfunktion kein Klammerfehler mehr sitzt.
    Zur Beschreibung:Das Prog. soll Teinehmer einlesen(laeuft), ausgeben(laeuft) und suchen koennen(laeuft nicht)
    Wenn du das Ding laufen lässt und unter 1 Teilnehmer eingegeben hast, wirst du feststellen, dass trotz vorhandenem Teilnehmer die Suchfunkt. sagt: "Teilnehmer nicht vorhanden".WHY???

    #include <stdio.h>
    #include <conio.h>          //laden von Bibliotheken die benötigt werden
    #include <stdlib.h>
    #include <string.h>
    
    struct daten					// Datenstruktur festlegen
    
    {
    	 char name[20];
    	 char vorname[15];      //zu strukturierende Daten...
    	 char email[30];        //...mit fest vorgeschriebener Zeichenanzahl
    	 int nummer;
    	 char stichwort[31];
    }             liste[100];		//legt 100 Datensätze mit Namen "Liste" maximal
    
    int i=0,x;                   //dekl.einer Variablen i mit Wertzuweisung(Definition) 0 und...
    			     					 //..einer Var. x ohne Wert
    
     char szFile[] = "A:\\Liste.txt";
    
    void menue();
    void eingabe();             //anmelden aller Unterfunktionen des Progamms
    void ausgabe();
    void suchen();
    void beenden();
    
    void main()                 //Hauptfunktion
    
    {
    
    	int x;
       FILE *zeiger;
       zeiger=fopen(szFile,"r");		//öffnen der Datensätze zum lesen
       if (zeiger != NULL)
       {
    		if(feof(zeiger)==0)                 //prüfen ob der Dateizeiger am Ende der Datei steht
    
    	 {
    		fscanf(zeiger,"%i",&i);			//liest Anzahl der Datensätze
    	    for(x=0;x<=i && feof(zeiger)==0;x=x+1)   //wenn gilt dass beide Bedingungen zutreffen(wahr sind)
    						     //1.Bed.:Var x=0 xgrößergleich i UND...
    						     //2.Bed.:Zeiger am Ende der Datei
    	    {
            fscanf (zeiger,"%s",&liste[x].name);            //Anweisung was gelesen werden soll
    		  fscanf (zeiger,"%s",&liste[x].vorname);
            fscanf (zeiger,"%i",&liste[x].nummer);
    		  fscanf (zeiger,"%s",&liste[x].email);
    	    }
    
    		}
    
    	 fclose(zeiger);
       }
    
        for(;;)		//FOR-Schleife ohne Abbruchbedingung - Endlosschleife
        menue();
    }
    
    void menue()                    //1.Unterfunktion
    {
    			system("cls");
    	 		gotoxy(1,5);
    			printf ("                  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
    			printf ("                  X                                        X\n");
    			printf ("                  X        Online-Telefonverzeichnis       X\n");
    			printf ("                  X----------------------------------------X\n");
    			printf ("                  X                                        X\n");
    			printf ("                  X         Bitte waehlen Sie:             X\n");
    			printf ("                  X       -----------------------          X\n");
    			printf ("                  X                                        X\n");
    			printf ("                  X        1 Teilnehmer eingeben           X\n");
    			printf ("                  X                                        X\n");
    			printf ("                  X        2 Teilnehmer ausgeben           X\n");
    			printf ("                  X                                        X\n");
    			printf ("                  X        3 Teilnehmer suchen             X\n");
    			printf ("                  X                                        X\n");
    			printf ("                  X        4 Programm beenden              X\n");
    			printf ("                  X                                        X\n");
    			printf ("                  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
    
    	 char a;
    	 a = getch();
    	 switch(a)                              //Anweisung für Tastatureingaben oder Menü-Auswahl
    		{
    
    	    case '1' : eingabe(); break;          // case block:
    	    case '2' : ausgabe(); break;          //Zuweisung bestimmter Tasten zu den jeweiligen Unterprogrammen
    	    case '3' : suchen(); break;           //break Anweisung beendet einen case Block
    	    case '4' : beenden(); break;          //
    	    //default  : menue();                   // wenn alle case Blöcke nicht zutreffen...
    						  //...RÜcksprung ins Hauptmenue
    
    	    }
    
    }
    
    void eingabe()           //2.Unterfunktion
    
    {
    
     do //führe aus
        {
            system("cls");
            //gotoxy(1,3);
    
            printf ("       Bitte geben Sie Ihre Daten ein \n");
            printf (" ----------------------------------------------\n");
            printf (" \n");
            printf ("  Name : ");    // Namen einlesen
    
            fgets(liste[i].name, 20, stdin);    // es werden maximal 20 Zeichen gelesen
    
            printf ("\n");
            printf ("  Vorname : ");
    
            fgets(liste[i].vorname, 15, stdin); // es werden maximal 15 Zeichen gelesen
    
            printf (" \n");
            printf ("  Nummer : ");
    
            scanf("%i", &liste[i].nummer);
    
            while(liste[i].nummer>9999)
            {
                //gotoxy(0,23);
    
                printf ("!!!Bitte nicht mehr als 10 Zeichen eingeben!!!\n");
                printf ("!!!Bitte Eingabe wiederholen \n");
                printf ("\t\t\t \n");
                //gotoxy(26,12);
                scanf("%i", &liste[i].nummer);
            }
    
            printf (" \n");
            printf ("  Email : ");
    
            fflush(stdin);
            fgets(liste[i].email, 30, stdin);    // liest max. 30 Zeichen
    
            printf (" \n");
    
            //gotoxy(26,8);
    
            i++; //Nr. des Datensatzes der eingegeben wird erhöht sich um 1
    
            //gotoxy(0,23);
            printf ("\t\t \n");
            printf (" \n");
    
            //gotoxy(0,23);
            printf ("\n\n\tMoechten Sie die Eingaben aendern? (j/n) \n");
        }
        while(getch()=='j'); //wenn ja - erneute Eingabe
    
        FILE *zeiger;
        zeiger=fopen(szFile,"w"); //öffnen der Datensätze zum schreiben
    
        if (zeiger != NULL)
        {
    
            fprintf(zeiger,"%i",i); //schreibt die Anzahl der Datensätze in die "Liste"
                                      //\n an dieser Stelle bewirkt, dass im ARRAY
                                      //ein Zeilenumbruch stattfindet
            for (x=0; x<i; x=x+1)
            {
    
                fprintf (zeiger,"%s\n", liste[x].name);
                fprintf (zeiger,"%s\n", liste[x].vorname);
                fprintf (zeiger,"%i\n", liste[x].nummer);
                fprintf (zeiger,"%s\n", liste[x].email);
            }
    
            fclose(zeiger);
    
        }
        else
        {
            printf ("Programm konnte Ihre Daten nicht speichern...");
            getch();
        }
        printf ("\n\n\tDaten wurden erfolgreich gespeichert!\n");
        printf ("\n\n\tDruecken Sie eine belibige Taste um ins Hauptmenue zurueckzukehren\n");
        getch();
    }
    
    void ausgabe()					//3.Unterprogramm
    
    {
    	int n;
       system("cls");
       printf ("                        Telefonliste:               \n");
       printf ("      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
       printf ("      Name           Vorname                Nummer             Email                 \n");
       for(n=0;n<i;n=n+1)
       {
       	printf ("      %s             %s                      %i                %s                \n",liste[n].name,liste[n].vorname,liste[n].nummer,liste[n].email);
    
    	    }
    
    	 printf ("\n\n\n");
    	 printf ("Bitte druecken Sie `h` um ins Hauptmenue zurueckzukehren\n");
    	 while(getch()!='h')			//Schleife solange andere Taste als hgedrückt wird
    	 printf ("Bitte druecken Sie `h` um ins Hauptmenue zurueckzukehren\n");
    
    }
    
    void suchen()
    {
    	char stichwort[31];
       system("cls");
       gotoxy(16,12);
       printf ("\n\t\t               Namen suchen\n");
       printf ("\n\t\t     Bitte geben Sie ein Stichwort ein:\n");
    
       gotoxy(35,17);
       scanf("%s",stichwort);
    
       char b=0,n=0;
    
       system("cls");
    
       {
    
          printf ("                        Suchergebnis:              \n");
          printf ("          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
          printf ("           Name           Vorname                    Nummer              Email                     \n");
    
          for(n=0;n<i;n=n+1);
    
          if (strcmp(liste[i].name,stichwort) == 0)    //vergleicht die Eingabe mit den Einträgen aus den Datensätzen
    
          {
             if (b==0);
             printf ("   %s      %s       %i      %s               \n",liste[n].name,liste[n].vorname,liste[n].nummer,liste[n].email);
             b++;
    
          }
    
            else
    
            printf ("\nTeilnehmer nicht vorhanden!\n");
            printf ("\nDuecken Sie eine beliebige Taste um ins Hauptmenue zu gelangen\n");
            getch();
    
            }
            printf ("\nDuecken Sie eine beliebige Taste um ins Hauptmenue zu gelangen\n");
          	getch();
    
           }
    
    void beenden()
    
    {
    	system("cls");
    	gotoxy(16,12);
    	printf ("\t\tSie haben das Programm beendet.\a\n");
    	gotoxy(16,14);
    	printf ("\t\t  (beliebige Taste druecken)\n");
    	getch();
    	exit(0);
    }
    

    Vielen Dank



  • Wie wäre es, wenn du das was c.rackwitz netterweise für dich vorkaut nicht ignorierst?



  • den naechsten code, den ich hier gleich vorkotze, werde ich dermassen schleifen, dass der lehrer einfach erkennen MUSS, dass sowas kein schueler schreiben kann... dann bleibt dir nichts anderes uebrig, als DEIN HIRN ZU BENUTZEN, wie es ja von jedem schueler verlangt wird, der eine seinen leistungen entsprechende note haben will. dein pech, wenn du nichts im leben erreichen willst, aber mach dann bitte niemand anderen als DICH verantwortlich.



  • kommt da noch was?



  • naja, von mir erstmal nicht. mir ists vergangen.
    hab jetzt eine weile mit indent [1] gespielt, weil der code vom OP wirklich nicht mehr per hand zu zaehmen ist.
    habe jetzt mein flagset fuer indent und fuer die zukunft gibts schnellere antwortzeiten 😉

    [1] http://en.wikipedia.org/wiki/Indent_(Unix)



  • Oh je weiser reicher Mann. Wer hinter nem zu großen Monitor sitzt bemerkt wahrscheinlich nicht, dass draussen die Sonne scheint und ist mittlerweile so zienlich verranzt durch seine ganzen Berufsschullehrer Sprüche die er tagläglich an seine Schäfchen abgibt.
    Wohl an junger Mann. Sieh zu dass du als Operator die nächsten zehn Jahre weiterhin so königlich bezahlt wirst für den Scheiß den du jeden Tag ablässt. 😮
    Schööler Pfeiffer



  • Immer wieder nett wie sich die Leute bedanken wenn man ihnen die Arbeit abnimmt 😉



  • > durch seine ganzen Berufsschullehrer Sprüche die er tagläglich an seine Schäfchen abgibt.
    du kannst dich jederzeit von anderen berufsschullehrern scheren lassen, wenn die zaertlicher zu dir sind...

    > Sieh zu dass du als Operator die nächsten zehn Jahre weiterhin so königlich bezahlt wirst für den Scheiß den du jeden Tag ablässt. 😮
    einen scheiss krieg ich bezahlt und dass du dir in deiner "kompetenz" anmaßen willst, die qualitaet meiner posts beurteilen zu koennen, ist ja mal unfassbar. ich mach das alles in meiner freizeit und habe rein garnichts davon, leuten wie dir zu helfen, die zu faul sind, etwas fuer ihre zensuren zu machen und dann nicht mal andeutungsweise dankbarkeit zeigen.
    springst du mit deinen lehrern eigentlich auch so um wie mit mir/uns hier? hast du irgendwem in deinem leben ueberhaupt schon einmal dankbarkeit gezeigt?



  • Ich für meine Seite kann c.rackwitz gar nicht genug danken...

    c.rackwitz schrieb:

    http://en.wikipedia.org/wiki/Indent_%28Unix%29

    Wieder mal ein super Link den man gut gebrauchen kann. 👍

    Danke 👍



  • Warum hast du überhaupt angefangen ihm zu helfen? Wäre doch nicht nötig gewesen. :p



  • purer idealismus 😃



  • Die headerdatei conio.h kann nicht gefunden werden. Kann mal villeicht jemand den Inhalt von der hier reinsetzten?



  • der nuetzt dir nichts, unter anderem weil du offensichtlich nicht fuer windows kompilierst.



  • Gibt es den nur für windoof ??



  • das wollte ich indirekt sagen, ja.
    die conio ist eine erfindung von borland.

    header allein nuetzen dir generell garnichts, weil in headern keine funktionen stehen.


Anmelden zum Antworten