Kleine Aufgabe mit For-Schleifen und Feldern
-
Hallo Leute,
habe ein Problem mit der folgenden Aufgabe. Wie schaffe ich den Teil mit der umgekehrten Ausgabe in einem zweiten Feld. Komme da nicht so wirklich weiter..
Danke schon einmal.
Rainstuff- Schreiben Sie ein C++-Programm, dass mit Hilfe von Schleifen 10 ganze Zahlen in ein Feld
einliest, das Feld ausgibt, dann die Inhalte vom ersten Feld in ein zweites Feld in
umgekehrter Reihenfolge speichert und schließlich das zweite Feld ausgibt.
#include <iostream>
#include <iomanip>
using namespace std;int main ()
{ int i, k;
int feldeins[4];
int feldzwei[4];for (i=0; i<=4; i++)
{cout<<">";
cin>>feldeins[i];
}for (i=feldeins[0]; i<=feldeins[4]; i++)
{cout<<i<<endl;
}for (k=feldzwei[0]; k<=feldzwei[4]; k++)
{cout<<k<<endl;
}
system("Pause");
return 0;}
- Schreiben Sie ein C++-Programm, dass mit Hilfe von Schleifen 10 ganze Zahlen in ein Feld
-
Äh, du schaffst nicht mal die Ausgabe des ersten Felds.
-
1. Benutze bitte die Code Tags (Es gibt dafür einen Code Button, wenn du einen neuen Beitrag erstellst), sonst ist das ganze etwas schwer zu lesen...
2. Wenn in der Aufgabe 10 steht, warum nimmst du dann 4 Zahlen???;)
#include <iostream> #include <iomanip> using namespace std; #define FIELDCOUNT 10 // Empfehlung int main () { int i, k; int feldeins[FIELDCOUNT]; int feldzwei[FIELDCOUNT]; for (i=0; i<=FIELDCOUNT; i++) { cout<<">"; cin>>feldeins[i]; } for (i=feldeins[0]; i<=feldeins[4]; i++) // Fehler { cout<<i<<endl; } for (k=feldzwei[0]; k<=feldzwei[4]; k++) // In feldzwei hast du doch nie was reingeschrieben... { cout<<k<<endl; } system("Pause"); return 0; }
-
Habe erst einmal vier Zahlen genommen, damit es beim ausprobieren schneller geht. Das ich bei diesem Quelltext noch nichts ins zweite Feld eingelesen habe,
liegt daran, dass meine bisherigen Versuche nur Müll ergeben haben.
Was meinst du mit dem Fehler?
-
Ach ja und das erste Feld habe ich eigentlich schon ausbekommen.
-
Der Fehler ist das Du den Inhalt von feldein[0] an i zuweist. Der muß aber nicht gleich 0 sein. Schließlich gibt der Benutzer die Werte ein.
Und Du läufst die Schleife so oft durch bis i den Wert von feldeins[4] erreicht. Auch der wird vom Benutzer eingegeben.for (i= 0; i<=FIELDCOUNT; i++) { cout<<i<<endl; }Willst Du eigentlich wirklich den Wert von i in der Schleife ausgeben?
Oder habe ich den Sinn des Programms falsch verstanden?
-
Au ha, stimmt, habe dummerweise immer ein schlechtes Beispiel eingegeben.
Also, ich will natürlich "einfach" nur das Feld einlesen, ausgeben, verdrehen und im zweiten Feld dann speichern und ausgeben. Vieleicht ne Hilfestellung?
Jetzt muss ich die ganze Sache nochmal überdenken.
-
Rainstuff schrieb:
- Schreiben Sie ein C++-Programm, dass mit Hilfe von Schleifen 10 ganze Zahlen in ein Feld
einliest, das Feld ausgibt, dann die Inhalte vom ersten Feld in ein zweites Feld in
umgekehrter Reihenfolge speichert und schließlich das zweite Feld ausgibt.
Ahh, jetzt!
Das Drehen:
k = FIELDCOUNT - 1; for (i= 0; i<FIELDCOUNT; i++) { feldzwei[k-i] = feldeins[i]; }Hoffe das es jetzt das ist was Du suchst.

- Schreiben Sie ein C++-Programm, dass mit Hilfe von Schleifen 10 ganze Zahlen in ein Feld
-
#define FIELDCOUNT 10 :rage:> bööööse
const int FIELDCOUNT = 10;> liiieb

-
Ok, danke das mit dem drehen verstehe ich jetzt schon einmal.
Aber wie gebe ich denn das gesamte Feld aus?
-
Genau wies einlesen. Nur mit cout.
-
Jo, so läuft es. Besten Dank. Hat etwas gedauert...Strom war weg.

-
.. und zum Abschluß die Lösung für alle Freunde der STL

#include <iostream> #include <iterator> #include <algorithm> #include <sstream> #include <stdexcept> struct Getter // Input-Funktor { void operator()( int& x ) { using namespace std; cout << ">"; cin >> x; } }; int do_main() { using std::cout; using std::endl; const int ANZ = 10; int feld1[ANZ]; try { std::cin.exceptions( std::ios_base::failbit | std::ios_base::badbit ); std::for_each( feld1, feld1 + ANZ, Getter() ); // Eingabe (s.o.) } catch( const std::exception& err ) { std::stringstream buf; buf << "Fehler bei der Eingabe: " << err.what(); throw std::runtime_error( buf.str() ); } std::copy( feld1, feld1 + ANZ, // Eingabe ausgeben std::ostream_iterator< int >( cout << "Ihre Eingabe: \n", " ") ); cout << endl; int feld2[ANZ]; std::copy( feld1, feld1 + ANZ, // in umgekehrter Reihenfolge kopieren std::reverse_iterator< int* >( feld2 + ANZ ) ); std::copy( feld2, feld2 + ANZ, // neues Feld 'feld2' ausgeben std::ostream_iterator< int >( cout << "Reverse: \n", " ") ); cout << endl; return 0; } int main() { try{ return do_main(); } catch( const std::exception& err ) { std::cerr << "FEHLER: " << err.what() << std::endl; return -1; } }Gruß
Werner