Verfügbare Informationen zu "Zeichen einzeln einlesen"
Qualität des Beitrags: Beteiligte Poster: bubblelol - Dirty Oerty - wirthi - exbs - DrPhil_Guth Forum: Tutorials.at Forenbeschreibung: Programmierforum aus dem Unterforum: C / C++ Antworten: 8 Forum gestartet am: Mittwoch 19.04.2006 Sprache: deutsch Link zum Originaltopic: Zeichen einzeln einlesen Letzte Antwort: vor 16 Jahren, 6 Monaten, 22 Tagen, 1 Stunde, 9 Minuten
Alle Beiträge und Antworten zu "Zeichen einzeln einlesen"
Re: Zeichen einzeln einlesen
bubblelol - 20.09.2007, 19:55Zeichen einzeln einlesen
Hallo.
Ich habe ein Problem.
Unzwar möchte ich eine Zahl mit 4 stellen einlesen (z.b. 1234) dann aber mit jeder Zahl einzeln arbeiten können.
Beispiel: Ich lese die Zahl 1234 von der Tastatur ein und schreibe dann im Quellcode das die erste Stelle mit der letzten addiert wird, also bei dem beispiel wäre das dann 1+4=5.
Wie soll ich das machen?
Durch die Sachen auf Tutorials.at hab ich nichts gefunden.
Re: Zeichen einzeln einlesen
Dirty Oerty - 20.09.2007, 21:27
Zuerstmal würde ich '1234'(also die Eingabe) in ein char-Array einlesen lassen.
Und ab da ist es eigentlich wirklich leicht:
Code: int ergebnis = ((int)eingelesen[0] - 48) + ((int) eingelesen[3] - 48);
(Nicht getestet)
Verstanden? :)
MfG
Daniel
Re: Zeichen einzeln einlesen
bubblelol - 20.09.2007, 22:08
Also wenn ich dich richtig versteh meinst du das so:
Code: #include <stdio.h>
int main()
{
char a[4];
int e;
scanf("%c", &a);
e = (a[0] - 48) + (a[3] - 48);
printf("%d", e);
while(1); // damit das Programm nicht sofort schließt
}
So oder so ähnlich hab ich es auch schon probiert, das Problem ist jeddoch das die Zahl z.b. 1234 so wie sie ist in a[0] eingelesen wird (so scheints mir zumindest).
Als Ergebnis kommt dann -47 raus wegen den (a[3] - 48 ) weil a[3] = 0 ist und 1 - 48 dan -47 ist.
Re: Zeichen einzeln einlesen
wirthi - 20.09.2007, 22:50
Mit "%c" liest du auch ein *einzelnes* Zeichen ein (also a[0]), keinen String (Zeichenkette) - das geht mit %s.
Darüber hinaus muss dein Array um zumindest eins größer sein als der einzulesende String, da der String null-Terminiert ist (d.h. ein Zeichen mit dem Wert 0 angehängt wird). Also char a[5];
Re: Zeichen einzeln einlesen
exbs - 21.09.2007, 08:31
Lese die Zahl als Integer ein. Dann musst du nur die Anzahl Stellen herausfinden und dann die Zahl durch 10 teilen und die den Rest immer in einer Variable speichern.
Gucke dir dazu einfach mal an, wie so ein Zahlensystem (in dem Fall das Dezimalsystem) aufgebaut ist.
Die Stellen und die einzelnen Zahlen rausholen, kann auch in einem rekursiven Schritt geschehen.
Re: Zeichen einzeln einlesen
DrPhil_Guth - 21.09.2007, 17:30
exbs lösung ist ganz gut, ein kleiner tipp dazu wäre der Modulo Operator "%" der den Rest einer division zurückgibt.
Wenn du die Möglichkeit mit der Zeichenkette wählst, dann nimm doch bitte statt (a[0] - 48) eine sichere variante wie zum beispiel atoi(a[0]). Diese ist in stdio.h definiert
Re: Zeichen einzeln einlesen
bubblelol - 27.09.2007, 01:01
hm... ist atoi(); nicht in stdlib.h definiert?
Re: Zeichen einzeln einlesen
bubblelol - 27.09.2007, 01:32
Ich hab es jetzt so gemacht:
Code: #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int temp[4];
char string[4];
setvbuf(stdin, NULL, _IONBF, 0); // Puffer löschen
setvbuf(stdin, NULL, _IOFBF,BUFSIZ); //
printf("Geben Sie einen Binaercode ein: ");
fgets(string, 30, stdin);
for(int i = 0; i <= (strlen(string) - 2); i++) // Überprüfen ob nur
if(string[i] != '0' && string[i] != '1') // 1 und 0
printf("Fehler");
for(int i = 0; i < strlen(string); i++) // zu int machen
{
temp[i] = string[i];
if (temp[i] == 48)
temp[i] = 0;
else if (temp[i] == 49)
temp[i] = 1;
}
printf("%d %d %d %d", temp[0], temp[1], temp[2], temp[3]);
while(1);
return 0;
}
Wenn es einen einfacheren Weg gibt könntet ihr den mir dan bitte posten?
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum Tutorials.at
Error - gepostet von xxx am Freitag 01.12.2006
c/c++? - gepostet von pYp am Montag 04.09.2006
Micrsoft Visual C++ Kompilieren - gepostet von Cookie am Freitag 03.11.2006
ASCII-Code ! - gepostet von EndSub am Donnerstag 10.08.2006
Demo Version machen ----> Wie? - gepostet von vpascal am Freitag 04.05.2007
Allokieren in PASCAL ? - gepostet von exbs am Montag 19.02.2007
Ich Verstehe nicht was das ganze Variable ist - gepostet von Fro0zen am Sonntag 17.09.2006
Ähnliche Beiträge wie "Zeichen einzeln einlesen"
Zeichen dafür das man alt wird - lookout (Samstag 04.03.2006)
Im Zeichen der Jungfrau - juliane (Samstag 07.04.2007)
[S]Kristall [B]Deut - Anonymous (Freitag 04.06.2010)
Logo/Zeichen - 9er (Sonntag 07.08.2005)
Sylvies Routinen - Sylvie (Montag 18.02.2013)
Kommentare zu: Im Zeichen des Phönix - Merith (Dienstag 08.05.2007)
AWB + AWBT Cleaveland Wheel and Brakes - Parker - WNF (Samstag 02.07.2011)
die dazugehörigen zeichen - Gaara2 (Mittwoch 07.11.2007)
WWE Zeichen - sido42 (Sonntag 03.06.2007)
3alamat Assa3a(Die Zeichen der Endzeit) erkennen! - SeyfBinduYazan (Freitag 18.08.2006)