Другие языки программирования и технологии

Помогите с программой на C++! (Вывод квадратов чисел от 1 до 20). Не знаю, что не так.

#include <iostream>

#include <math.h>

using namespace std;

int main()

{

int i;

for (i = 1; i <= 20; i++)

i = pow(i, 2);

cout << i << endl;

system("pause");

return 0;

}

Выводит число 26, а должно быть:

2

3

9

16

и т. д. до 400
Karl Volf
Karl Volf
2 786
#include <iostream>

#include <cmath>

using namespace std;

int main()

{

int i;

for (i = 1; i <= 20; i++)

double Qi = pow(i, 2);

cout << Qi << endl;

system("pause");

return 0;

}

using namespace std - зло.. . Отучайся от этого костыля.
Tonik Martirosyan
Tonik Martirosyan
5 854
Лучший ответ
Karl Volf Вы хотите сказать, что нужно прописывать все команды самому?
#include <iostream>
int main() {
for (int i = 0; ++i <= 20; std::cout << i * i << '\n');
std::cin.get();
}
for (i = 1; i <= 20; i++)
i = pow(i, 2);
гонит цикл обсчёта i (зачем то его переприсваивая на вычисленное по ходу)
а потом i выводится.

надо
for (i = 1; i <= 20; i++){ // !!!группирующая скобка, раз несколько действий внутри
double ii = pow(i, 2); // а не перезапись i
cout << ii << endl;
}
или проще
for (i = 1; i <= 20; i++)cout << i*i << endl;
ВЛ
Виктор Лосев
27 060
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int i;
for (i = 1; i <= 20; i++)
cout << pow(i, 2) << endl;
system("pause");
return 0;
}
Совершенно согласна с Лилей Калиде.
Нужны группирующие скобки.

Иначе вы выполняете не весь цикл, а только 1 оператор (при этом изменяя i), а потом когда i станет >20 делаете вывод.

Т. е.

1. i=1; i=pow(1,2)=1; i=i++=1+1=2

2. i=pow(2,2)=4; i=i++=4+1=5

3. i=pow(5,2)=25; i=i++=25+1=26

4. 26>20 поэтому выходим из цикла и выводим i=26