1 / 1 / 0
Регистрация: 29.09.2016
Сообщений: 238
1

Найти сумму трех наибольших Положительных Нечетных элементов массива

02.02.2017, 21:39. Показов 1483. Ответов 7
Метки нет (Все метки)

Подскажите как написать код этой задачи на языке программирования С, буду благодарен за помощь)
"Найдите сумму трех наибольших <Положительных нечетных > элементов исходного массива Р(22)."
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2017, 21:39
Ответы с готовыми решениями:

Найдите сумму трех наибольших отрицательных четных элементов исходного массива Р(22)
Найдите сумму трех наибольших отрицательных четных элементов исходного массива Р(22).

Найдите сумму трех наибольших <Положительных нечетных > элементов исходного массива Р(22)
Привет всем, нужна ваша помощь, изучаю Java совсем немного, сейчас на массивах, есть задание, я...

Найдите сумму трех наибольших <Положительных нечетных > элементов исходного массива Р(22)
Найдите сумму трех наибольших &lt;Положительных нечетных &gt; элементов исходного массива Р(22) Буду...

Найти сумму трёх наибольших из элементов массива
Добрый день, нужна помощь в написании программного кода. Вот задание: Ввести массив из десяти...

7
16 / 16 / 12
Регистрация: 20.11.2016
Сообщений: 67
03.02.2017, 05:36 2
массив отсортирован или нет?
в массиве могут быть отрицательные числа? может не быть положительных чисел (только ноли)? может не быть нечетных чисел?
22 это у нас размер массива?

Добавлено через 16 минут
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
61
62
63
64
65
66
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE 22
 
void quick_sort(int *array, int array_size);
void swap(int *first_adress,int *second_adress);
 
int maxElementsinMassive (int *a, int array_size)
{
    quick_sort(a,array_size);
    return (*(a+array_size-1)+*(a+array_size-2)+*(a+array_size-3));
 
}
 
void quick_sort(int *array, int array_size)
{
    int pivot, start_point = 1, end_of_array = array_size - 1;
    if (array_size < 2)
    {
        return;
    }
    swap(array, (array+(end_of_array/2)));
    pivot = *array;
    while(start_point <= end_of_array)
    {
        while((start_point <= end_of_array)  && (*(array+end_of_array)>=pivot) )
        {
            end_of_array--;
        }
        while((start_point <= end_of_array) && (*(array+start_point) < pivot))
        {
            start_point++;
        }
        if (start_point <= end_of_array)
        {
            swap((array+start_point), array+end_of_array);
        }
    }
    swap(array, array+end_of_array);
    quick_sort(array, start_point);
    quick_sort(array+start_point, array_size-(start_point+1));
}
 
/*Принимает 2 адреса и меняет значения местами*/
void swap(int *first_adress,int *second_adress)
{
    if(*first_adress==*second_adress)return;
    int temp=*second_adress;
    *second_adress=*first_adress;
    *first_adress=temp;
    return;
}
 
int main()
{
    int a[SIZE]={0};
    printf("Enter 22 numbers:\n");
    for(int i=0;i<SIZE;i++)
    {
     scanf(" %d",a+i);
    }
    printf("Sum of 3 numbers is: %d.\n",maxElementsinMassive(a,SIZE));
    return 0;
}
0
Диссидент
Эксперт C
27319 / 17041 / 3765
Регистрация: 24.12.2010
Сообщений: 38,382
03.02.2017, 10:05 3
Строчку 59 лучше записать так
C
1
printf("Enter %d numbers:\n", SIZE);
0
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
04.02.2017, 05:05 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int n, max1, max2, max3, count = 0, pos = 0;
    puts("Enter numbers sequence. Enter not-digit for end.");
    while(1 == scanf("%d", &n)){
        if(count == 1){
            max1 = max2 = max3 = n;
        }
        if(count == 3 && n < max1)
            max2 = n;
        if(count == 5 && n < max2)
            max3 = n;
        if((count & 1) && (n >= 0)){
            pos++;
            if(n > max1){
                max3 = max2;
                max2 = max1;
                max1 = n;
            }
            else{
                if(n > max2){
                    max3 = max2;
                    max2 = n;
                }
                else
                    if(n > max3)
                        max3 = n;
            }
        }
        count++;
    }
    if(pos < 3){
        puts("The required number of elements corresponding to the condition is not detected");
    }
    else{
        printf("\nmax1 = %d  max2 = %d  max3 = %d\n", max1, max2, max3);
        printf("Sum = %d\n", max1 + max2 + max3);
    }
    return 0;
}
1
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
04.02.2017, 05:18 5
del
0
Диссидент
Эксперт C
27319 / 17041 / 3765
Регистрация: 24.12.2010
Сообщений: 38,382
04.02.2017, 12:11 6
LFC, кажется, вы считаете элементы с нечетными номерами. А в задании, как я понял, нужны нечетные элементы.
0
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
04.02.2017, 13:41 7
Байт, тут можно двояко прочитать,может вы и правы.
0
1145 / 830 / 248
Регистрация: 30.06.2015
Сообщений: 4,304
Записей в блоге: 45
04.02.2017, 15:14 8
del

Добавлено через 35 минут
Цитата Сообщение от kotik95 Посмотреть сообщение
Найдите сумму трех наибольших <Положительных нечетных > элементов исходного массива Р(22)."
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h> 
#define N 22
 
int comp (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}
 
int main (void)
{
  int P[N];
  int i, s=0, c=0;
  srand (time(NULL));
  for(i=0; i<N; ++i)P[i] = rand() % 22 + 1;
  for (i=0; i<N; ++i)
     printf ("%d ",P[i]); puts("");
  qsort (P, N, sizeof(int), comp);
  for (i=N-1; i>=0; --i)
  {
    if((P[i]%2)){s+=P[i]; ++c;}
        if(c==3)break;
  }
    if(c<3){printf("Nechetnih chisel menshe treh!"); return 0;}
  printf("Summa = %d\n", s);
  return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2017, 15:14
Помогаю со студенческими работами здесь

Найти сумму трех наибольших отрицательных четных элементов массива Р(22)
(на паскале)Найти сумму трех наибольших отрицательных четных элементов массива Р(22)

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

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

Найти сумму нечетных положительных элементов массива
Пример программы!! Текст программы { Лабораторная работа – обработка одномерных массивов в...

Найти сумму нечётных положительных элементов массива
Дан массив A(8). Найти сумму нечётных положительных элементов.

Найти сумму нечетных положительных элементов массива
Помогите набрать код задачи. Задан Массив N. Найти сумму нечетных положительных элементов массива....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru