21.06.2018, 22:35 [+3 UTC]
в нашей команде: 2 853 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Форум:
18.06.2018, 08:55

Последний вопрос:
21.06.2018, 15:40

Последний ответ:
21.06.2018, 06:26

Последняя рассылка:
21.06.2018, 03:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
13.12.2010, 12:57 »
Detsle
Спасиибо огромное))) оч помогли...нереально выручили! [вопрос № 181292, ответ № 264713]

РАЗДЕЛ • С / С++

Создание программ на языках C и C++.

[администратор рассылки: Андрей Кузнецов aka Dr_Andrew (Старший модератор)]

Лучшие эксперты в этом разделе

CradleA
Статус: Профессор
Рейтинг: 147
solowey
Статус: Студент
Рейтинг: 88
Асмик Гаряка
Статус: Советник
Рейтинг: 34

Перейти к консультации №:
 

Консультация онлайн # 192353
Раздел: • С / С++
Автор вопроса: PavelKotik (Посетитель)
Отправлена: 10.01.2018, 13:11
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Здравствуйте, помогите пожалуйста, мне нужно оформить фрагмент программы, где вычисляется F(x) в виде функции. Подскажите пожалуйста, что нужно сделать?

Приложение:

Состояние: Консультация закрыта

Ответ # 276019 от Лысков Игорь Витальевич (Старший модератор)

Здравствуйте, PavelKotik!
Я бы сделал так:

#include<math.h>
#include<conio.h>
#include<stdio.h>

bool fun(float x, float a, float b, float c, float *F)
{
	if (c<0 && x!=0)
	{
		*F = (-a*x-c);
		return true; 
	}
	else if (c>0 && x==0)
	{
		*F = ((x-a)/(-c));
		return true;
	}
	else if (fabs(x-a) < 0.0001)
		return false;
	else
	{
		*F = ((b*x)/(x-a));
		return true;
	}
}

//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
	float x,F,dx,x1,x2,a,b,c;

	printf("Vvedite X-nachalnoe: "); scanf("%f",&x1);
	printf("Vvedite X-konechnoe: "); scanf("%f",&x2);
	printf("Vvedite dx: "); scanf("%f",&dx);
	printf("Vvedite a: "); scanf("%f",&a);
	printf("Vvedite b: "); scanf("%f",&b);
	printf("Vvedite c: "); scanf("%f",&c);

	for (x=x1; x<=x2; x+=dx)
	{
		if (fun(x,a,b,c,&F))
			printf("\n x=%5.2f F=%5.2f ", x, F);
		else
			printf("\n x=%5.2f Error",x);
	}

	getch();
	return 0;
}

Несколько замечаний:
1) Т.к. возможен вариант недопустимости аргументов, то пришлось возвращать признак корректности параметров.
А результат возвращать по указателю на переменную.
2) Сравнение двух вещественных чисел на совпадение надо делать только на сравнение модуля их разности с маленьким числом!
3) Ну и заменил цикл while на for. Он тут более к месту.


Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 10.01.2018, 16:12

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 192353

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 1

= общий = | 10.01.2018, 16:04 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
PavelKotik:

Я бы сделал так:

#include<math.h>
#include<conio.h>
#include<stdio.h>

bool fun(float x, float a, float b, float c, float *F)
{
	if (c<0 && x!=0)
	{
		*F = (-a*x-c);
		return true; 
	}
	else if (c>0 && x==0)
	{
		*F = ((x-a)/(-c));
		return true;
	}
	else if (fabs(x-a) < 0.0001)
		return false;
	else
	{
		*F = ((b*x)/(x-a));
		return true;
	}
}

//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
	float x,F,dx,x1,x2,a,b,c;

	printf("Vvedite X-nachalnoe: "); scanf("%f",&x1);
	printf("Vvedite X-konechnoe: "); scanf("%f",&x2);
	printf("Vvedite dx: "); scanf("%f",&dx);
	printf("Vvedite a: "); scanf("%f",&a);
	printf("Vvedite b: "); scanf("%f",&b);
	printf("Vvedite c: "); scanf("%f",&c);

	for (x=x1; x<=x2; x+=dx)
	{
		if (fun(x,a,b,c,&F))
			printf("\n x=%5.2f F=%5.2f ", x, F);
		else
			printf("\n x=%5.2f Error",x);
	}

	getch();
	return 0;
}

Несколько замечаний:
1) Т.к. возможен вариант недопустимости аргументов, то пришлось возвращать признак корректности параметров.
А результат возвращать по указателю на переменную.
2) Сравнение двух вещественных чисел на совпадение надо делать только на сравнение модуля их разности с маленьким числом!
3) Ну и заменил цикл while на for. Он тут более к месту.

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

PavelKotik
Посетитель

ID: 401557

# 2

= общий = | 10.01.2018, 16:05 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Спасибо вам большое

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14292 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.47 от 16.04.2018