HILFE beim Telefonverzeichnis
-
thread heisst diskussionsfaden. ich wuerde es sehr schaetzen, wenn du nicht 3 verschiedene threads mit dem gleichen titel und dem gleichen problem eroeffnen wuerdest.
tust du mir bitte den gefallen?
-
Well - nun da ich das mit dem Thread begriffen habe und die Ausgabefunkt. meines Programmes läuft nun nochmal eine Frage zu meiner Suchfunkt.:
void suchen() { char stichwort[31]; clrscr(); 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,n; clrscr(); printf ("\t\t\nNamen mit gesuchtem Stichwort:\n\n\n"); printf ("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"); printf("%s",liste[n].name); printf("%s",liste[n].stichwort); { clrscr(); printf (" Suchergebnis: \n"); printf (" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"); printf (" Name Vorname Nummer Email \n"); for(n=0;n<i;n=n+1); if (strcmp(liste[n].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(); } }
In meinem C Tutorial steht, dass bei verschachtelten if Anweisungen die 2. Bedingung vor die 1. Anweisung gesetzt werden muss.
Dies habe ich auch getan, jedoch sagt der Compiler mir dann, dass ich else an eine falsche Position gesetzt habe.WARUM???
-
stepop schrieb:
In meinem C Tutorial steht, dass bei verschachtelten if Anweisungen die 2. Bedingung vor die 1. Anweisung gesetzt werden muss.
Dies habe ich auch getan, jedoch sagt der Compiler mir dann, dass ich else an eine falsche Position gesetzt habe.WARUM???deine einrueckung laesst zu wuenschen uebrig. ruecke ordentlich ein, dann siehst du, was der compiler fuer probleme hat.
mach das bitte, denn so lernst du mehr als wenn du dir deinen code von anderen schreiben laesst.
-
c.rackwitz schrieb:
stepop schrieb:
In meinem C Tutorial steht, dass bei verschachtelten if Anweisungen die 2. Bedingung vor die 1. Anweisung gesetzt werden muss.
Dies habe ich auch getan, jedoch sagt der Compiler mir dann, dass ich else an eine falsche Position gesetzt habe.WARUM???deine einrueckung laesst zu wuenschen uebrig. ruecke ordentlich ein, dann siehst du, was der compiler fuer probleme hat.
mach das bitte, denn so lernst du mehr als wenn du dir deinen code von anderen schreiben laesst.
Geschätzter Moderator!
Hier geht es nicht darum mich auf misslungene Klammersetzung aufmerksam zu machen, denn wenn diese richtig positioniert sind laeuft die Funktion ebenfalls nicht(ist ja bestimmt aufgefallen!).
Ferner liegt mir auch sehr wenig daran mir irgenwas vorkauen zu lassen. Wenn man den THREAD aufmerksam verfolgt laesst sich feststellen, dass ich binnen kurzer Zeit zu einer Loesung kommen muss. Da ich kein Programmierer bin und es auch nie sein werde ist hier ein nuetzlicher Tipp zu Vollendung des Gesamten wesentlich sinnvoller als goldene Zeit mit Korrinten kacken zu verplempern.
Vielen Dank für Ihre Anteilnahme
-
stepop schrieb:
... wesentlich sinnvoller als goldene Zeit mit Korrinten kacken zu verplempern.
Vielen Dank für Ihre AnteilnahmeEs heisst Korinthen.
-
na na na, du willst hilfe, nicht ich. ein bisschen demut waere nicht verkehrt...
wenn ich wuesste, was in deine if und else zweige gehoeren soll, koennte ich dir den code einfach hinwerfen.
das weiss ich aber nicht, also kann ich dir nur allgemein raten, dies und das zu tun.
und weil ich so lieb bin, ruecke ich dir deinen code jetzt mal ein und setze ein paar klammern, damit du sehen kannst, wo der fehler sein koennte:void suchen() { char stichwort[31]; clrscr(); 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,n; clrscr(); printf ("\t\t\nNamen mit gesuchtem Stichwort:\n\n\n"); printf ("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"); printf("%s",liste[n].name); printf("%s",liste[n].stichwort); { // sinnloser block clrscr(); printf (" Suchergebnis: \n"); printf (" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n"); printf (" Name Vorname Nummer Email \n"); for(n=0;n<i;n=n+1); // dieser loop hat keinen koerper if (strcmp(liste[n].name,stichwort) == 0) { if (b==0) // diese beiden ifs kann man zusammenfassen { 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(); {// sinnloser block printf ("\nDuecken Sie eine beliebige Taste um ins Hauptmenue zu gelangen\n"); getch(); } }
sonst noch wuensche? du darfst mich ruhig wie einen fussabtreter behandeln. ich werd schliesslich koeniglich bezahlt, hier rund um die uhr innerhalb von maximal 5 minuten jeden post zu beantworten.
-
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
-
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:
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 ??