Newbie Aufgabe bitte anschauen!!
-
Ich programmiere erst seit zwei Wochen und nun muss ich dieses Programm schreiben:
Lesen Sie eine Anzahl (<10) Ziffernzeichen von der Tastatur ein und speichern Sie die Zeichen in einem char-Feld (string) ab. Verfahren Sie anschließend wie folgt:
- Konvertieren Sie die eingegebene Folge von Ziffernzeichen in eine
entsprechende Integer-Zahl.
- Dividieren Sie die ermittelte Integer-Zahl durch die Anzahl eingegebener
Ziffernzeichen.Es hört sich ja einfach an, aber ich komm nicht auf die Lösung.
Hoffentlich kann mir es einer verständlich rüberbringen.Schon mal ein fettes Danke an Alle die mir helfen wollen.
-
Was hast du bis jetzt davon geschafft? Etwa Nichts?

-
Hi,
An welcher Stelle hast du denn Probleme. Zeig mal deinen Ansatz!
-
Benutz mal die Forensuche, ich bin noch nicht lang hier im Forum, aber so ne Frage hab ich schon mindestens 5x hier gelesen.
-
eigentlich hab ich noch fast nix geschafft, wie gesagt hatte erst insgesamt 6std. C++. Mit dem Umwandeln hab ich Probleme, da ich ja ne Ziffernkette in eine Integerzahl umwandeln soll. Mit den Funktionen atoi oder strtol komm ich auch nicht weiter.
-
da gibts verschiedene möglichkeiten:
eine findest du in der c++ faq ganz unten auf der seite.
und versuche das nächste mal, einen AUSSAGEKRÄFTIGEN titel für deinen thread zu wählen. sprich: inhaltlich.
-
Mal ein kleiner Ansatz:
#include <iostream> using namespace std; int main() { char str[10]; // ... Tastatureingabe in str rein schreiben int num = ... int len = ... cout << num / len << endl; }Jetzt musst du nur noch was für die "..." rein schreiben, dann bist du fertig

-
Danke für den Ansatz, aber es sollte eine char ziffernkette eingelesen werden und dann in eine Integerzahl konvertiert werden. es ist nicht sinn und zweck der sache die angaben im quellcde einzubinden. es soll erst einmal von der tastatur mit cout und cin eingelesen werden und, dann kommt erst die konvertierung. zum schluss muss man dann in jedem Fall strlen benutzen um immer die richtige länge zu haben, was ja auch nicht so schwierig ist, aber bei dieser verdammten umwandlung bleib ich hängen! ich weis nicht wie ich es machen soll
-
ludga schrieb:
Mit den Funktionen atoi oder strtol komm ich auch nicht weiter.
Geht's auch ein wenig genauer?
-
Hier mein Vorschlag. Da du aber was lernen sollst, habe ich bei der Konvertierung der einzelnen Stellen in die Integerzahl einen kleinen Fehler eingebaut, die Lösung solltest du selber finden ;-).
#include <iostream> #include <cmath> using namespace std; int main() { char zahlen[10], *zp = zahlen; cout << "Bitte eine Zahl mit maximal 9 Stellen eingeben (mehr Stellen werden ignoriert)\n"; // Einlesen while( cin.get(*zp) && (*zp != '\n') && (zp-zahlen) < 9) ++zp; int iZahl = 0, len = zp-zahlen; for( int i = 0; i < len; ++i ){ int exponent = len-i-1; // In der folgenden Zeile stimmt etwas nicht ;-) iZahl += zahlen[i]*pow(10.0,exponent); // Hilft vielleicht beim Loesen des Problems // Tip: Als Eingabe 12345... probieren cout << (int)zahlen[i] << " "; } cout << endl << "Eingegebne Zahl: " << iZahl << endl; double z = (double)iZahl / len; cout << "Zahl durch Anzahl der Stellen " << z << endl; return 0; }
-
Leider nicht, noch hab ich zu wenig ahnung von der ganzen materie, ich hab nur
in einem buch gelesen, dass so strings in integerzahl konvertiert werden können.
-
Am besten sagst du dem Lehrer das du es nicht kannst und keine Lust hast dir es beizubringen.
-
Danke Fehlerteufel, ber ich hab da noch ne Frage:
was bedeutet zp-zahlen,*zp ist doch nur ne deklaration, oder?
und wieso exponent, wird darüber die eine integerzahl bestimmt?
-
Ich nehme mal an, du meinst die Zeile
char zahlen[10], *zp = zahlen;"zahlen" ist ein Array mit Platz für zehn Zeichen. "zp" ist ein Zeiger auf ein Zeichen (char), der zu Anfang auf das erste Zeichen von "zahlen" zeigen soll.
(achja, zur Umwandlung empfehle ich einen Blick in die C++-FAQ, da gibt es elegantere Lösungen ;))
-
CStoll schrieb:
(achja, zur Umwandlung empfehle ich einen Blick in die C++-FAQ, da gibt es elegantere Lösungen ;))
Natürlich gibt es da elegantere Möglichkeiten (und er hat ja auch schon davon gesprochen), aber da lernt man deutlich weniger. Aber wenn er noch nicht mal die einfache Zeigerarithmetik versteht, sollte er meinen Code eh nicht abgeben, da sein Lehrer sofort sehen würde, dass es nicht von ihm ist.
-
vielleicht helfen Dir ein paar mathematischen Grundlagen weiter.
- eine zahl mit 10 multiplizieren heißt alle ziffern um 1 nach links schieben und 'ne 0 ranhängen.
- wenn eine zahl auf 0 endet, und Du eine ziffer dazuaddierst, dann endet die zahl genau auf diese ziffer.
Du kannst also Deine eingelesene Ziffernkette zeichen für zeichen abarbeiten.
Außerdem sind die Ziffern hintereinander angeordnet (askii) d.h. '0' + 5 = '5'
('x' ist ein char). einfaches umstellen der gleichung sollte Dir 'nen tip geben, wie man aus einem Char eine Zahl bekommen kann.Viel Spaß und durchhalten, jeder fängt mal an...