Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Wörter in 2D Array einlesen - C » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (3): « vorherige 1 [2] 3 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Wörter in 2D Array einlesen - C
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Also, bei mir scheint es zu passen.
Hast du eine Beispieleingabe?

__________________
Syntax Highlighting fürs Board (Link)
25.11.2015 17:52 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
LightSideOfLife
Mitglied


Dabei seit: 24.11.2015
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 LightSideOfLife ist offline Beiträge von LightSideOfLife suchen Nehmen Sie LightSideOfLife in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
LightSideOfLife
Mitglied


Dabei seit: 24.11.2015
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wenn ich nun aber einen ersten Programmdurchgang mache und bei der Eingabe mit einem q abbreche, dann bekomme ich wieder eine undefinierte Ausgabe.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
Menuepunkt 1

Woerter eingeben:

1. Wort: Hallo
2. Wort: ich
3. Wort: bin
4. Wort: q

'q' ist nicht erlaubt!

1.) Woerter eingeben
2.) Woerter umgedreht ausgeben
3.) Programm beenden

Ihre Auswahl: 2

Menuepunkt 2

Woerter umgedreht ausgeben:

1. Wort: ollaH
2. Wort: hci
3. Wort: nib
4. Wort: ▒0
▒▒▒▒0
5. Wort: ▒*▒▒*▒$▒x
6. Wort: ▒,▒$¨▒0
▒▒▒▒
7. Wort: ▒q▒▒▒▒,▒
8. Wort: ▒IICSA▒t ▒
9. Wort: $▒`$▒▒▒▒▒!!▒
10. Wort: $▒▒$▒▒▒2▒h



und das, obwohl ich goto LOOP durch break ersetzt habe, um wieder die zweite while Schleife zu durchlaufen.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von LightSideOfLife: 25.11.2015 18:10.

25.11.2015 18:09 LightSideOfLife ist offline Beiträge von LightSideOfLife suchen Nehmen Sie LightSideOfLife in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Da hast du sie ja auch noch nicht mit 0 befüllt.
Geht am einfachsten mit char wortListe [10][30] = {0}; direkt bei der Variablendeklaration.

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 25.11.2015 18:12.

25.11.2015 18:11 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
LightSideOfLife
Mitglied


Dabei seit: 24.11.2015
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 LightSideOfLife ist offline Beiträge von LightSideOfLife suchen Nehmen Sie LightSideOfLife in Ihre Freundesliste auf
LightSideOfLife
Mitglied


Dabei seit: 24.11.2015
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wow, meine Lösung funktioniert jetzt super!
Vielen Dank! Nur hätte ich da auch von selbst drauf kommen müssen... Ich hoffe das kommt mit der Übung.
Das einzige Problem, das ich jetzt habe ist, dass ich nicht weiß wie ich ohne goto-Anweisung einen Abbruch der Eingabe erzielen kann.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von LightSideOfLife: 25.11.2015 18:19.

25.11.2015 18:19 LightSideOfLife ist offline Beiträge von LightSideOfLife suchen Nehmen Sie LightSideOfLife in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
LightSideOfLife
Mitglied


Dabei seit: 24.11.2015
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ok dann werde ich das so lassen und hoffen, dass mein Tutor mich nicht auseinander nimmt großes Grinsen
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 LightSideOfLife ist offline Beiträge von LightSideOfLife suchen Nehmen Sie LightSideOfLife in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
LightSideOfLife
Mitglied


Dabei seit: 24.11.2015
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Lösung mit scanf war auch eigentlich meine Erdachte:

code:
1:
2:
3:
4:
5:
case 1 : printf("Woerter eingeben: \n");
				for(i = 0; i < 10; i++)
					for (j = 0; j <10; j++)
						scanf("%c", &wortListe[i][j]);
				break;


Wo liegt hier der Fehler?
Dass ich jetzt buchstabenweise einlese weiß ich, aber auch mit einer Hilfsvariablen habe ich es nicht geschafft.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von LightSideOfLife: 25.11.2015 18:33.

25.11.2015 18:32 LightSideOfLife ist offline Beiträge von LightSideOfLife suchen Nehmen Sie LightSideOfLife in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
LightSideOfLife
Mitglied


Dabei seit: 24.11.2015
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 LightSideOfLife ist offline Beiträge von LightSideOfLife suchen Nehmen Sie LightSideOfLife in Ihre Freundesliste auf
Seiten (3): « vorherige 1 [2] 3 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Softwaretechnik » Wörter in 2D Array einlesen - C