3 / 3 / 1
Регистрация: 10.12.2008
Сообщений: 46
|
|
1 | |
Произведение элементов массива расположенных после максимального по модулю элемента (С)10.06.2009, 10:08. Просмотров 2707. Ответов 8
Метки нет Все метки)
(
Помогите пожалуйста написать программу. Очень буду Вам благодарен, очень срочно надо.
В одномерном массиве состоящем из n вещественных элементов вычислить произведение элементов массива расположенных после максимального по модулю элемента.
0
|
|
10.06.2009, 10:08 | |
Произведение элементов массива, расположенных после максимального по модулю элемента
|
|
26 / 26 / 9
Регистрация: 25.05.2009
Сообщений: 98
|
||||||
10.06.2009, 10:23 | 2 | |||||
вещественные это double?
Тогда вот:
1
|
14 / 14 / 1
Регистрация: 09.06.2009
Сообщений: 42
|
|
10.06.2009, 10:27 | 3 |
или вот:
#include <stdio.h> #include <math.h> void main(void) { float ar[6] = {-1.5f, 3.0f, 4.3f, -10.8, 2.0f, 7.4f}; float absmax = 0; int maxel = 0; for(int i = 0; i < 6; i++) { if(absmax < fabsf(ar[i])) { absmax = fabsf(ar[i]); maxel = i; } } absmax = 1; for (int i = maxel+1; i < 6; i++) { absmax *= ar[i]; } printf("Res is: %f", absmax); }
1
|
3 / 3 / 1
Регистрация: 10.12.2008
Сообщений: 46
|
|
10.06.2009, 11:08 [ТС] | 4 |
Deiron, Lerikh, спасибо большое Вам.
Lerikh, а зачем нужны буквы f после цифр?
0
|
26 / 26 / 9
Регистрация: 25.05.2009
Сообщений: 98
|
||||||
10.06.2009, 11:55 | 5 | |||||
f указывает на то, что они типа float. Но на самом деле - это не нужно. Достаточно float ar[6] = {-1.5, 3.0, 4.3, -10.8, 2.0, 7.4};
Объединить два цикла в один? А как ты себе это представляешь? Ты должен найти максимальный элемент - это один цикл. А потом - перемножить все элементы после него, это еще один цикл. Ты не сможешь перемножить все элементы после максимального, не зная максимального. Кстати, в моей функции недочет. Она максимальный элемент тоже "заносит" в список умножаемых. Чтобы умножались только те, что после надо сделать так:
0
|
14 / 14 / 1
Регистрация: 09.06.2009
Сообщений: 42
|
||||||
10.06.2009, 19:17 | 6 | |||||
на самом деле можно
![]()
На название переменных не смотри. лень было переназывать ![]()
0
|
26 / 26 / 9
Регистрация: 25.05.2009
Сообщений: 98
|
|
10.06.2009, 20:08 | 7 |
ух ты. Я бы не додумался до такого хитроумного хода. Но он, если я правильно понимаю, как и первый вариант моего кода включает максимальный элемент в произведение. То есть произведение будет равно arr[max]*arr[max+1]*...*arr[size-1], а не arr[max+1]*arr[max+2]*...*arr[size-1]. То есть, чтобы в произведение входили только те элементы, что после максимального, надо поделить все это дело на arr[max]
0
|
14 / 14 / 1
Регистрация: 09.06.2009
Сообщений: 42
|
|
10.06.2009, 20:30 | 8 |
нет. считает он правильно. по крайней мере пока я его проверял ошибок не находил...
Добавлено через 1 минуту 6 секунд максимального элемента в произведении нет. он пропускается ![]()
0
|
MCSD: APP BUILDER
8789 / 1067 / 104
Регистрация: 17.06.2006
Сообщений: 12,604
|
||||||
10.06.2009, 20:36 | 9 | |||||
0
|
10.06.2009, 20:36 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
Найти произведение элементов массива, расположенных после минимального по модулю элемента
Найти произведение элементов массива, расположенные после максимального по модулю элемента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |