Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Найти произведение между минимальным и максимальным элементом массива

Ответить
Настройки темы
C/C++ - Найти произведение между минимальным и максимальным элементом массива

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 15-11-2014
Описание: #
Код: Выделить весь код
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<locale.h>
void main ()
{
setlocale(LC_ALL,"rus");
int i,n,min_index,max_index,k;
float *ptr,sum=0,p=1,max,min;
printf("Пожалуйста,введите размерность массива\n");
scanf("%d",&n);
ptr=(float*)malloc(n*sizeof(float));
if(ptr==NULL)
{
printf("Не хватает свободной памяти");
return;
}
for(i=0;i<n;i++)
{
printf("Введите элемент массива[%d]\n",i+1);
scanf("%f",ptr+i);
}
for(i=0;i<n;i++)
{ if(*(ptr+i)<0) sum+=*(ptr+i);
}
printf("Сумма отрицательных элементов массива = %.2f\n",sum);
max=*(ptr+i);
k=0;
for(i=0;i<n;i++)
{
if (*(ptr+i)>max)
{
max=*(ptr+i);
k=i;
}
}
max_index=k+1;
printf("Индекс максимального %d\n",max_index);
i=0;
min=*(ptr+i);
min_index=i;
for(i=0;i<n;i++)
if (*(ptr+i)<min)
{
min=*(ptr+i);
min_index=i;
}
printf("Индекс минимального %d\n",min_index+1);
if (min_index>max_index)
{
p=max_index;
max_index=min_index;
min_index=p;
}
p=1;
if (min_index+1==max_index) p=0; else
for (i=min_index;i<max_index;i++)
{
p*=*(ptr+i);
}
printf("Произведение элементов массива между минимальным и максимальным элементом равна = %.2f\n",p);
free(ptr);
ptr=0;
}
Почему при подсчете моего произведения программа находит произведение всего массива, ведь у меня цикл for (i=min_index;i<max_index;i++) до максимального элемента,где ошибка?

Отправлено: 10:36, 09-11-2014

 

Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Можете написать значения при которых происходит ошибка?

Два раза вводил значения в массив на 5 "мест" всё отработало нормально, индексы показало верные, произведение тоже.

Пара замечаний, код "причешите", не экономьте отступами\пробелами.

Лучше выводить значения, например: 2 * 6 * 8 * 9 = столько-то
Код: Выделить весь код
Произведение элементов массива между минимальным и максимальным элементом равна
= 1728,00
Ну и с массивом немножко визуальнее легче воспринималось бы вот так
Код: Выделить весь код
Введите элемент массива[1] = 4
Введите элемент массива[2] = 2
Введите элемент массива[3] = 2
...
Кстати, а если рядом два одинаковых минимальных или максимальных, как быть?
Код: Выделить весь код
Текущая кодовая страница: 1251
Пожалуйста,введите размерность массива
8
Введите элемент массива[1]
4
Введите элемент массива[2]
2
Введите элемент массива[3]
2
Введите элемент массива[4]
6
Введите элемент массива[5]
8
Введите элемент массива[6]
9
Введите элемент массива[7]
5
Введите элемент массива[8]
7
Сумма отрицательных элементов массива = 0,00
Индекс максимального 6
Индекс минимального 2
Произведение элементов массива между минимальным и максимальным элементом равна
= 1728,00
Пожалуйста,введите размерность массива

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:41, 15-11-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Найти произведение между минимальным и максимальным элементом массива

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Найти ошибку в коде массива artyomartemyev96 Программирование и базы данных 3 24-10-2014 09:23
C/C++ - [решено] Найти ошибку в коде массива artyomartemyev96 Программирование и базы данных 1 12-10-2014 20:52
будет ли работать E5700 со сколотым элементом? kokos76 Процесcоры 3 31-07-2012 15:24
C/C++ - Найти обращение матрицы с помощью разложения на произведение двух треугольных матриц Monomah174 Программирование и базы данных 5 14-02-2011 19:01
C/C++ - [решено] Найти среднее геометрическое элементов массива А (С++) kmi567 Программирование и базы данных 2 10-12-2010 05:06




 
Переход