Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
sasha008
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 44
1

Найти сумму и количество положительных элементов, расположенных между минимальным и максимальным элементами массива

26.03.2014, 13:45. Просмотров 623. Ответов 5
Метки нет (Все метки)

Найти сумму и количество положительных элементов, расположенных между минимальным и максимальным элементами массива...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 13:45
Ответы с готовыми решениями:

Найти сумму положительных элементов массива, расположенных между минимальным и максимальным элементами
Попросили решить задачу,дан массив чисел,нужно вывести два числа, разделенных...

Найти сумму элементов массива, расположенных между максимальным и минимальным элементами
Всем привет. Сегодня столкнулся с проблемой, моя программа не хочет выполнять...

Найти количество элементов массива, расположенных между минимальным и максимальным элементами
В одномерном массиве, состоящем из вещественных элементов, вычислить: А)...

Вычислить сумму нечетных элементов массива, расположенных между максимальным и минимальным элементами
В одномерном массиве состоящем из 10 вещественных элементов,вычислить сумму...

В массиве вычислить сумму нечетных элементов массива, расположенных между максимальным и минимальным элементами
1. В одномерном массиве, состоящем из 8 вещественных элементов, вычислить сумму...

5
Catstail
Модератор
24153 / 12142 / 2178
Регистрация: 12.02.2012
Сообщений: 19,717
26.03.2014, 14:22 2
А если минимальный и максимальный элементы встречаются в массиве несколько раз? Задача становится неоднозначной...
0
kasan
Чорумфанин
342 / 342 / 320
Регистрация: 06.03.2014
Сообщений: 898
26.03.2014, 14:44 3
Если принять, что в массиве один максимум и один минимум
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
int main()
{
int mas[10]={10,3,-4,2,8,12,0,34,-2,11};
int i,max,min,sum=0,count=0,min_index,max_index,tmp;
 
min=0;
min_index=0;
for(i=0;i<9;i++)    //min
    if(min>mas[i+1])
    {
        min=mas[i+1];
        min_index=i+1;
    }
 
max=0;
max_index=0;              //max
for(i=0;i<9;i++)
    if(max<mas[i+1])
        {
        max=mas[i+1];
        max_index=i+1;
    }
if(min!=max)
   {
    if(min_index>max_index)
        {
           tmp=min_index;
           min_index=max_index;
           max_index=tmp;
        }
    for(i=min_index;i<=max_index;i++)
    {
        sum+=mas[i];
        if(mas[i]>0)
            count++;
    }
   }
printf("Summa = %d, Count = %d",sum,count);
return 0;
}
0
Catstail
Модератор
24153 / 12142 / 2178
Регистрация: 12.02.2012
Сообщений: 19,717
26.03.2014, 15:00 4
Мне кажется, лучше так:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <math.h>
 
int main(int argc, char* argv[])
{
    int A[10]={10,3,-4,2,8,12,0,34,-2,11};
    int B[10];
    int s,max,min,imax,imin,i;
    s=0;
    max=A[0];
    min=A[0];
    imax=0;
    imin=0;
    for (i=0; i<10; i++)
    {
        if (A[i] > 0) s+=A[i];
        B[i]=s;
        if (A[i] > max) {max=A[i]; imax=i;}
        if (A[i] < min) {min=A[i]; imin=i;}
    }
    s=abs(B[imax]-B[imin])-((max>0)?max:0)-(min>0?min:0);
    printf("%d\n",s);
    return 0;
}
1
Vtulhu
423 / 377 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
26.03.2014, 17:26 5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
 
#define SIZE 10
 
int array[SIZE] = { 10, 3, -4, 2, 8, 12, 0, 34, -2, 11 };
 
void min_and_max(int* idx_min, int* idx_max)
{
    *idx_min = 0;
    *idx_max = 0;
    for( int i = 1; i < SIZE; ++i ) {
        if( array[i] < array[*idx_min] ) {
            *idx_min = i;
        } else if( array[i] > array[*idx_max] ) {
            *idx_max = i;
        }
    }
}
 
int sum_and_count_positives(int i, int end, int* psum, int* pcount)
{
    *pcount = 0;
    *psum = 0;
    for( ; i <= end; ++i ) {
        if( array[i] > 0 ) {
            *pcount += 1;
            *psum += array[i];
        }
    }
}
 
int main(int argc, char* argv[])
{
    int idx_min;
    int idx_max;
    min_and_max(&idx_min, &idx_max);
 
    printf("Minimal element: %d\n", array[idx_min]);
    printf("Maximal element: %d\n", array[idx_max]);
 
    int begin;
    int end;
 
    if( idx_min < idx_max ) {
        begin = idx_min + 1;
        end = idx_max - 1;
    } else {
        begin = idx_max + 1;
        end = idx_min - 1;
    }
 
    int sum;
    int count;
    sum_and_count_positives(begin, end, &sum, &count);
 
    printf("Sum = %d\n", sum);
    printf("Count = %d\n", count);
 
    return 0;
}
0
Catstail
Модератор
24153 / 12142 / 2178
Регистрация: 12.02.2012
Сообщений: 19,717
26.03.2014, 19:25 6
В моем решении была неточность. Строка 21 должна иметь вид:

C
1
    s=abs(B[imax]-B[imin])-(((imax>imin)&&(max>0))?max:0)-(((imin>imax)&&(min>0))?min:0);
0
26.03.2014, 19:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2014, 19:25

Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
Помогите, пожалуйста, найти ошибки. При выводе выдает все нули =/ Само задание...

Найти произведение элементов массива, расположенных между максимальным и минимальным элементами
Ребят, подскажите хотя бы с чего начать и как делать Необходимо в...

Найти сумму элементов массива, расположенных между максимальным и минимальными элементами
Дан целочисленный массив B. Найти сумму элементов этого массива, расположенных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru