Wörter in 2D Array einlesen - C |
|
Ich sollte erst denken und dann schreiben... Ich habe die Lösung falsch implementiert. Jetzt funktioniert es auch bei mir.
Was ich aber nicht verstehe an der Lösung ist:
Bricht meine break-Anweisung die Schleife ab oder geht sie dadurch wieder zu Beginn?
|
|
25.11.2015 17:58 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
break unterbricht die Schleifenausführung. Um die Ausführung des Schleifenkörpers an einer bestimmten Stelle zu unterbrechen und mit der nächsten Iteration fortzufahren, wird continue verwendet.
|
|
25.11.2015 18:01 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Ich halte es auch nicht für Sinnvoll, das Zeichen q in den Worten zu verbieten. Ich denke, das sollte eher beim Menü verwendet werden können, oder?
|
|
25.11.2015 18:13 |
|
|
|
Die Aufgabenstellung sagt mir, dass ich bei Eingabe des Zeichens q eine weitere Eingabe unterbinden soll. Ich bearbeite gerade eine Übungsaufgabe.
@eulerscheZahl Danke, das sieht sehr gut aus, ich werde es versuchen!
|
|
25.11.2015 18:17 |
|
|
|
Das Verlassen mehrerer Schleifen gleichzeitig ist der einzige Punkt, wo goto vertretbar ist.
Aber dann setze die Sprungmarke zumindest ans Ende der Schleife, dass du mit goto nicht nach oben springst.
code: |
1:
2:
3:
4:
5:
|
case 3 : printf("Programm wird beendet! \n");break;
default: break;
}
LOOP: ;
}while (menuPunkt == 1 || menuPunkt == 2); |
|
__________________ Syntax Highlighting fürs Board (Link)
|
|
25.11.2015 18:23 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Man könnte auch eine Variable verwenden, um den Kontrollfluss zu steuern. Man muss dann nur an allen relevanten Punkten den Wert der Variable prüfen. Man muss dann abwägen, wie der Quelltext leserlicher ist.
Gruß,
Karlito
|
|
25.11.2015 18:26 |
|
|
|
Ok dann werde ich das so lassen und hoffen, dass mein Tutor mich nicht auseinander nimmt
Alleine hätte ich das vorerst nicht so geschaftt! Ich habe auf jeden Fall was gelernt. Mein Ansatz zum Einlesen war falsch, da ich mich vorher noch nicht mit getchar() vertraut gemacht hatte.
Vielen Dank!
|
|
25.11.2015 18:26 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Auch wenn ich damit Verwirrung stifte, ich würde scanf anstatt getchar verwenden. Und dann die Abarbeitung auch nur stoppen, wenn das Wort "q" eingegeben wurde, nicht bei jedem möglichen 'q'. Ich denke, das wird auch der Tutor bemängeln, aber da es quasi zum Lernen gedacht ist, wird die Lösung schon durchgehen,
Gruß,
Karlito
|
|
25.11.2015 18:28 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Ich dachte eher an:
code: |
1:
2:
3:
|
scanf("%s", wortliste[i]);
|
|
Damit sollten ganze Wörter eingelesen werden, anstatt einzelner Buchstaben.
code: |
1:
2:
3:
|
wortliste[i]
|
|
Gibt dabei schon einen Pointer auf den Anfang des Wortes zurück. Habe es leider nicht ausprobiert.
Edit: Du müsstest also die innere Schleife weg lassen können.
Gruß,
Karlito
|
|
25.11.2015 18:37 |
|
|
|
Wie kann ich denn dann nun mit dieser Lösung meine nicht "genutzten" Stellen im Array = '\0' setzen?
Jetzt scan ich ja nicht mehr charweise ein sondern stringweise
|
|
25.11.2015 19:50 |
|
|
|