Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14

Переполнение массива | Запутался

26.05.2020, 13:28. Показов 1275. Ответов 17

Студворк — интернет-сервис помощи студентам
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) Номер максимального по модулю элемента массива
2) Сумму модулей элементов массива, расположенных после положительного элемента.
Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых
лежит в интервале [a,b], а потом - все остальные.

Сделал вот так, но выдаёт переполнение, запутался.. Помогите доделать!

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
void pervoe_pervoe()
{
    system("cls");
    int n, max_i = 0, a, b, k = 0,kz,inval;
    bool q = false;
    srand(time(NULL));
    float max, sum = 0, l;
   
    cout << "Введите размерность массива от 0 до 100: ";
    cin >> n;
    system("cls");
 
    float* mas = new float[n];
 
Metka:
    cout << "Введите метод заполнения массива (1-случайные числа, 2-ручной ввод): ";
    cin >> kz;
    switch (kz)
    {
    case 1:
    {
        for (int i = 0; i < n; i++)
        {
            float p = rand() % 8 / 10.0;
            mas[i] = rand() % 10 - rand() % 10 + p;
        }
        break;
    }
    case 2:
    {
        for (int i = 1; i < n + 1; i++)
        {
            cout << "Ввдите " << i << "элемент массива: ";
            cin >> mas[i];
        }
        break;
    }
    default:
        goto Metka;
    }
    system("cls");
 
    cout << "Массив: " << endl;
    for (int i = 0; i < n; i++)
        cout << mas[i]<<'\t';
    cout << endl;
    cout << "Необходимо ввести a<" << n << endl;
   
    do
    {
        cout << "Введите начало интверала (a): ";
        cin>> a;
    } while (!(a <= n - 1));
    
    cout << "Необходимо ввести b=>" << a <<" и b<=" << n << endl;
    
    do
    {
        cout << "Введите начало интверала (b): ";
        cin >> b;
    } while (!(b >= a && b <= n));
 
    float* mas2 = new float[n];
    for (int i = 0; i < n; i++)
    {
        int nVal = (int)(mas[i] * 10);
        int buff = nVal / 10;
        nVal = nVal % 10;
        if (nVal == 0)
        {
            if (a < b) {
                if ((mas[i] >= a) && (mas[i] <= b))
                {
                    mas2[k] = mas[i];
                    k++;
                }
            }
            else
                if ((mas[i] >= b) && (mas[i] <= a))
                {
                    mas2[k] = mas[i];
                    k++;
                }
        }
    }
 
    for (int i = 0, z = k; i < n; i++, z++)
    {
        if (a < b) {
            if ((mas[i] <= a) || (mas[i] >= b))
                mas2[z] = mas[i];
            else
                z--;
        }
        else if (b > a) {
            if ((mas[i] <= b) || (mas[i] >= a))
                mas2[z] = mas[i];
            else
                z--;
        }
    }
    for (int i = 0; i < n; i++)
        mas[i] = mas2[i];
 
    cout << "Массив: " << endl;
    for (int i = 0; i < n; i++)
        cout << mas[i]  << '\t';
 
    cout << endl;
 
    max = fabs(mas[0]);
 
    for (int i = 0; i < n; i++) {
        if (mas[i] > max) {
            max = mas[i];
            max_i = i;
        }
    }
 
    for (int i = 0; i < n; i++)
        if (mas[i] > 0)
        {
            l = mas[i];
            break;
        }
 
    for (int i = 0; i < n; i++)
    {
        if (mas[i] > 0)
            q = true;
        if (q == true)
            sum += mas[i];
    }
 
    cout << "Индекс максимального числа: " << max_i << endl;
    cout << "Сумма элементов массива, расположенных после первого положительного элемента: " << sum << endl;
    delete mas;
    delete mas2;
    system("pause");
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2020, 13:28
Ответы с готовыми решениями:

запутался в алгоритме создания массива
Код. Программа должна нарисовать точки, так как описано в массиве, проблема в том что, она рисует точки только использует еще точку 450,...

Сортировка массива структур (запутался я)
Доброго времени! собственно сразу обращение за помощью. есть структура и массив таких структур: struct iDiscipline{ char...

Переполнение массива
Добрый день господа. :) Столкнулся с очередной проблемой и не знаю как решить. Где то в этой программе происходит переполнение...

17
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
26.05.2020, 15:21  [ТС]
Вот что выдаёт
Миниатюры
Переполнение массива | Запутался  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.05.2020, 18:16
Цитата Сообщение от Зфмуд Посмотреть сообщение
Вот что выдаёт
Цитата Сообщение от Зфмуд Посмотреть сообщение
for (int i = 0; i < n; i++)
        mas[i] = mas2[i];
cout << "Массив: " << endl;
    for (int i = 0; i < n; i++)
        cout << mas[i]  << '\t';
Это выдаётся содержимое массива mas2, который заполняется не полностью
1
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
26.05.2020, 18:31  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Это выдаётся содержимое массива mas2, который заполняется не полностью
можете помочь исправить? как мне его до заполнить оставшимися элементами mas?
Уже обдумывал создание третьего массива
mas - Основной
mas1 - целочисленные элементы в интервале
mas2 - остальные элементы
и в конце объединять mas1 и mas2, по порядку, в массив mas
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.05.2020, 18:39
Цитата Сообщение от Зфмуд Посмотреть сообщение
Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых
лежит в интервале [a,b], а потом - все остальные.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    do
    {
        cout << "Введите начало интверала (b): ";
        cin >> b;
    } while (!(b >= a && b <= n));
 
    for (int i = 0, j = 0; i < n; ++i)
        if (mas[i] >= a && mas[i] <= b)
        {
            std::swap(mas[i], mas[j]);
            ++j;
        }
 
    cout << "Массив: " << endl;
    for (int i = 0; i < n; i++)
        cout << mas[i]  << '\t';
1
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
26.05.2020, 18:49  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
C++Выделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    do
    {
        cout << "Введите начало интверала (b): ";
        cin >> b;
    } while (!(b >= a && b <= n));
for (int i = 0, j = 0; i < n; ++i)
        if (mas[i] >= a && mas[i] <= b)
        {
            std::swap(mas[i], mas[j]);
            ++j;
        }
cout << "Массив: " << endl;
    for (int i = 0; i < n; i++)
        cout << mas[i]  << '\t';
Не помогло
Миниатюры
Переполнение массива | Запутался  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.05.2020, 19:19
Цитата Сообщение от Зфмуд Посмотреть сообщение
Не помогло
Что не помогло? Все элементы от -7 до 2 расположены в начале массива
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
26.05.2020, 19:37  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Сообщение от Зфмуд
Не помогло
Что не помогло? Все элементы от -7 до 2 расположены в начале массива
-6 целочисленный элемент находящий в интервале от -7 до 2 расположен в середине, а должен быть в начале(
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.05.2020, 19:39
Цитата Сообщение от Зфмуд Посмотреть сообщение
-6 целочисленный элемент находящий в интервале от -7 до 2 расположен в середине, а должен быть в начале(
Он должен быть расположен до элементов, которые больше 2. Это не так?

Добавлено через 42 секунды
Сортировки элементов у тебя в задании вроде нет
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
26.05.2020, 19:46  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Он должен быть расположен до элементов, которые больше 2. Это не так?
Добавлено через 42 секунды
Сортировки элементов у тебя в задании вроде нет
Цитата Сообщение от Зфмуд Посмотреть сообщение
Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых
лежит в интервале [a,b], а потом - все остальные.
В том-то и дело, что есть
Должны было выдать что-то такое:
-6 -6 -2,7 0,4 0,3 -6,6 -2,9 0,1 0,1..., где
-6 и -6 это целочисленные находящиеся в интервале и они расположены в начале
и начиная с -2,7 должен продолжаться массив - остальное
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.05.2020, 19:50
Цитата Сообщение от Зфмуд Посмотреть сообщение
В том-то и дело, что есть
Где она есть, не вижу.
Цитата Сообщение от Зфмуд Посмотреть сообщение
Должны было выдать что-то такое:
С чего ты это решил?
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
26.05.2020, 19:54  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Сообщение от Зфмуд
В том-то и дело, что есть
Где она есть, не вижу.
Сообщение от Зфмуд
Должны было выдать что-то такое:
С чего ты это решил?
Цитата Сообщение от Зфмуд Посмотреть сообщение
Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [a,b], а потом - все остальные.
Преобразовать массив чтобы сначала располагались все целочисленные элементы матрицы, лежащие в заданном интервале.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.05.2020, 20:03
Цитата Сообщение от Зфмуд Посмотреть сообщение
Преобразовать массив чтобы сначала располагались все целочисленные элементы матрицы, лежащие в заданном интервале.
Это означает, что все элементы из этого интервала лежат
C++
1
перед
элементами, которые вне этого интервала. Не более того.

Добавлено через 1 минуту
Т.е. здесь - элементы, которые меньше 2 лежат перед элементами, которые больше 2.
Элементов меньше -7 у тебя там нет
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
26.05.2020, 20:19  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Т.е. здесь - элементы, которые меньше 2 лежат перед элементами, которые больше 2.
Элементов меньше -7 у тебя там нет
Так у меня есть элемент, который лежит в этом интервале от -7 до 2 это второе -6, и оно не лежит в начале
Миниатюры
Переполнение массива | Запутался  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.05.2020, 20:24
Цитата Сообщение от Зфмуд Посмотреть сообщение
Так у меня есть элемент, который лежит в этом интервале от -7 до 2 это второе -6, и оно не лежит в начале
До него есть хоть один элемент больше двух? Если нет, то в начале. Как и требовалось по заданию.
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
26.05.2020, 20:37  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
До него есть хоть один элемент больше двух? Если нет, то в начале. Как и требовалось по заданию.
Хорошо.. А как можно сделать чтобы все целочисленные элементы интервала находились в начале массива?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
26.05.2020, 20:40
Цитата Сообщение от Зфмуд Посмотреть сообщение
Хорошо.. А как можно сделать чтобы все целочисленные элементы интервала находились в начале массива?
Ну, сначала нужно определить, которые из них целочисленные. Ты это умеешь?
0
0 / 0 / 0
Регистрация: 25.11.2017
Сообщений: 14
26.05.2020, 20:46  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Ну, сначала нужно определить, которые из них целочисленные. Ты это умеешь?
C++
1
2
3
4
5
6
int nVal = (int)(mas[i] * 10);
        int buff = nVal / 10;
        nVal = nVal % 10;
        if (nVal == 0){
        ...
        }
Если остаток от этих преобразований равно нулю, значит целочисленное
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2020, 20:46
Помогаю со студенческими работами здесь

Переполнение массива
Как бороться с переполнением массива? У меня есть данных и их количество N = pow(10,10) и мне нужно их записать в массив типа Double.

Переполнение массива
Товарищи, имею такой вопрос- есть у меня часть кода, которая отвечает за загрузку из интерне xml файла и созраняющая его в массив. Все...

Переполнение массива
Нужно написать программу для вычисления чисел Фибоначчи, работает почему-то только для 14 чисел, дальше пишет ошибку- переполнение массива...

Запутался в выводе на экран сведений из массива
Запутался в выводе на экран сведений из массива. Вот условие задачи. Создать базовый класс Plain (самолёт), содержащий поля: тип...

Переполнение массива строк
Помогите решить переполнение массива строк String в функции PayB(). using System; using System.IO; using System.Net.Sockets; ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru