обработкa одномерного массива
Дан массив A[n]. Найти произведение элементов, расположенных между первым по порядку минимальным и последним по порядку максимальным элементами массива. В моем коде не работает часть с произведением.(код ниже)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
void main()
{
int a[10];
int i;
int max,min;
int result;
printf("Enter 10 numbers\n");
for (i = 0; i<10; i++)
{
printf("%d: ", i);
scanf("%d", &a[i]);
}
max = a[0];
for (i = 1; i<10; i++)
{
if (a[i] > max)
{
max = a[i];
}
}
printf("\nmax element is: %d", max);
min = a[0];
for (i = 1; i<10; i++)
{
if (a[i]<min)
{
min = a[i];
}
}
printf("\nmin element is: %d", min);
for (i=min+1; i<max; i++)
result *= a[i];
printf("\nPROIZVEDENIE is: %d", result);
getch();
}
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
// gcc -Wall -std=c11 mularr.c -o mularr
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
// возвращаемый тип по стандарту должен быть int
int main()
{
setlocale ( LC_ALL , "" ) ; // раз подключили библиотеку, то используйте
int a[10];
int i;
int max,min;
// Положение этих элементов тоже запоминать надо
int maxi, mini ;
int result;
printf("Enter 10 numbers\n");
for (i = 0; i<10; i++)
{
printf("%d: ", i);
scanf("%d", &a[i]);
}
max = a[0];
// задаём максимальное значение и его индекс
maxi = 0 ;
for (i = 1; i<10; i++)
{
// последним по порядку означает, что по
// одинаковому значению индекс тоже надо менять
if (a[i] >= max)
{
max = a[i];
maxi = i ;
}
}
printf("\nmax element is: %d", max);
min = a[0];
// задаём минимальное значение и его индекс
mini = 0 ;
for (i = 1; i<10; i++)
{
if (a[i]<min)
{
min = a[i];
mini = i ;
}
}
printf("\nmin element is: %d", min);
// вы забыли начальное значение result задать,
// результат умножения будет неопределённым (случайным)
result = 1 ;
// если максимальное значение стоит перед минимальным, то
// нужно поменять индексы.
if ( mini > maxi ) {
int tmp = mini ;
mini = maxi ;
maxi = tmp ; }
// здесь цикл задаём по индексам, а не по значениям
for (i=mini+1; i<maxi; i++)
result *= a[i];
printf("\nPROIZVEDENIE is: %d\n", result);
//getch();
}