![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Tribunal |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
Вот такая задача:
Вычислить и вывести на экран в виде таблицы значения ф-ии F на интервале от X До Хк с шагом dx. f=a(x+7)^2-b,при x<5,b<>0; (x-cd)/dx,при x>5,b=0; x/c,в остальных случаях. где a,b,c,d-действительные числа. Ф-ия F должна принимать действит.значения,ели выражение (Aц ИЛИ Вц) ИЛИ (Aц ИЛИ Сц) не равно нулю ,и целое в противном случае. Через Aц,Вц,Сц обозначены целые чсти значений a,b,c, операция ИЛИ-поразрядная. ... программу на С пишу в первый раз. помогите ,пожалуйста, разобраться. почему-то результат всегда считается по последнему условию... а условие,которое обозначено ** вообще не принимается компилятором... ошибки наверняка синтаксические...и глупые...( #include <iostream.h>
int main()
{
int x,xk,dx;
float a,b,c,d,f;
x= 1;
xk= 10;
dx= 2;
cout << "What is..a=";
cin >> a;
cout << "b=";
cin >> b;
cout << "c=";
cin >> c;
cout << "d=";
cin >> d;
while (x<xk)
{
if (x<5 && b!=0)
{
f=a*(x+7)*(x+7)-b;
}
if (x>5 && b==0)
{
f=(x-c*d)/dx;
}
else f=x/c;
if (int(a) | int(b))|(int(a) | int(c)) f=int(f); **
cout << f;
cout << " \n";
x=x+dx;
};
}
-------------------- irreparabilium felix olivio rerum
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
#include <iostream.h>
int main()
{
int x,xk,dx;
float a,b,c,d,f;
x= 1;
xk= 10;
dx= 2;
cout << "What is..a=";
cin >> a;
cout << "b=";
cin >> b;
cout << "c=";
cin >> c;
cout << "d=";
cin >> d;
while (x<xk) {
if (x<5 && b!=0) {
f=a*(x+7)*(x+7)-b;
}
else // <--- Ты забыла ELSE
if (x>5 && b==0) {
f=(x-c*d)/dx;
}
else f=x/c;
if(! ((int(a) | int(b)) | (int(a) | int(c))) ) f = int(f);
cout << f << " \n";
x=x+dx;
};
return 0;
}
Ну, а с If-ом у тебя во-первых не было скобок, охватывающих все выражение (в С/С++ это обязательно), а во-вторых - условие должно быть обратным... У тебя получалось, что функция принимает ЦЕЛЫЕ значения, когда выражение НЕ равно нулю.P.S. Почему не сделать через for? В С++ переменной цикла for можно задавать любой шаг... |
Tribunal |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 233 Пол: Женский Реальное имя: Dasha Репутация: ![]() ![]() ![]() |
про For не знала ....спасибо)
вот еще...проблемка возникла со структурированием... это та же задача,только с функциями... программа постоянно выдает результат 0. что не так?помогите разобраться #include <iostream.h>
float a,b,c,d,f,x,xk,dx;
//------------------------------------------------------------------------------
void result_1(float res)
{
res=a*(x+7)*(x+7)-b;
}
//------------------------------------------------------------------------------
void result_2(float res)
{
res=(x-c*d)/(a*x);
}
//------------------------------------------------------------------------------
void result_3(float res)
{
res=x/c;
}
//------------------------------------------------------------------------------
void check_1()
{
if (x<5 && b!=0) result_1(f);
else
if (x>5 && b==0) result_2(f);
else result_3(f);
}
//------------------------------------------------------------------------------
void check_2()
{
if (! ((int(a) | int(b)) | (int(a) | int(c))) ) f=int(f);
}
//------------------------------------------------------------------------------
int main()
{
x= 1;
xk= 10;
dx= 2;
cout << "What is..a=";
cin >> a;
cout << "b=";
cin >> b;
cout << "c=";
cin >> c;
cout << "d=";
cin >> d;
while (x<xk)
{
check_1;
check_2;
cout << f << "\n";
x=x+dx;
}
}
-------------------- irreparabilium felix olivio rerum
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
void result_1(float res)
{
res=a*(x+7)*(x+7)-b;
}
Что, по-твоему, делает эта функция? Изменяет переменную, передаваемую ей как параметр? Ни в коем случае - ты передаешь по значению, а не по ссылке (в Паскале Var перед именем переменной в списке параметров подпрограммы помнишь?), так что локально (в самой функции) значение меняется, а вот назад оно не передается, и в глобальную переменную тоже не записывается, как ты этого хотела бы ![]() Если ты пишешь на С++, то передавай ссылку на float void result_1(float &res)
{
res=a*(x+7)*(x+7)-b;
}
В остальных функциях, принимающих значение, и меняющих ИХ же - точно так же, передавай ссылки...P.S. Я бы все-таки пересмотрел программу, и заменил процедуры (функции возвращающие void) на обычные функции, возвращающие результат... |
![]() ![]() |
![]() |
Текстовая версия | 10.09.2025 6:03 |