Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2014, 13:18   #1
shelter09
 
Регистрация: 09.10.2014
Сообщений: 7
По умолчанию Помогите написать функцию.

Составить алгоритм и программу для вычисления задания без использования массивов. Исходные данные должны вводиться последовательно с помощью клавиатуры c проверкой на область допустимых значений для заданного типа.
Вводятся вещественные числа типа float, большие или равные 0, пока не будет введено отрицательное число. Подсчитать, сколько всего будет введено чисел, а также:
Определить произведение наибольшего и наименьшего чисел.

Нужно сделать программу с 2 функциями,одну - проверка на ОДЗ(я её написал) и вторую,где вычисляет min и max и считает их произведение.

Вот что я накидал:
Код:
#include <iostream>
#include <windows.h>
#include <cmath>
using namespace std;
float check(float);
float Toritoki(float);
int main()
{
	SetConsoleOutputCP(1251);
	int b, d;
	double x, y, min = FLT_MAX, max = 0;
	float s;
	d = 0;
	s = 0;
	y = 0;
	do
	{
		d++;
		cout << "введите число ";
		cin >> x;
		x = check(x);
		y=Toritoki(x);
	} while (x >= 0);
	cout << "кол. введенных чисел " << d - 1 << endl << "Произведение чисел" << y << endl;
	return 0;
}

float check(float v1)
{
	double v;
	int r;
	do
	{
		r = 0;
		if (v1 > FLT_MIN && v1 < FLT_MAX || v1 <= 0)
		{
			v = v1;
		}
		else
		{
			cout << "переменная не входит в ОДЗ" << endl << "введите другое число   ";
			cin >> v1;
			r = 1;
		}
	} while (r == 1);
	return (v);
}
float Toritoki(float number)
{
	float max = 0, min = FLT_MAX;
	float res;
	{
			if (max<number) max = number;
			if (min>number) min = number;
	}
	res = min*max;
	return (res);
}
Почему 2ая функция не работает?Постоянно 0 выбивает
shelter09 вне форума Ответить с цитированием
Старый 04.12.2014, 14:45   #2
Scorpius
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 26
По умолчанию

Цитата:
Сообщение от shelter09 Посмотреть сообщение
Почему 2ая функция не работает?Постоянно 0 выбивает
При каждом вызове функции переменные max, min создаются, при выходе с функции удаляются.
Сделайте переменные max, min статическими.

Код:
static float max = 0, min = FLT_MAX;
При объявлении переменной в функции ключевое слово static указывает, что переменная сохраняет свое состояние между вызовами этой функции.
Не всегда говори то, что знаешь, но всегда знай, что говоришь.
Scorpius вне форума Ответить с цитированием
Старый 04.12.2014, 15:02   #3
shelter09
 
Регистрация: 09.10.2014
Сообщений: 7
По умолчанию

У меня в задании ещё сказано:
Выполнить задачу, используя локальные и/или глобальные переменные
Этим тут нельзя никак решить?не через статик,а передавая переменную по адресу например?
shelter09 вне форума Ответить с цитированием
Старый 04.12.2014, 16:07   #4
Scorpius
Пользователь
 
Регистрация: 06.10.2014
Сообщений: 26
По умолчанию

Цитата:
Сообщение от shelter09 Посмотреть сообщение
У меня в задании ещё сказано:
Выполнить задачу, используя локальные и/или глобальные переменные
Этим тут нельзя никак решить?не через статик,а передавая переменную по адресу например?
Передача переменных по адресу:

Код:
float Toritoki(float number, float* valueMin, float* valueMax)
{
	float res;
	{
			if ((*valueMax)<number) (*valueMax) = number;
			if ((*valueMin)>number && number>=0) (*valueMin) = number; //иначе будет постоянно отрицательное в связи с условием ввода
	}
	res = (*valueMin) * (*valueMax);
	return (res);
}
Вызов функции:
Код:
    y=Toritoki(x, &min, &max);
Не всегда говори то, что знаешь, но всегда знай, что говоришь.

Последний раз редактировалось Scorpius; 04.12.2014 в 16:24.
Scorpius вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите пожалуйста написать функцию!!! Оленька1 JavaScript, Ajax 3 07.12.2013 14:49
Помогите написать функцию(Паскаль) Паскалька^^ Помощь студентам 2 15.11.2009 22:47
помогите написать функцию SkCr Microsoft Office Excel 5 14.03.2009 23:47
помогите написать функцию SkCr Помощь студентам 2 14.03.2009 21:24
Помогите написать функцию Черничный Общие вопросы Delphi 4 13.08.2008 07:02