Funktion "Tausch" gesucht
-
Ok...
also ich bin jetzt soweit gekommen:
#include <iostream>
using namespace std;int main(void)
{
int i=0, n=0;
int a[10]={1,2,3,4,5,6,7,8,9,10};
cout << "Herzlich Willkommen!";
cout << endl;
for (int i = 0; i < 10; i++)
cout << a[i] << " ";
i=0;
cout << endl;cout << endl;
cout << "Bitte geben Sie die Haeufigkeit der Verschiebung ein:"; cin>> n;int s,p;
while(i!=n)
{
a[9]=s;
for(p=10;p>0;p--)
a[p]=a[p-1];
a[0]=s;
i++;for (int i = 0; i < 10; i++)
cout << a[i] << " ";
cout << endl;
}}
nur da ist ein fehler den ich nicht erkenne.
wenn ich jetzt z.b. 3 eingebe kommt:
10 10 10 1 2 3 4 5 6 7
also die vorherigen zahlen übernimmt es irgendwie nicht.. wo ist mein fehler???
-
#include <iostream> using namespace std; int main(void) { int i=0, n=0; int a[10]={1,2,3,4,5,6,7,8,9,10}; cout << "Herzlich Willkommen!"; cout << endl; for (int i = 0; i < 10; i++) cout << a[i] << " "; i=0; cout << endl;cout << endl; cout << "Bitte geben Sie die Haeufigkeit der Verschiebung ein:"; cin>> n; int s,p; while(i!=n) { a[9]=s; for(p=10;p>0;p--) a[p]=a[p-1]; a[10]=s; i++; for (int i = 0; i < 10; i++) cout << a[i] << " "; cout << endl; } }nochmal hingeschrieben... wegen der übersichtlichkeit

-
Für mich sieht das eher aus wie eine Endlosschleife. Wodurch wird den deine while Schleife abgebrochen?
Ich weiß zwar nicht, ob Du das willst, aber nach deinen Einrückungen zufolge, müsstest Du die for Schleifen mit Klammern versehen. Ob das stimmt, weiß ich nicht. Sonst hast Du eine schlechte Lesbarkeit! Ich schau mir den Code jetzt mal an, aber das sind so die ersten Dinge, die mir auffallen.
Außerdem:
cout << endl; cout << endl; // == cout << endl << endl;lg, freakC++
-
Es gibt ein paar sinnlose Stellen und Fehler im Code.
Hier mal kommentiert und richtig eingerückt:
#include <iostream> using namespace std; int main(void) { int i=0, n=0; int a[10]={1,2,3,4,5,6,7,8,9,10}; cout << "Herzlich Willkommen!"; cout << endl; for (int i = 0; i < 10; i++) cout << a[i] << " "; i=0; // Unnötig, da das i in der for-Schleife das i außerhalb überdeckt cout << endl;cout << endl; // ? Unnötig cout << "Bitte geben Sie die Haeufigkeit der Verschiebung ein:"; cin >> n; int s,p; // Initialisierung von s und p while(i!=n) { a[9]=s; // Was ist jetzt a[9] ? for(p=10;p>0;p--) a[p]=a[p-1]; // a[10] existiert nicht a[10]=s; // " " i++; for (int i = 0; i < 10; i++) cout << a[i] << " "; cout << endl; } }MfG,
ScRaT
-
life schrieb:
Schau dir doch einfach die STL Implementierung an:
Deine Version sieht aber nicht danach aus.
#include <iostream> using namespace std; int main(void) { int a[10]={1,2,3,4,5,6,7,8,9,10}; int n; cout << "Herzlich Willkommen!" << endl; for (int i = 0; i < 10; i++) cout << a[i] << " "; cout << endl << endl; cout << "Bitte geben Sie die Haeufigkeit der Verschiebung ein:"; cin >> n; int middle=10-n; int first=0; int next=middle; int last=10; while (first!=next) { swap (a[first++],a[next++]); if (next==last) next=middle; else if (first==middle) middle=next; } for(int i=0;i<10;i++) cout << a[i] << " "; }
-
Achte darauf, dass Du auf nicht auf nichtvorhandene Arrayelemente zugreifst! Das ist gar nicht lecker.
Jetzt hast Du deinen Code ja freihaus geliefert bekommen. Eigentlich sollte alles klar sein. Du kannst nun als Ergänzung noch einbauen, dass Du beliebig oft den Vorgang durchführen kannst und das Programm nicht nach einem Durchlauf geschlossen wird. Außerdem kannst Du dein Programm auf ein Array mit n Elementen optimieren. Wenn Du das machst, dann beeindruckst Du deinen Prof bestimmt
.lg, freakC++