#c
#c
Вопрос:
#include <iostream>
#include <math.h>
#include <iomanip>
#include <tchar.h> using namespace std;
int _tmain(int argc, _TCHAR* argv[]) {
setlocale(LC_CTYPE, "Russian");
double x;
for (x = 2; x < 6.3; x 0.4);
{
double Rez, Rez1;
Rez = pow(x, 4) 2 * pow(x, 2) 3;
Rez1 = cos(3 * x) exp(-2 * x);
cout << Rez << Rez1;
}
system("Pause");
return 0;
предполагается, что он подсчитывает уравнения с каждым значением X в диапазоне от 2 до 6,3 с шагом 0,4
он же 2, 2.4, 2.8 и т.д.
Комментарии:
1. И что он делает вместо этого? Есть ли сообщение об ошибке?
2. Я настоятельно рекомендую включить больше предупреждений , если вы их не видите.
3. Если вместо «x 0.4)» я набираю =, отображается «1762.640.939223». Это … * слишком * большое число, чем мне нужно, но здесь оно даже не показывает ошибки, просто нет вывода.
4.
x 0.4
не изменяетсяx
, поэтомуx < 6.3
останется true навсегда, и ваш цикл никогда не завершится. Возможно, вам также следует напечатать пробел между вашими двумя выводами, чтобы их было легче читать.5. Причина включения дополнительных предупреждений заключается в том, что компилятор может сказать вам, что
for (x = 2; x < 6.3; x 0.4);
это, вероятно, ошибка (последняя точка с запятой создает пустой блок и означает, что ваш блок с отступом не контролируется циклом).
Ответ №1:
Проблема была с последней точкой с запятой, как кто-то предложил в комментариях. Только из-за этой точки с запятой значение x было увеличено выше 6,4 на 1-й итерации, и выполнялась только 1 итерация. Также переменная x должна быть увеличена соответствующим образом! Вот рабочий код:
#include <iostream>
#include <math.h>
#include <iomanip>
#include <tchar.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_CTYPE, "Russian");
double x=2;
for ( x = 2 ; x < 6.3; x = x 0.4 )
{
double Rez, Rez1;
Rez = pow( x, 4) 2 * pow( x, 2) 3;
Rez1 = cos(3 * x) exp(-2 * x);
cout <<"Result 1:" <<Rez <<" Result 2:"<< Rez1<< endl;
}
system("Pause");
return 0;
}