Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo.

Ich lerne seit kurzem C. Nun habe ich eine Frage zu einem kleinen Übungsprogramm. Mir ist folgendes Programm gegeben:

/* Loesung zu Aufgabe 3 */

#include <conio.h>


int main ()

{

	int zeichen;

	while(( zeichen=getch() ) != 'q');

	return 0;

}
Das Programm liest Zeichen von der Tastatur ein und bricht ab, sobald ich auf die Taste q drücke. Nun soll ich das Programm so verändern das das Programm bei der Eingabe der Tasten: - a,b,c - A,B,C - den Ziffern 0-9 abbricht und das Zeichen ausgibt, welches zum Abbruch führte. Nachdem ich mir nun schon einen Tag lang den Kopf zerbrochen habe würde ich gern eure Hilfe erbitten. Wie würdet ihr diese Aufgabe lösen? Mein erster Ansatz war die Abbruchbedingunen durch logische ODER aneinander zu hängen.
while(( zeichen=getch() ) != 'a' || !='b')
Jedoch bekomme ich dann beim Kompilieren die Fehlermeldung:
syntax error before '!=' token 

OS: WinXP

Entwicklungsumgebung: Dev-C++

Sprache: C

Wenn ihr noch weitere Infos braucht, reiche ich sie gerne nach.

MfG

Tronde

Geschrieben
Du kannst deine Bedingung nicht so formulieren. Du musst das zeichen innerhalb der Schleife einlesen und im Bedigungsteil dann Prüfen was in der Variable "zeichen" steht.

Nicht unbedingt, man kann auch alles im While-Kopf machen...

while((zeichen=getch()) != 'a' || zeichen !='b' || zeichen !='c')

Geschrieben

Hi.

Mit folgender Zeile klappts:

while(( zeichen=getch() ) != 'a' && zeichen !='b' && zeichen !='c');

Aber warum muss ich && nehmen? Ich dachte, dass steht für UND und die Abbruchbedingung wäre nur erfüllt wenn a und b eingegeben werden. Deshalb habe ich mich für das ODER (||) entschieden.

Könnt ihr mir den Unterschied vielleicht nochmal erneuern.

MfG

Tronde

Geschrieben

|| = oder

Wenn zeichen != 'b' || zeichen != 'c', dann ist entweder die erste bedingung immer richtig, oder die zweite, denn wenns b ist, ist es nicht c und umgekehrt.

Geschrieben

Ok das verstehe ich.

Nun habe ich noch eine andere Frage.

Gibt es eine geschicktere Art und Weise das Programm abbrechen zu lassen ausser für alle Ziffern

zeichen !=48 && zeichen !=49

usw. in den Quelltext zu tippen?

Gibt es in C vielleicht reguläre Ausdrücke wie in der Bash? So dass ich z.B. mit !=[48-57] den Bereich der ASCII-Codes für die Ziffern 0-9 ausklammern kann?

Und erstmal vielen Dank für eure Hilfe bis hierher.

MfG

Tronde

Geschrieben

Ich würde das so machen:

while( !isalnum( zeichen = getch() ) );

(benötigt #include <ctype.h>)

Wenn isalnum nicht erlaubt ist (kann bei Übungsaufgaben ja passieren), dann würde ich einen String mit den gesuchten Zeichen erstellen, und das eingegebene Zeichen da drin suchen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...