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

Отрицательные элементы строк поставить в конец

23.02.2019, 13:00. Показов 3686. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Исходные данные: матрица чисел размером M x N, M – число строк, N – число
столбцов.
Задание: Отрицательные элементы строк поставить в конец строки.

Операцию надо проделать в этой функции.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
void SwapElements(int M, int N, int **A)
{
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
        {
            /*
            кусок программы
            */
        }
    }
}
Поскольку массив передается через двойной указатель, то обращение к элементу следующим образом: *(*A + i * M + j) .

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

C++ (Qt)
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
#include <iostream>
#include <conio.h>
#include <malloc.h>
#include <ctime>
 
using namespace std;
 
void CreateA(int M, int N, int **A)
{
    srand(time(NULL)); 
    *A = (int*)malloc(M * N * sizeof(int));
 
    for (int i = 0; i < M; i++)
    {
        
        for (int j = 0; j < N; j++)
        {
            *(*A + i * M + j) = rand() % 100 - 50;
            printf("%4d", *(*A + i * M + j) );
        }
        printf("\n");
    }
}
 
void SwapElements(int M, int N, int **A)
{
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
        {
            /*
            кусок программы
            */
        }
    }
}
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    int M,
        N,
        *A;
    printf("Введите размерность матрицы (M x N): ");
    scanf_s("%d %d", &M, &N);
    printf("\n");
 
    CreateA(M, N, &A);
 
    printf("\n");
 
    SwapElements(M, N, &A);
 
    system("pause");
}


Надеюсь на вашу помощь
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.02.2019, 13:00
Ответы с готовыми решениями:

Все положительные элементы массива поставить в начало, а отрицательные - в конец
Помогите решить такую задачу пжл: дан одномерный массив &quot;а&quot; (состоящий из вещественных чисел). Необходимо пройдя по массиву один раз все...

Необходимо, пройдя по массиву один раз, все его положительные элементы поставить в начало а отрицательные в конец
Помогите решить такую задачу пжл: дан одномерный массив &quot;а&quot; (состоящий из вещественных чисел). Необходимо пройдя по массиву один раз все...

В двумерном массиве нулевые элементы поставить в конец строк
Заранее спасибо за помощь ) #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main() { int a = { 2, 0,...

6
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
23.02.2019, 15:22
не уверен, но принцип такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void SwapElements(int M, int N, int **A)
{
    for (int i = 0; i < M; i++)
    {
        int end=N-1;
        for (int j = 0; j < end; j++)
        {
            if (A[i][j]<0) {
                swap(A[i][j],A[i][end]);
                --end;
                --j;
            }
        }
    }
}
0
1 / 1 / 0
Регистрация: 22.02.2019
Сообщений: 34
23.02.2019, 21:04  [ТС]
Я перепробовал множество вариантов. Твой, к сожалению, не исключение. Мне хотелось бы рабочий код увидеть, а не принцип его исполнения. Я в принципе понимаю, как это должно происходить, но в коде реализовать не получается.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.02.2019, 02:58
Лучший ответ Сообщение было отмечено wcoestarw как решение

Решение

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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
void SwapElements(int M, int N, int **a)
{   
    for (int i = 0; i < M; i++)
    {    
    int t=0;    
        for (int j = 0; j < N; j++)
        if (a[i][j]>=0)
        {
            for (int k = j; k > t; k--)
            swap(a[i][k],a[i][k-1]);
            t++;
        }
    }   
}
 
int main()
{
    srand((int)time(0));
    int M, N;
    cout <<"M="; cin >>M;
    cout <<"N="; cin >>N;
    
      int **a = new int*[M]; 
    for (int i = 0; i < M; i++)
      a[i]=new int[N];
    
    for (int i = 0; i < M; i++)
    {
    for (int j = 0; j < N; j++)
    {
    a[i][j]=rand()%19-9;
    cout <<a[i][j]<<" ";
    }
    cout <<"\n";
    }
    cout <<"\n";
    
    SwapElements(M,N,a);
    
    for (int i = 0; i < M; i++)
    {
    for (int j = 0; j < N; j++) 
    cout <<a[i][j]<<" ";    
    cout <<"\n";
    }
    
    for (int i = 0; i < M; i++)
    delete[]a[i];
    delete[]a;
 
system("pause");
return 0;
}
0
1 / 1 / 0
Регистрация: 22.02.2019
Сообщений: 34
24.02.2019, 13:34  [ТС]
Спасибо. Только в этом моменте у тебя не поставлены { }
Цитата Сообщение от Yetty Посмотреть сообщение
if (a[i][j]>=0)
{
for (int k = j; k > t; k--)
{
swap(a[i][k],a[i][k-1]);
t++;
}
}
Но это пошло на пользу, потому что операция t++ оказалась лишней. Если ее включить в цикл, работать как надо код не будет.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
24.02.2019, 14:11
wcoestarw, пожалуйста. скобки не нужны - t++ относится не к внутреннему циклу, а к сработкам условия if. счётчик (переменная t) введён для исключения ненужных циклов - можно его убрать, но программа будет работать медленнее.
Цитата Сообщение от wcoestarw Посмотреть сообщение
Если ее включить в цикл, работать как надо код не будет.
фраза из серии почему код не будет работать если код поменять
0
1 / 1 / 0
Регистрация: 22.02.2019
Сообщений: 34
24.02.2019, 14:22  [ТС]
Понятненько. Просто я подумал, что ты не углядел за скобками.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2019, 14:22
Помогаю со студенческими работами здесь

Все отрицательные элементы массива А необходимо поставить в начало массива, а положительные в конец
Здравствуйте! Нужна небольшая помощь с массивами в Assembler. Задача в следующем: Все отрицательные элементы массива А необходимо поставить...

Отрицательные элементы массива переместить в конец
Дан массив A(n). Переместить все его элементы таким образом, чтобы в конце массива были все его отрицательные числа, сохранив при этом...

Перенести отрицательные элементы в конец массива
Всем доброго времени суток, помогите с заданием: В целочисленный массив размерности N ввести произвольные числа. Последовательно...

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

Перенести все отрицательные элементы массива в конец
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; #define n 10 int main(){ srand(time(NULL)); int a, i, pos=0, q,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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