Арифметические опеации с группами чисел

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
ТВиктор
Сообщения: 5
Зарегистрирован: 14 авг 2007, 00:32

10 ноя 2007, 13:16

Помогите плз ресурсом или исходным кодом:
Напишите программу, предоставляющую пользователю возможность совершать арифметические операции с группами чисел, используя названия этих операций. Пользователь должен вводить строки следующего вида:
[название операции]([список аргументов, разделённых запятой]). Пробелы и другие символы, кроме разделяющей запятой, не допускаються!

Вывод: Результат операции или сообщение об ошибочном вводе / невозможности проделать действия.

Доступные названия операций:
SUM - сумма. SUM(a1, a2, a3 ...) = a1 + a2 + a3 + ...
SUB - разность. SUB(a1, a2, a3 ...) = a1 - a2 - a3 - ...
PROD - произведение. PROD(a1, a2, a3 ...) = a1 * a2 * a3 * ...
DIV - частное. DIV(a1, a2, a3 ...) = a1 / a2 / a3 - ...
AVG - среднее арифметическое. AVG(a1, a2, a3 ...) = (a1 + a2 + a3 + ...) / N (N-количество аргументов)
AVG_G - среднее геометрическое. AVG_G(a1, a2, a3 ...) = корень N-ой степени из (a1 * a2 * a3 ...) (N - колисество аргументов)
Тип аргументов - с плавающей точкой, количество аргументов неограниченно.
Разбор вводимой строки и выполнение операций оформить в виде функций.

Пример ввода:
SUM(23.33,3333.44,8765.0,111)
Ошибочный ввод:
sum(23.33,33333.44,8765.0,111)
PROD(1, 2, 3, 4)
qqq jjjjjj jjjjjj

Необходимые проверки:
1. На правильность ввода строки(имя операции и формат строки аргументов)
2. На возможность совершать арифметические операции (деление на ноль, вычисление корня четной степени из отрицательного числа, ошибка памяти и пр.)

у меня Microsoft Visual Studio 2005.
Аватара пользователя
Vladimir89
Сообщения: 75
Зарегистрирован: 21 май 2007, 02:25

13 ноя 2007, 04:11

Скорее громоздкая чем трудная задача. Я не могу себе позволить написать тут весь код программы но алгоритм хочу подсказать:
-создать функцию котоая будет получать строку и определять что нужно с числами сделать (возвращать ей лучше числа от 1 до 6 и 0 в случае ошибки).
-создать функцию которая получает строку и вытаскивает оттуда первое число (функция atoi для этого пригодиться)
-создать функцию которая определяет вид оперцаии (умножение, сложение...), создает переменную, в которую кладет в определенной последовательности (по сути складывает, умножает считает среднее...) числа из строки
-создать функцию которая реализует все эти функции вместе (можно ее сделать main)

А реализуется такое следующим образом: ты считываешь первое число из строки, потом (когда оно тебе уже становиться ненужно) перемещаешь указатель на его длинну + 1 (чтобы проскочить запятую). И так по циклу. Можно все эти числа положить в динамический массив размерностью strlen(введенная пользователем строка), и потом уже сделать с ними что угодно.
Если ты разбираешь в програмировании то теперь у тебя не должно быть проблем... а если ты это не можешь понять и сделать то, всё плохо.
Си ++
Здоровье --
Ответить