Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [C++] Problem mit Schleifen und Arrays (https://www.delphipraxis.net/103149-%5Bc-%5D-problem-mit-schleifen-und-arrays.html)

The Lord 11. Nov 2007 12:59


[C++] Problem mit Schleifen und Arrays
 
Hi,

also ich musste anfangen in C++ zu programmieren und stoße des öfteren auf Probleme. Meistens finden sich die Fehler in der Schreibweise. Hier versteh ich nicht, warum es nicht so funktioniert, wie es soll:

Erstmal der Quellcode:

Code:
int zahlen[]={0};
int ergebnisse[]={0};

[...]

int k = 0; //Zählvariable für die Ergebnisse   
   
   for(int i=0;i<n;i++)
   {         
      for(int j=i;j<n;j++)
      {         
         e=zahlen[i]+zahlen[j];         
         cout << zahlen[i] << " + " << zahlen[j] << " = " << e << "\n\n";
         ergebnisse[k]=e;
         k++;
      }
      cout << "-----\n\n\n";      
   }

   for(int i=0;i<10+1;i++)
   {
      cout << i << ": " << ergebnisse[i] << "\n";
   }
Meine Aufgabe ist Zahlen miteinander zu addieren. Die erste Bedingung war, dass sich die Paare nicht wiederholen (also nicht 5+9 und 9+5, außer sie haben das gleiche Ergebnis). Die neue Bedingung ist nun, dass auch keine Ergebnisse mehr doppelt angezeigt werden dürfen.

Ich glaube es geht auch über die Schleifen, weil sich ein bestimmtes Muster ergibt, aber ich habe mir gedacht, dass ich die bereits errechneten Ergebnisse in einem Array speichere und dann mit den neuen Vergleiche und somit entscheide, ob das neue dargestellt werden darf oder nicht.

Aber sobald ich versuche die Ergebnisse in dem gleichnamigen Array zu speichern ändern sich die Ergebnisse selbst. Das verstehe ich nicht und sehe auch nicht wo mein Fehler liegt. Liegt es an der neuen Zählvariablen k?

Ich bin dankbar für jede Hilfe :)

LG Alex

Torpedo 11. Nov 2007 13:09

Re: [C++] Problem mit Schleifen und Arrays
 
Es funktioniert nicht, weil die 2 Arrays beide nur ein Feld haben, also nur ergebnisse[0] und zahlen[0], du aber auf noch mehr zugreifst.

mkinzler 11. Nov 2007 13:11

Re: [C++] Problem mit Schleifen und Arrays
 
Ich nehme mal an das der Array zahlen in ... gefüllt wurde.

The Lord 11. Nov 2007 13:17

Re: [C++] Problem mit Schleifen und Arrays
 
Zitat:

Zitat von mkinzler
Ich nehme mal an das der Array zahlen in ... gefüllt wurde.

Ja. Das habe ich nur weggelassen, weil es ja funktioniert.

Code:
cout << "Anfangswert: \n";
   cin >> start;

   cout << "Schritte: \n";
   cin >> step;

   cout << "Entwert: \n";
   cin >> limit;

   cout << "\n\n";


   
   for(int i=start,j=0;i<=limit;i=i+step,j++)
   {               
      zahlen[j]=i;         
      n=j;
   }

   n=n+1;
Aber ich habe jetzt mal das Array mit den Ergebnisse als ergebnisse[10] deklariert und es funktioniert. Ich muss nur wissen, wieviele Plätze ich maximal brauche.

Torpedo 11. Nov 2007 13:21

Re: [C++] Problem mit Schleifen und Arrays
 
Zitat:

Zitat von The Lord
Ich muss nur wissen, wieviele Plätze ich maximal brauche.

Müssten das nicht unendlich viele sein? 1+1, 1+2, 1+3, ....., 1+unendlich

The Lord 11. Nov 2007 13:26

Re: [C++] Problem mit Schleifen und Arrays
 
Zitat:

Zitat von Torpedo
Zitat:

Zitat von The Lord
Ich muss nur wissen, wieviele Plätze ich maximal brauche.

Müssten das nicht unendlich viele sein? 1+1, 1+2, 1+3, ....., 1+unendlich

Ja!

Ich hab gerade keine gute Idee. Oder ich habe mir überlegt, alle Werte in einem mehrdimensionalen Array zu speichern.
Und am Ende nur die auszugeben, die nicht doppelt vorkommen.

Torpedo 11. Nov 2007 13:28

Re: [C++] Problem mit Schleifen und Arrays
 
Wenn es wirklich bis unendlich geht, dann ist das Programm ja ganz einfach:
Code:
void rechne() {
   cout<<"Ergebnis: unendlich\n";
}
;)
Bist du sicher dass du die Aufgabenstellung richtig verstanden hast?

The Lord 11. Nov 2007 13:37

Re: [C++] Problem mit Schleifen und Arrays
 
Ok also nochmal von ganz vorne:

Die Aufgabe besteht aus 3 Teilen.

Teil a): war trivial. => funktioniert

Teil b): Man soll einen Startwert, den Schritt und einen Entwert zum Füllen eines Arrays benutzen.
z.B. 1,4,13

Also die Zahlen die man verwenden soll sind dann: 1,5,9,13

Dann soll man alle addieren, so dass sie nicht doppelt vorkommen, nur die Ergebnisse dürfen doppelt vorkommen.

=> funktioniert

Teil c): Nun sollen auch die doppelten Ergebnisse nicht mehr angezeigt / berechnet werden.

Also es gibt meiner Meinung nach 2 Lösungsansätze:
1.) Man kann da ein Muster erkennen, aber ich kann es damit nicht umsetzen
2.) Ich wollte die jeweiligen Ergebnisse speichern, nach dem Berechnen vergleichen und dann, falls das Ergebnis vorher nicht berechnet wurde, die Addition darstellen.

Torpedo 11. Nov 2007 13:40

Re: [C++] Problem mit Schleifen und Arrays
 
Ich weiß nicht ob es funktioniert, du kannst es ja mal ausprobieren:
Ich denke es müsste reichen, wenn man so zählt:
1+1
1+2
..
1+endwert
2+2
2+3
...
2+endwert
3+3
3+4
...
3+endwert
...
...
endwert+endwert

The Lord 11. Nov 2007 13:45

Re: [C++] Problem mit Schleifen und Arrays
 
So habe ich es gemacht. Aber ich muss mal schauen, ich habe das nur mit dem Entwert anders...

http://www.nieronator.de/img/addieren.jpg


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz