У меня есть задание от моего учителя, например:
х ^ 2 + у ^ 3 = г
х заполнено только нечетным
у заполнены только четными
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int x,y,z;
int main(){
for (x=1;x<=20;x++){
if ((x%2==1)&&(y%2==0)){
for (y=1;y<=20;y++){
if ((x%2==1)&&(y%2==0)){
z = (x*x) + (y*y*y);
cout << "x^2 + y^3 =" <<z <<"\n";
}
}
}
}
}
Я пытаюсь сделать свой собственный код, как указано выше, но единственный цикл — это Y, x стоит на месте с 1.
Я хочу, чтобы х тоже было зацикливаться. Что я должен делать?
Мое ожидание выхода было бы как:
1^2 + 2^3 = 9
3^2 + 4^3 = 71
5^2 + 6^3 = 241
7^2 + 8^3 = 561
9^2 + 10^3 = 1081
11^2 + 12^3 = 1849
13^2 + 14^3 = 2913
15^2 + 16^3 = 4321
17^2 + 18^3 = 6121
19^2 + 20^3 = 8361
PS. Я извиняюсь за мой плохой английский: D
Это то, что у вас есть:
int main(){
for (x=1;x<=20;x++){
if ((x%2==1)&&(y%2==0)){
for (y=1;y<=20;y++){
if ((x%2==1)&&(y%2==0)){
z = (x*x) + (y*y*y);
cout << "x^2 + y^3 =" <<z <<"\n";
}
}
}
}
}
Проблема первая if ((x%2==1)&&(y%2==0)){
проверять.
После завершения внутреннего цикла for значение y
будет 21. Следовательно, вышеупомянутые условные оценки false
независимо от того, что значение x
является. Как следствие, внутренний цикл for выполняется только один раз. Вы должны сначала удалить это if
заявление.
int main(){
for (x=1;x<=20;x++){
for (y=1;y<=20;y++){
if ((x%2==1)&&(y%2==0)){
z = (x*x) + (y*y*y);
cout << "x^2 + y^3 =" <<z <<"\n";
}
}
}
}
Обновление в ответ на комментарий ОП
Похоже, вам нужен гораздо более простой код.
int main(){
// Start with x = 1 and increment x by 2. It will be always be odd
for ( x = 1; x <= 20; x += 2 ){
// No need to create another loop. y is simply x+1
// Since x is odd, y will be even.
y = x+1;
// Compute the result and print it.
z = (x*x) + (y*y*y);
cout << "x^2 + y^3 =" << z <<"\n";
}
}
Потому что y = 21 после внутреннего цикла y. Так что цикл x не будет выполняться после. Надеюсь, что это полезно.