C Neuling ;(

DJWxD

Cadet 1st Year
Registriert
Nov. 2020
Beiträge
12
Hallo,
ich bin Neuling was das Programmieren an geht und unser prof hat uns schon unsere erste Aufgabe gegeben.
Wir sollen keinen if Sätze oder scanf benutzen da wir das noch nicht hatten.

int zahl1; /* Hier weise ich zahl z.B die passende Zahl */
zahl1 = getchar();
int zahl2;
zahl2 = getchar();
int zahl3;
zahl3 = getchar();
int zahl4;
zahl4 = getchar();
int zahl5;
zahl5 = getchar();
int zahl6;
zahl6 = getchar();
int zahl7;
zahl7 = getchar();

Meine Frage jetzt, warum werden nur die ersten 4 Zahlen abgefragt und danach keine mehr? Wir sollen getchar auch verwenden um die zahlen ein zu Tippen.
 
Weil getchar nur 1 Zeichen einliest.
Wenn du dann '1' und Eingabetaste eingibst hast du 2 Zeichen gelesen (oder 3 crlf)
Du solltest statt getchar getline() verwenden und dann die Eingabe parsen.

ungefähr so (ungetestet)
Code:
char buffer[20];
size_t bufsize = 20;
size_t characters = getline(&buffer,&bufsize,stdin);
int zahl=0;
int i=0;
while (i < bufsize && buffer[i >= '0'] & buffer[i] <= 9]) {
  Zahl = zahl *10 + (buffer[i++] - '0');
}
 
  • Gefällt mir
Reaktionen: DJWxD
Danke hat mir schon einmal sehr geholfen und meine Frage beantwortet <3
 
Es werden in deinem kleinen Programm tatsaechlich alle Charaktere eingelesen.

Was du schreiben wolltest ist das:
1
2
3
4
5
6
7

eingelesen wird.

STDIN als stream liest allerdings AUCH deine Enter Taste.

Du gibst 1 ein und drueckst Enter, dein STDIN stream sieht danach so aus:

1\n

Das '\n' steht fuer deine Enter Taste und das Slash ist ein "escape character" um es sozusagen von 'n' zu unterscheiden. Espace characters sind im ASCII Standard eine eigene Kategorie wie auch Zahlen und Buchstaben eine eigene Kategorie sind.

Was macht getchar() mit einem STDIN stream von "1\n" ?

int zahl1;
zahl1 = getchar() // 1 wird zu zahl1 zugewiesen
int zahl2;
zahl2 = getchar() // \n wird zu zahl2 zugewiesen


Suche dir bitte einen guten Kurs online in ENGLISCH fuer C, C lang ist kein Witz und du kannst dich schon einmal daran gewoehnen 95% deiner Informationen ueber Informatik in Englisch zu lesen.
 
  • Gefällt mir
Reaktionen: DJWxD
#include <stdio.h>

int main (void) { /* "Martikelnummer wird PZN"
Damon Wunnenberg 848518 */

int z1,z2,z3,z4,z5,z6,z7;

printf("Enter seven numbers: \n");

z1 = getchar();
z2 = getchar();
z3 = getchar();
z4 = getchar();
z5 = getchar();
z6 = getchar();
z7 = getchar();

printf("\n Enter number 1: ");
putchar(z1);
printf("\n Enter number 2: ");
putchar(z2);
printf("\n Enter number 3: ");
putchar(z3);
printf("\n Enter number 4: ");
putchar(z4);
printf("\n Enter number 5: ");
putchar(z5);
printf("\n Enter number 6: ");
putchar(z6);
printf("\n Enter number 7: ");
putchar(z7);

printf("\n Die Nummer lautet: %i", z3 );

return 0;
}

Ich hab es soweit geschaft das mir das Zahlen ein Tippen geling. Jedoch das " printf("\n Die Nummer lautet: %i", z3 );" verwirrt mich noch. Ich möchte das das Programm die Eingegebene 3te Zahl in den Text einfügt. Jedoch bekomme ich hier bei jetzt 52 raus :D. Wie geht das? nimmt der Irgendwelche Zahlen?
 
52 ist der ASCII-Code für die Ziffer 4.

Um es einfach zu einem int zu konvertieren:
C:
printf("\n Die Nummer lautet: %d\n", z3 - '0' );
 
  • Gefällt mir
Reaktionen: DJWxD
1.) Code bitte anständig posten.
2.) Irgendwas von dem Vorgenannten verstanden?
 
  • Gefällt mir
Reaktionen: maloz
Sry bin neu hier :/
LG BAGZZlash
Ergänzung ()

Amaoto schrieb:
52 ist der ASCII-Code für die Ziffer 4.

Um es einfach zu einem int zu konvertieren:
C:
printf("\n Die Nummer lautet: %d\n", z3 - '0' );
%d dürfen wir leider nicht benutzen trotzdem danke, ist für die Zukunft denk ich mal praktischer :D
 
Zuletzt bearbeitet:
Ah, sorry. Das war gar nicht nötig. Du kannst auch %i nutzen (ändert nichts).
Ich hoffe, Minuszeichen dürft ihr verwenden.
 
Amaoto schrieb:
Ah, sorry. Das war gar nicht nötig. Du kannst auch %i nutzen (ändert nichts).
Ich hoffe, Minuszeichen dürft ihr verwenden.
Jo dürfen wir, hat mir aber auch so sehr geholfen hab nicht gedacht das das - so verwendet werden kann
 
War die Aufgabe Ziffern oder Zahlen einzulesen? Klingt nach Wortklauberei ist aber beim programmieren ein ziemlicher Unterschied
 
cloudman schrieb:
War die Aufgabe Ziffern oder Zahlen einzulesen? Klingt nach Wortklauberei ist aber beim programmieren ein ziemlicher Unterschied
Wie meinst du das? Also die Aufgabe war ein Algorithmus zu schreiben. Wo wir zahlen eintragen und dieser Zahlen Code immer den gleichen Rechenweg durch geht.
 
Die Zahl 4711 besteht aus 4 Ziffern. Dein Code kann nur Zahlen mit einer Ziffer einlesen. Ich habe in meinem Beispiel getline verwendet damit man auch Zahlen > 9 eingeben kann.
 
Zurück
Oben