Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Shamil1239XD
4 / 1 / 3
Регистрация: 28.04.2021
Сообщений: 120

Указатели и динамическая память при обработке одномерных массивов

01.05.2021, 21:19. Показов 1761. Ответов 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
#include <bits/stdc++.h>
using namespace std;
 
void rearrange(int arr[], int n)
{
    int j = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] < 0) {
            if (i != j)
                swap(arr[i], arr[j]);
            j++;
        }
    }
}
 
// Служебная функция для печати массива
void printArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
}
 
// Код программы
int main()
{
    int arr[] = { -1, 2, -3, 4, 5, 6, -7, 8, 9 };
    int n = sizeof(arr) / sizeof(arr[0]);
    rearrange(arr, n);
    printArray(arr, n);
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2021, 21:19
Ответы с готовыми решениями:

Указатели и динамическая память при обработке одномерных массивов
Ввести некоторую последовательность чисел и создать динамический массив из чисел, расположенных к первому трехзначного числа (если...

Указатели и динамическая память при обработке одномерных массивов
Ввести некоторую последовательность чисел и создать динамический массив из чисел, расположенных к первому трехзначного числа (если...

Указатели при обработке одномерных массивов
Помогите пожалуйста, если можно с обьяснением. Код в dev c++ Для одномерного массива C (n) найти cуму индексов L крупнейших элементов,...

3
 Аватар для stdin
129 / 81 / 49
Регистрация: 10.01.2020
Сообщений: 293
02.05.2021, 12:09
Функция смены максимального и минимального элементов массива, если вам это нужно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void foo(int arr[], int n)
{
    int minI = 0;
    int maxI = 0;
    for (size_t i = 0; i < n; i++)
    {
        if (arr[i] > arr[maxI])
        {
            maxI = i;
        }
        if (arr[i] < arr[minI])
        {
            minI = i;
        }
    }
    swap(arr[minI], arr[maxI]);
}
1
 Аватар для Shamil1239XD
4 / 1 / 3
Регистрация: 28.04.2021
Сообщений: 120
02.05.2021, 17:56  [ТС]
А как ее в код добавить так, чтоб она работала?

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
#include <bits/stdc++.h>
using namespace std;
 
 
void foo(int arr[], int n)
{
    int minI = 0;
    int maxI = 0;
    for (size_t i = 0; i < n; i++)
    {
        if (arr[i] > arr[maxI])
        {
            maxI = i;
        }
        if (arr[i] < arr[minI])
        {
            minI = i;
        }
    }
    swap(arr[minI], arr[maxI]);
}
 
 
// Служебная функция для печати массива
void printArray(int arr[], int n)
{
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
}
 
// Код программы
int main()
{
    int arr[] = { -1, 2, -3, 4, 5, 6, -7, 8, 9 };
    int n = sizeof(arr) / sizeof(arr[0]);
    foo(arr, n);
    printArray(arr, n);
    return 0;
    
}
Как то так
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
02.05.2021, 21:16
Лучший ответ Сообщение было отмечено Shamil1239XD как решение

Решение

Shamil1239XD, попробуйте:
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
#include <iostream>
using namespace std;
 
double* CreateArray(double* A, int sizeA, int& sizeB)
{
    int flg = 0;
    int iA;
    sizeB = 0;
    for (iA = 0; iA < sizeA; iA++) 
    {
        if (flg)
            sizeB++;
        if (A[iA] < 0 && flg == 0) 
            flg = 1;
    }
    if (sizeB)
    {
        double* B = new double[sizeB];
        int iB = 0;
        flg = 0;
        for (iA = 0; iA < sizeA; iA++)
        {
            if (flg)
            {
                B[iB] = A[iA];
                iB++;
            }
            if (A[iA] < 0 && flg == 0)
                flg = 1;
        }
        return B;
    }
    else
        return nullptr;
}
 
void ChangeMaxMin(double* Arr, int sizeArr)
{
    double maxVal, minVal;
    int i;
    for (i = 0; i < sizeArr; i++)
    {
        if (i == 0 || maxVal < Arr[i])
            maxVal = Arr[i];
        if (i == 0 || minVal > Arr[i])
            minVal = Arr[i];
    }
 
    for (i = 0; i < sizeArr; i++)
    {
        if (maxVal == Arr[i])
        {
            Arr[i] = minVal;
            continue;
        }
        if (minVal == Arr[i])
        {
            Arr[i] = maxVal;
            continue;
        }
    }
}
 
// Служебная функция для печати массива
void printArray(double* Arr, int sizeArr)
{
    for (int i = 0; i < sizeArr; i++)
        cout << Arr[i] << " ";
    cout << endl << endl;
}
 
// Код программы
int main()
{
    int sizeA = 9;
    double* A = new double[sizeA] { -1, 2, -3, 4, 5, 6, -7, 8, 9 };
    cout << "Array A:" << endl;
    printArray(A, sizeA);
 
    int sizeB = 0;
    double* B = CreateArray(A, sizeA, sizeB);
    if (B)
    {
        cout << "Array B:" << endl;
        printArray(B, sizeB);
        delete[] B;
    }
    else
        cout << "No negative elements from array A !" << endl << endl;
 
    ChangeMaxMin(A, sizeA);
    cout << "Array A after change Max and Min:" << endl;
    printArray(A, sizeA);
 
    delete[] A;
 
    return 0;
}
Тест:
Code
1
2
3
4
5
6
7
8
Array A:
-1 2 -3 4 5 6 -7 8 9
 
Array B:
2 -3 4 5 6 -7 8 9
 
Array A after change Max and Min:
-1 2 -3 4 5 6 9 8 -7

Где:
1. Функция CreateArray() для создания динамического массива из чисел, расположенных после первого отрицательного числа
2. Функция ChangeMaxMin() для обмены мест минимального и максимального элементов массива

Внимательно, что в программе выше без функции с вводом массива ! Сам делайте....
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2021, 21:16
Помогаю со студенческими работами здесь

Ошибка в программе при обработке одномерных массивов.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { ...

Составление программ с использованием функций при обработке одномерных массивов
Найти отношение между максимальным и минимальным значениями элементов массива. a=2.9(i-1.5)-3.1i s=11.7(k-3.1)-8.1k b-4.7(j+2.2)-5.6j...

Задача по обработке одномерных массивов
Задача: Переменной Х присвоить 1, если элементы массива В(40), образуют возрастающую последовательность и значение 0 в противном случае. ...

Задача по обработке одномерных массивов
Дана последовательность целых чисел, содержащая как положительные, так и отрицательные элементы. Упорядочить последовательность след...

Составление программы по обработке одномерных массивов
Переписать данные с одного массива в другой, но в обратном порядке (по сравнению с их порядком в заданном массиве).


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) / / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров) . . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
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 Результат:
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru