so mein Programm soll wie folgt funktionieren:Programm funktioniert nicht richtig
- Eingangs ganzen Zahlen n und m (zum Beispiel n = 1, m = 10)
- Eingang alle Werte von n zu m (zum Beispiel 1; 2; 3; 4; 5; 6; 7; 8; 9; 10) in ein dynamisches Array
- Dann mit Bool-Funktion müssen Sie das dynamische Array für 2 Zahlen, die quadriert sind und suchen summiert zusammen und machen eine Art von 3. Nummer (zum Beispiel 1 * 1 + 1 * 1 = 2; 2 * 2 + 2 * 2 = 8 usw. etc)
Das Programm druckt aus irgendeinem Grund entweder nur die erste Kombination aus oder druckt überhaupt nichts aus (zum Beispiel, wenn n = 1 und m = 10, es nur 1 * 1 + 1 * 1 = 2 ausdruckt, aber es sollte Vordruck 2 * 2 + 1 * 1 = 5; 2 * 2 + 2 * 2 = 8 etc etc, wenn n = 4 und m = 200 es wird nicht einmal etwas überdrucken). Wo könnte das Problem sein? Ich bin seit Stunden festgefahren und in meinem Kopf sollte das Programm funktionieren, tut es aber nicht. Danke vielmals.
#include <iostream>
using namespace std;
bool isSquared (int i){
// bool result = false;
//int div;
//int *squares = new int [i];
for (int j=1;j<=i;j++){
for (int k=1;k<=i;k++){
if (k*k + j*j == i) return true;
else return false;
}
}
}
int main()
{
int n,m,i,size;
cin >>n;
cin >>m;
size = m - n;
int *real = new int [m - n];
for (int q=0, j=n; q<size, j<=m; q++, j++){
real[q] = j;
}
for (int q=0; q<=size; q++){
cout <<real[q] <<" | ";
}
cout <<endl;
for (int i=n; i<=m; i++){
if (isSquared(i) == true){
for (int j=0; j<=size; j++){
for (int k=0; k<=size; k++){
if (real[j]*real[j] + real[k]*real[k] == i){
cout <<i <<"=" <<real[j] <<"*" <<real[j] <<"+" <<real[k] <<"*" <<real[k] <<endl;
}
}
}
}
}
return 0;
}
Das richtige Werkzeug zu lösen, so Probleme ist Ihr Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –
Hinweis: 'für (int k = 1; k <= i; k ++) {' Warum brauchen Sie diese Schleife, wenn Sie beim ersten Vergleich trotzdem zurückkehren? – drescherjm
@drescherjm das ist die Sache, wie kann ich die Funktion stoppen, wenn es den ersten Vergleich erhält. – jcoe