Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

C++ JA/Nein Abfrage

Empfohlene Antworten

Veröffentlicht

Folgende Aufgabenstellung:

Abfrage: "Antworten Sie mit Ja (j) oder Nein (n):"

Ausgabe: "Sie haben mit Nein geantwortet", "Sie haben mit ja geantwortet" oder "Sie haben eine falsche Eingabe gemacht."

Hinweise: Hier muss man Verzweigungen verwenden. Die Syntax für das if-Konstrukt ist gleich wie bei Java. Der Datentyp für die einzulesende Variable ist char. Einzelne Zeichen werden als Konstanten immer zwischen einfache Anführungszeichen gesetzt, z.B. 'a'.

Folgendes Programm habe ich darauf geschrieben. Wo ist jetzt aber der Fehler?!

//---------------------------------------------------------------------------

#pragma hdrstop

#include <stdio.h>

#include <conio.h>

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])

{

char antwort

printf("Antworten Sie mit JA (j) oder NEIN (n):");

scanf("%c", &antwort);

//---------------------BedingungBEGINN----------------------

if (c == 'j')

{

printf("Sie haben mit JA geantwortet");

}

if (c == 'n')

{

printf("Sie haben mit NEIN geantwortet");

}

if ((!c=='j')||(!c=='n'))

{

printf("Sie haben eine falsche Eingabe gemacht");

}

//---------------------BedingungENDE-----------------------

return 0;

}

//---------------------------------------------------------------------------

Danke erst einmal für die schnelle Antwort.

Laut Borland C++ Builder kommt folgende Fehlermeldung:

[C++ Fehler] abfrage.cpp(15): E2141 Fehler in der Deklarationssyntax

Er meint damit folgende Zeile:

printf("Antworten Sie mit JA (j) oder NEIN (n):");

Er meint damit folgende Zeile:

Sofern kein Copy&Paste-Fehler vorliegt, dürfte es sich eher um die Zeile darüber handeln, da dort das abschließende Semikolon fehlt.

Folgendes fällt mir jedenfalls spontan auch noch auf:

if ((!c=='j')||(!c=='n'))

Das wird jedenfalls nicht zum gewünschten Ergebnis führen, da erst die Negation und anschließend der Vergleich durchgeführt wird.

Stattdessen:

if ((!(c=='j'))||(!(c=='n')))
oder:
if (!(c=='j' || c=='n'))
oder aber auch einfach folgendes Konstrukt, welches die letzte Abfrage ersparen würde:
if (...)

{

   ...

}

else if (...)

{

   ...

}

else

{

   ...

}

char antwort;

[Editerle]

hmm, zu langsam.

oder aber auch einfach folgendes Konstrukt, welches die letzte Abfrage ersparen würde:

if (...)

{

   ...

}

else if (...)

{

   ...

}

else

{

   ...

}

Lieber switch, ist, nach meiner Meinung, übersichtlicher.

Bearbeitet von TDM

Also folgende Beispiele funktionieren nun beide (endlich :D) :

//---------------------------------------------------------------------------


#pragma hdrstop


#include <stdio.h>

#include <conio.h>

//---------------------------------------------------------------------------


#pragma argsused

int main(int argc, char* argv[])

{


char antwort;


	printf("Antworten Sie mit JA  oder NEIN");

	scanf("%c",&antwort);


//---------------------BedingungBEGINN----------------------


  if (antwort=='j')

  {

     printf("Sie haben mit JA geantwortet");

  }

  else if (antwort == 'n')

  {

     printf("Sie haben mit NEIN geantwortet");

  }

     else

     {

        printf("Sie haben eine falsche Eingabe gemacht");

     }


//---------------------BedingungENDE-----------------------

        return 0;

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------


#pragma hdrstop


#include <stdio.h>

#include <conio.h>

//---------------------------------------------------------------------------


#pragma argsused

int main(int argc, char* argv[])

{


char antwort;


	printf("Antworten Sie mit JA  oder NEIN");

	scanf("%c",&antwort);


//---------------------BedingungBEGINN----------------------


	if (antwort == 'j')

	   {

	   printf("Sie haben mit JA geantwortet");

	   }

	if (antwort == 'n')

	   {

	   printf("Sie haben mit NEIN geantwortet");

	   }

	if (!(antwort=='j' || antwort=='n'))

	   {

	   printf("Sie haben eine falsche Eingabe gemacht");

	   }


//---------------------BedingungENDE-----------------------

        return 0;

}

//---------------------------------------------------------------------------

Jetzt mal die nächste Frage: Wie mach ich das jetzt nun, das er mir auch die Großbuchstaben J für JA und N für NEIN akzeptiert?!

Jetzt mal die nächste Frage: Wie mach ich das jetzt nun, das er mir auch die Großbuchstaben J für JA und N für NEIN akzeptiert?!

Indem du die Eingabe vor der Auswertung in Kleinbuchstaben umwandelst:

antwort=tolower(antwort);
Dafür brauchst du
#include <cctype>

Übrigens sieht dein Code eher nach C als nach C++ aus.

Ok, das Problem hat sich nun auch gelöst! :D

Das fängt ja richtig an Spaß zu machen :P

//---------------------------------------------------------------------------


#pragma hdrstop


#include <stdio.h>

#include <conio.h>

//---------------------------------------------------------------------------


#pragma argsused

int main(int argc, char* argv[])

{


char antwort;


	printf("Antworten Sie mit JA  oder NEIN");

	scanf("%c",&antwort);


//---------------------BedingungBEGINN----------------------


  if (antwort=='j' || antwort=='J')

  {

     printf("Sie haben mit JA geantwortet");

  }

  else if (antwort == 'n' || antwort=='N')

  {

     printf("Sie haben mit NEIN geantwortet");

  }

     else

     {

        printf("Sie haben eine falsche Eingabe gemacht");

     }


//---------------------BedingungENDE-----------------------

        return 0;

}

//---------------------------------------------------------------------------

Warum eigentlich conio.h?

Hab ich mich auch schon gefragt, aber das steht so auf unseren Übungsblättern und so schreib ich das einfach ab :D

Was bedeutet denn dieses conio.h ?!:eek

Was bedeutet denn dieses conio.h ?!:eek
Das ist eine nicht standardisierte Headerdatei, die Deklarationen von Hilfsfunktionen zur Ein/Ausgabe auf der Konsole enthält (Console I/O).

Da drin stehen üblicherweise Funktionen wie getch und gotoxy. Die Inhalte können aber von Compiler zu Compiler unterschiedlich sein.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.