Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 23.11.2019
Сообщений: 14
1

Запись наименьших чисел в массиве в структуру

23.11.2019, 22:44. Показов 1341. Ответов 1
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
Задача такая - запись наименьших чисел в массиве в структуру. В функцию я передаю массив с числами и количество элементов в массиве.
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
#define QUARTERS 4
 
struct Sales {
    int sales[QUARTERS];
    double average;
    double max;
    double min;
};
 
void set_sales(const int ar[], int n);
 
int main(void) {
    const int ar[5] = {4, 3, 1, 5, 6};
    set_sales(ar, 5);
    return 0;
}
 
void set_sales(const int ar[], int n) {
    if (n < QUARTERS) {
        exit(1);
    }
    struct Sales s;
    int lower_value = ar[0];
    int exception[QUARTERS];
    for (int k = 1; k < n; ++k) {
        if (ar[k] < lower_value) {
            lower_value = ar[k];
        }
    }
    exception[0] = lower_value; // Запись первого исключения
    bool result = true;
    for (int d = 0; d < QUARTERS; d++) {
        for (int i = 1; i < n; i++) {
            if (ar[i] < lower_value) {
                for (int j = 0; j < d+1; j++) {
                    if (ar[i] == exception[j]) { // Проверка числа в массиве исключений 
                        result = false;
                        break;
                    }
                }
                if (result == false) { // Если число исключение - продолжаем цикл
                    result = true;
                } else {
                    lower_value = ar[i];
                }
            }
        }
        exception[d] = lower_value;
        s.sales[d] = exception[d];
    }
    for (int l = 0; l < QUARTERS; l++) {
        printf("%d\n", s.sales[l]);
    }
}
Выводит:
1
1
1
1

Как я думаю, что-то не так с исключениями. Что именно - я не могу понять)
Буду очень благодарен если подскажите, в чем проблема.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2019, 22:44
Ответы с готовыми решениями:

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

[NASM] Поиск трёх наименьших чисел в массиве
Расширенный ассемблер: NASM Мне очень стыдно ребята, обещаю что все выучу( Очень простая...

В одномерном массиве произвольных чисел найти наибольший элемент из наименьших
Друзья!Помогите Пожалуйста,если это вас не затруднит,с задачей: &quot;В одномерном массиве произвольных...

Найти сумму всех содержащихся в массиве трёхзначных чисел, десятичная запись которых оканчивается на 9, но не 99
Дан массив, содержащий 2014 неотрицательных целых чисел, не превышающих 10 000. Опишите на одном из...

1
El. Psy. Congroo.
110 / 92 / 32
Регистрация: 09.01.2018
Сообщений: 344
24.11.2019, 05:12 2
Лучший ответ Сообщение было отмечено Nyarin как решение

Решение

здесь ты определяешь минимальное значение элементов массива:
C++
1
2
3
4
5
for (int k = 1; k < n; ++k) {
        if (ar[k] < lower_value) {
            lower_value = ar[k];
        }
    }
и весь этот фрагмент кода ни разу не выполняется:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if (ar[i] < lower_value) {
                for (int j = 0; j < d+1; j++) {
                    if (ar[i] == exception[j]) { // Проверка числа в массиве исключений 
                        result = false;
                        break;
                    }
                }
                if (result == false) { // Если число исключение - продолжаем цикл
                    result = true;
                } else {
                    lower_value = ar[i];
                }
            }
поскольку ar[i] не может быть меньше lower_value.

в чём проблема просто отсортировать массив и по минимальному смещению определить необходимые тебе данные?

C++
1
#include <algorithm>
C++
1
2
3
4
int array[5] = {4,3,1,5,6};
Sales object;
std::sort(array,array+sizeof(array)/sizeof(int));
for (int count = 0; count < QUARTERS; ++count) object.sales[count] = array[count];
1
24.11.2019, 05:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2019, 05:12
Помогаю со студенческими работами здесь

Составить программу нахождения всех наименьших чисел из определенного количества чисел
Составить программу нахождения всех наименьших чисел из определенного количества чисел

Как найти 3 наименьших элемента в одномерном массиве?
Собственно вот моё задание: Дана квадратная матрица А, составьте программу формирования...

Произведение наименьших элементов столбцов в двумерном массиве
В двумерном массиве произвольных чисел вычислить произведение их наименьших значений в столбцах....

Вывод наименьшего и количества наименьших в 50 элементном массиве
Ошибка в том,что минимум не изменился,как и каунт. Вот код: /* * Created by SharpDevelop. ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru