Rechnung mit Array
-
Hallo liebe community,
warum funktioniert der Code nicht?#include <iostream> using namespace std; int main(1) { int a[50]; int quersumme; cout << 'Geben Sie eine vierstellige Zahl ein: '<< endl; cin >> a; quersumme = a[0] + a[1] + a[2] + a[3]; cout << 'Quersumme: ' << quersumme << flush; }Fehler:
1>------ Erstellen gestartet: Projekt: Test, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>first.cpp 1>c:\users\frank\desktop\c++\test\test\first.cpp(5) : error C2448: 'main': Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein 1>c:\users\frank\desktop\c++\test\test\first.cpp(9) : error C2015: Zu viele Zeichen in der Konstante 1>c:\users\frank\desktop\c++\test\test\first.cpp(12) : error C2015: Zu viele Zeichen in der Konstante 1>Das Buildprotokoll wurde unter "file://c:\Users\frank\Desktop\C++\Test\Test\Debug\BuildLog.htm" gespeichert. 1>Test - 3 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Aufgabenstellung aus meinen Tutorial:
Entwickeln Sie eine C++-Anwendung, die den Anwender zur Eingabe einer vierstelligen Zahl auffordert. Das Programm soll daraufhin die Quersumme der vierstelligen Zahl errechnen und das Ergebnis dann auf den Bildschirm ausgeben. Hinweis: Je nach Lösungsansatz benötigen Sie wie in Aufgabe 1 die Funktion atoi() zum Umrechnen von Zahlen innerhalb eines Arrays vom Typ char in Werte vom Typ int.Wie in der Aufgabenstellung erwähnt habe ich es auch schon mit dem Typ char versucht, aber dies ist glaube ich nochmehr in die Hose gegangen.
#include <iostream> using namespace std; int main(1) { char a[5]; char quersumme; cout << 'Geben Sie eine vierstellige Zahl ein: '<< endl; cin >> a; atoi(quersumme) = atoi(a[0]) + atoi(a[1]) + atoi(a[2]) + atoi(a[3]); cout << 'Quersumme: ' << static_cast<int>(quersumme) << flush; }
-
int main(1)
Was hat denn die 1 dadrin verloren?Verwende bei den Zeichenketten " statt '
-
@cler ja das auch
Das Problem ist dass die vierstelliege Zahl nicht automatisch geteilt wird.
Das heißt die "ganze" Zahl wird im array im Index 0 gespeichert{code} cin >> a[0]; // Bsp 1000 {code} cout << "a[0] : " << a[0] << endl; // Ausgabe : 1000 {code}Ich persönlich hab jetzt leider keine Ahnung wie man dein Problem jetzt genau löst tut mir leid

lg c4f
-
#include <iostream> using namespace std; int main() // die 1 weg { char a[5]; int quersumme; // Quersumme ist ne Zahl, kein Buchstabe cout << 'Geben Sie eine vierstellige Zahl ein: '<< endl; cin >> a; quersumme = atoi(a[0]) + atoi(a[1]) + atoi(a[2]) + atoi(a[3]); // s.o. cout << 'Quersumme: ' << quersumme << flush; // s.o. }In C++ geht man da über String Streams. Ach ja, dein Code ist, mit Ausnahme des cout und cin Objektes, eher C Code als C++.
Damit du mal ein bisschen siehst, wie C++ Code aussehen kann:#include <iostream> #include <sstream> // std::istringstream #include <numeric> // std::accumulate int ToInt(char c) { std::istringstream stream(std::string(1, c)); int result; stream >> result; return result; } int sum_digits(int result, char digit) { return result + ToInt(digit); } int main() { std::cout << "Geben sie eine vier-stellige Zahl ein: " << std::endl; char digits[5]; std::cin.getline(digits, 5); std::cout << "Quersumme: " << std::accumulate(digits, digits + 4, 0, sum_digits) << std::endl; }Ob dir das was hilft ist natürlich fraglich. Was du auf jeden Fall bei deiner Variante noch beachten solltest, ist das der Benutzer falsche Eingaben machen kann (z.B. Buchstaben).
Gruß
Don06
-
Ja wie die 1 dareingekommen ist frage ich mich auch gerade.
Jedenfalls habe ich es wie folgt verändert:
#include <iostream> using namespace std; int main() { int a[5]; int quersumme; cout << "Geben Sie eine vierstellige Zahl ein: "<< endl; cin >> a; quersumme = a[0] + a[1] + a[2] + a[3]; cout << "Quersumme: " << quersumme << flush; }Fehler:
1>------ Erstellen gestartet: Projekt: Test, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>first.cpp 1>c:\users\frank\desktop\c++\test\test\first.cpp(10) : error C2679: Binärer Operator '>>': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'int [5]' akzeptiert (oder keine geeignete Konvertierung möglich) 1> c:\program files\microsoft visual studio 9.0\vc\include\istream(1144): kann 'std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char *)' sein 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> c:\program files\microsoft visual studio 9.0\vc\include\istream(1146): oder "std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,signed char &)" 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> c:\program files\microsoft visual studio 9.0\vc\include\istream(1148): oder "std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char *)" 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> c:\program files\microsoft visual studio 9.0\vc\include\istream(1150): oder "std::basic_istream<_Elem,_Traits> &std::operator >><std::char_traits<char>>(std::basic_istream<_Elem,_Traits> &,unsigned char &)" 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> c:\program files\microsoft visual studio 9.0\vc\include\istream(155): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_istream<_Elem,_Traits> &(__cdecl *)(std::basic_istream<_Elem,_Traits> &))" 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> 1> ] 1> c:\program files\microsoft visual studio 9.0\vc\include\istream(161): oder "std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::operator >>(std::basic_ios<_Elem,_Traits> &(__cdecl *)(std::basic_ios<_Elem,_Traits> &))" 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char> //////// Dies Wiederholt sich so ziemlich oft, leicht verändert. 1> ] 1> bei Anpassung der Argumentliste '(std::istream, int [5])' 1>Das Buildprotokoll wurde unter "file://c:\Users\Korb\Desktop\C++\Test\Test\Debug\BuildLog.htm" gespeichert. 1>Test - 1 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
-
Hi
Wenn du
#include <iostream> using namespace std; int main() { int a[5]; int quersumme; cout << "Geben Sie eine vierstellige Zahl ein: "<< endl; cin >> a[0]; // Richtig quersumme = a[0] + a[1] + a[2] + a[3]; cout << "Quersumme: " << quersumme << flush; }schreibst, ist der Fehler weg
lg c4f
-
Ähm danke Don06, aber das ist insgesamt noch ein bisschen zu hoch gegriffen für mich!

-
@don06
Die obige Version des Codes weist bei mir noch fehler auf die etwas mit dem atoi zu tun haben.
-
http://www.cplusplus.com/reference/clibrary/cstdlib/atoi.html
atoi erwartet wohl einen const char* als Parameter. Das ist umständlich...