[C/C++] Klausur! ///help!

Dready

schläft auf dem Boardsofa
Klausur! ///help!

Hi @ all

Schreibe nächste Woche mal wieder ne Klausur im Fach Programmieren.
"Großes" ( ) Thema Funktionen.

Dazu mal eben folgendes Beispiel:

int ZeichenEingabe(){
int iRetVal;
char szEingabe[10];
cin>>szEingabe;

if(isdigit(szEingabe[0])){
cout<<"Korrekte Eingabe \n\n";
}
else{
cout<<"Flasche Eingabe \n\n";
}

iRetVal=atoi(szEingabe);

return iRetVal;
}

int main(){

int iZahl0 = ZeichenEingabe();
int iZahl1 = ZeichenEingabe();
int iZahl2 = ZeichenEingabe();
int iZahl3 = ZeichenEingabe();
int iZahl4 = ZeichenEingabe();
int iZahl5 = ZeichenEingabe();

cout<<"PIN lautet: \n\n";

cout<<iZahl0;
cout<<iZahl1;
cout<<iZahl2;
cout<<iZahl3;
cout<<iZahl4;
cout<<iZahl5;
cout<<" \n\n";

system("pause");

return 0;
}

Frage: Welchen Sinn seht ihr in dem Programm?! Ich kapier nicht welche bedingungen es für das "korrekt oder falsch" gibt.
Also... wann ist die Eingabe "korrekt" und wann "falsch" ??
Müssen die eingegebenen Zahlen einfach nur von einem bestimmten Datentyp sein? Blick ich nicht durch


Dann..... wozu ist die if/else Verzweigung?

Und wie muss das mit dem "isdigit" geschrieben werden damit Werte wie zB Buchstaben zum schluss als zB "-1" und NICHT als "0" augegeben werden (also damit keine verwechslung zwischen der "0"=ungültig und der "0"=Ziffer entstehen)..?!
 
EDIT

char szEingabe[10];

wofür steht die [10] ?


if(isdigit(szEingabe[0]))

wofür steht die [0] ?

Wofür ist:

int ZeichenEingabe(){
int iRetVal;
char szEingabe[10];
cin>>szEingabe;

verantwortlich?

Sry für die (bestimmt) dummen Fragen aber irgendwie muss ich druchblicken/verstehen
 
Code:
char szEingabe[10];
Hier wird ein Array von Zeichen also eine Zeichenkette (ein String) deklariert. Die 10 steht für die Anzahl der Felder (Zeichen).

Code:
if(isdigit(szEingabe[0]))
Die 0 steht für das erste Feld im Array, also für das erste Zeichen im String. Hier wird geprüft ob es sich um eine Zahl handelt. Wenn nicht wird false, ansonsten true zurück gegeben.

if(isdigit(szEingabe[0])) ist also die Kurzform von if(isdigit(szEingabe[0])==true)

Kurz gesagt wird am Anfang des Programms die Funktion ZeichenEingabe definiert, die per cin eine Eingabe erzeugt, die geprüft wird und dementsprechend eine Meldung ausgibt. Dann wird per return das Ergebnis als int (durch atoi umgewandelt) zurück gegeben.

Das Ganze wird sechs Mal durchgeführt und anschließend werden die 6 Zahlen ausgegeben.

Warst du im Unterricht mal anwesend? ;)
 
Sinn der Funktion: Ein Zeichen soll eingegeben werden, das dann in einem char-Array gespeichert wird.
Die If-Anweisung prüft, ob das erste Zeichen des Array eine Ziffer ist und kommentiert die Eingabe. (Mehr passiert hier nicht, ausser dass ausgegeben wird, ob eine Ziffer als erstes eingegeben wurde, oder nicht! Richtig abgetippt?)
Dann wird der Inhalt des Arrays in einen Integerwert umgewandelt (iRetVal=atoi(szEingabe); ) und aus der Funktion zurückgegeben ( return iRetVal; ).

Das mit dem isdigit-Rückgabewert ist eigentlich völlig egal.
Es handelt sich dabei ja nur um den Rückgaberwert der Prüffunktion und hat mit dem zu prüfenden Zeichen des Arrays nichts zu tun.

Mehr Sinn (wenn man von Sinn bei diesem Programm überhaupt sprechen kann) würde folgende Funktionsdeklaration machen:
Code:
int ZeichenEingabe()
{
int iRetVal;
char szEingabe[10];

do
{
     cin>>szEingabe;
     if(isdigit(szEingabe[0]))
     {
          cout<<"Korrekte Eingabe \n\n";
          iRetVal=atoi(szEingabe);

          return iRetVal;
     }
     else  
         cout<<"Falsche Eingabe \n\n";

}while(!isdigit(szEingabe[0])
}
Hierbei wird die While-Schleife solange abgearbeitet, bis das erste Zeichen der Eingabe eine Ziffer ist. Erst dann wird das Array umgewandelt, und der Wert zurückgegeben.

PS: Eigentlich sollte für jede Stelle des Arrays in ner For-Schleife geprüft werden, ob es sich dabei um eine Ziffer handelt, damit das ganze nen Sinn ergibt.


Nachtrag:
wofür steht die [10]
Dies bedeutet, dass es sich dabei um ein char-Array handelt, das 11 Zeichen aufnehmen kann.

wofür steht die [0]
Die [0] steht in diesem Fall für die erste Stelle im char-Array.

Wenn du nächste Woche Klausur schreibst, dann solltest du dich aber wirklich dahinterklemmen, da das wirklich Grundwissen ist. ;)
 
Jojo, bin ja dabei!
Besten dank euch beiden....!

Ist immer das selbe... im Unterricht bekommt (fast!) niemand was gerallt, weil der Lehrer einfach nicht dazu in der Lage ist vernünftiges Informationsmaterial bereitzustellen und den Stoff verständlich und praxisbezogen rüberzubringen. Mir solls egal sein, hab mir bis jetzt immer alles selber beigebracht bzw zu hause alles erarbeitet und alle Klausuren 1 geschrieben.
Naja egal.....

Kann mir vielleicht noch JEmand die schritte ab einschließlich "int main(){ " erläutern?
werden die verschiedenen Werte der Zeichenkette übertragen? Hmmz
 
Hoi, me again..... :blink:

Hab ne billige Frage zu strings/array´s... Uns zwar, wie definiert man strings/array´s?

Wenn ich

string iVariable[20];

hab ist der string ja nicht definiert sondern lediglich deklariert, oder?
Wie erfolgt die Definition?

thx
 
Oben