Char nach Int
-
Hatte mich verklickt beim Kopieren^^
anstatt int zahl2;
sollte es int zahl1; sein.
Ich wollte halt versuchen mit den Zahlen aus dem Array zu rechnen.
z.b.
zahl = eingabe[0]+eingabe[1];
cout<<zahl;
Aber das funktioniert ja nicht.
Ich könnte das zwar auch alles ohne array machen aber ich will es mit array machen.Kann man vielleicht einfach z.b. eingabe[0] einer anderen Variable zuweisen?
Also beim meinem ersten post hab ich das ja versucht aber das klappte nicht

-
warum nimmst du dann nicht einfach ein int array?
-
Klappt nicht ist keine Fehlerbeschreibung. Sag was Du willst und was passiert, sonst wird Dir keiner helfen.
-
Aaaaaaaaaaaaaaaalso...
In deinem Array das eigentlich chars beinhalten soll, hast du anfangs die Zahlen 0 - 4. Zu bemerken: Zahlen, nicht die ASCII-Zeichen '0', '1' etc.
Damit würde sich also theoretisch normal rechnen lassen, weil es eben nur Zahlen sind.
Dann beim Einlesen schreibt ASCII-Zeichen in das Array. Drei deiner Eingabezeichen und in das letzte schreibt er '\0', was 0 entspricht, um den Array abzuschließen (wie es bei C-Strings, wie diesem, üblich ist).
Wenn du also zB 123 eingibst, steht da drin: '1', '2', '3', '\0'.
Dies entspricht NICHT 1,2,3,0 sondern 64,65,66,0 oder sowas. Halt der ASCII-Wert der Zeichen.
Daher wäre es sinnvoll zu wissen was du überhaupt willst, weil momentan stimmt da so einiges nicht.

-
Fellhuhn schrieb:
Dies entspricht NICHT 1,2,3,0 sondern 64,65,66,0 oder sowas.
Eher 48,49,50. Du hattest wohl die Großbuchstaben im Kopf, die fangen bei 65 an.

-
Hab eigentlich nur geraten.

-
Ich hatte mir das so gedacht wenn man bei eingabe z.b. eine 6 und eine 4 eingibt.
Das dass Programm dann 3+2 rechnet.
Weil eingabe[0] müsste ja dann 6 sein und eingabe[1] 4
Aber das Problem ist denk ich mal das dass array ein char array ist.
Ich hab auch schon
int eingabe[]={0,1}versucht aber dann bekomme ich immer diese Fehlermeldung:
[C++ Fehler] Unit1.cpp(12): E2015 Mehrdeutigkeit zwischen '_STL::basic_istream<char,_STL::char_traits<char> >::operator >>(bool &)' und '_STL::basic_istream<char,_STL::char_traits<char> >::operator >>(void * &)'
#include <iostream> using namespace std; int main() { int erg; char eingabe[]={0,1}; cout<<"Eingabe :"; cin>>eingabe; erg = eingabe[0]+eingabe[1]; cout<<erg; return 0; } //---------------------------------------------------------------------------
-
cin >> eingabe[0] >> eingabe[1].
Dann kannst beide Zahlen hintereinander angeben.
-
Das funktioniert schon mal aber wie ist das dann wenn man nicht weiss wie viele Zahlen der user hintereinander eingeben wird?
-
array schrieb:
Das funktioniert schon mal aber wie ist das dann wenn man nicht weiss wie viele Zahlen der user hintereinander eingeben wird?
Dann nimmt man einen vector.
Entweder lernen (-> Suche hier im Forum und unter google)
oder kopieren:#include <vector> #include <iostream> #include <algorithm> #include <iterator> using namespace std: int main() { vector<int> eingabe; copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(eingabe)); ...liest solange Ganzzahlen ein, bis das erste Zeichen kommt, das nicht zu einer Ganzzzahl gemacht werden kann ("whitespaces" werden übersprungen).
Gruß,
Simon2.
-
Mensch was ist eigentlich so schwer daran ein Problem vernünftig zu beschreiben? Das ist doch das wichtigste, um Hilfe zu bekommen. Ein Stück falscher Code und "funktioniert nicht" sagt uns auch nicht unbedingt, was genau Du machen willst, sonst würde es ja nicht "nicht funktionieren".
Du willst also eine Zahl einlesen und mit den einzelnen Ziffern dieser Zahl rechnen? Also z.B. die Quersumme bilden?
Solange Deine Konsole einen Zeichensatz nutzt, wo die Ziffern hintereinander liegen, sollte sowas gehen:
#include <iostream> #include <string> using namespace std; int ziffer( string const& text, size_t position ) { return text.length() > position // ist position überhaupt gültig? ? ( text[ position ] - '0' ) // ASCII-Code der Ziffer minus ASCII-Code der 0 : -1; // -1 als Fehlerindikator, da Ziffern immer positiv sind. Alternativ: Exception werfen } int main() { string eingabe; cout<<"Eingabe :"; cin>>eingabe; int erg = ziffer(eingabe, 0) + ziffer(eingabe, 1); cout<<erg; }EDIT:
Gibt natürlich Murks zurück bei Alpha-Strings. Aber die Überprüfung auf Ziffern oder die Eingabe eines int und Berechnen einer Ziffer (durch Division und Modulo) überlasse ich mal zur Übung dem geneigten Leser :p