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

Замена значений массива

02.05.2020, 14:40. Показов 5125. Ответов 12
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Начал изучать программирование на языке с/с++.
Подскажите как быть?
Нужно поменять значения двумерного массива местами. Задаётся определённая строка в ходе программы и если значение a[0][1] < a[0][0],то они должны меняться местами.
Ниже код программы.
Нужные значения меняются,но не сохраняются в массиве и когда вывожу массив полностью,то выводится исходные значения массива.

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 <stdio.h>
#include <stdlib.h>
#include <iostream>
#define str  10
#define kol  2
 
using namespace std;
 
main()
{
system("chcp 1251");
int i,j,stroka,stroka_2;
int a[str][kol];
srand(time(NULL));
                   // Заполняю массив случайными числами.
for ( i = 0; i < str;i++)
{       for (j = 0; j < kol; j++)
        {  a[i][j] = rand();
        }
}
                        // Вывод значений массива.
for ( i = 0; i < str; i++)
{       for (j = 0; j < kol;j++)
        {
        cout << a[i][j] << "\t";
        }
        cout << "\n";
 
}
cout << ("Какую строчку сортируем в первую очередь? \n");
cin >> stroka;                              // Ввожу значение строки в которой хочу
int i1,j1,mycor_1;                         //поменять местами значения
do
{       for ( i = stroka -1 ; i < str;i++)
        {       for (j = i; j < kol;j++)
        {
        i1 = a[i][0];        // Задаю переменную массив по заданной строке и его столбца
        j1 = a[i][1];
        if ( j1 < i1)            //Создаю условие для выражения
        {
        mycor_1 = i1;         //Записываю в "Ячейку" mycor зачение массива что-бы
        i1 = j1;
        j1 = mycor_1;
        a[i][0] = i1;
        a[i][1] = j1;
        }  }
} } while ( i == i1);
ending:
for ( i = 0; i < str; i++)
{       for (j = 0; j < kol; j++)
        {
        cout << a[i][j] << "\t";
        }
        cout << "\n";
 
}
  system ("pause");
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2020, 14:40
Ответы с готовыми решениями:

Замена значений двумерного массива
Заменить все значения двумерного массива в динамической памяти на значения, которые больше минимального на разность максимального и...

Замена значений массива на строчный элемент
Здрасте, сделал масив 200 на 200 со случайными цифрами в диапазоне от 0 до 2(0 1 2) Теперь надо 0 заменить на &quot;О&quot; 1 заменить...

Замена значений массива
У меня такой вопрос как можно сделать так чтоб взять два массива сравнить элемент первого массива с клюём второго и если они совпадут то...

12
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
02.05.2020, 19:15
Цитата Сообщение от GaniBLLO Посмотреть сообщение
Нужно поменять значения двумерного массива местами. Задаётся определённая строка в ходе программы и если значение a[0][1] < a[0][0],то они должны меняться местами.
C++
1
2
3
4
5
6
7
8
for (i = stroka - 1; i < str; i++)
    for (j = i; j < kol; j++)
        if (a[i][1] < a[i][0])            //Создаю условие для выражения
        {
            int x = a[i][1];
            a[i][1] = a[i][0];
            a[i][0] = x;
        }
Добавлено через 1 минуту
А зачем здесь цикл по j ?
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 25
03.05.2020, 09:58  [ТС]
Считал, что по столбцам тоже нужно проходить циклом чтобы соотносить строку или столбец нужного мне значения.
Хотя по Вашему коду я понял, что значение столбца [j] равен значению строки [i].Спасибо
C++
1
2
3
4
5
6
7
8
for (i = stroka - 1; i < str; i++)
    for (j = i; j < kol; j++)
        if (a[i][1] < a[i][0])            //Создаю условие для выражения
        {
            int x = a[i][1];
            a[i][1] = a[i][0];
            a[i][0] = x;
        }
Добавлено через 9 минут
Считал, что по столбцам тоже нужно проходить циклом чтобы соотносить строку или столбец нужного мне значения.
Хотя по Вашему коду я понял, что значение столбца [j] равен значению строки [i].Спасибо Но при введении строки " i " больше 2ух., он не меняет значения местами. Тоесть ввожу значение 10 и он эту строку "j = i = 10-1" не меняет т.к количество столбцов (j < kol), а kol = 2.
C++
1
2
3
4
5
6
7
8
for (i = stroka - 1; i < str; i++)
    for (j = i; j < kol; j++)
        if (a[i][1] < a[i][0])            //Создаю условие для выражения
        {
            int x = a[i][1];
            a[i][1] = a[i][0];
            a[i][0] = x;
        }
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
03.05.2020, 10:02
Цитата Сообщение от GaniBLLO Посмотреть сообщение
Нужно поменять значения двумерного массива местами. Задаётся определённая строка в ходе программы и если значение a[0][1] < a[0][0],то они должны меняться местами.
Ты это условие сам придумал, или есть какое-то более внятное задание?
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 25
03.05.2020, 10:11  [ТС]
Есть задание) В универе задали.
Сначала нужно выбрать строки, в какой в первую очередь меняем местами значения массива, а в какой второй (значения должны быть по порядку(последовательно)), а уже потом вывести все столбцы уже с измененными значениями.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
03.05.2020, 10:27
Цитата Сообщение от GaniBLLO Посмотреть сообщение
Есть задание) В универе задали.
Покажи само задание
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 25
03.05.2020, 10:29  [ТС]
Дан двумерный массив A[n][2], n = 2..255. Элементы массива инициализируются в тексте программы. Пользователь вводит число (1 или 2) в ответ на вопрос, по возрастанию элементов какой из строк следует сортировать массив в первую очередь, а по какому -- во вторую. В качестве ответа пользователю выводится последовательность индексов столбцов после сортировки.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
03.05.2020, 10:41
Цитата Сообщение от GaniBLLO Посмотреть сообщение
Пользователь вводит число (1 или 2) в ответ на вопрос, по возрастанию элементов какой из строк следует сортировать массив в первую очередь, а по какому -- во вторую.
Для начала сделай сортировку одной строки, например нулевой - a[i][0]. Другую строку - a[i][1], не трогай. Как сделаешь, покажи
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.05.2020, 15:24
условие сформулировано так, что требования что-либо сортировать нет. вообще сортировка по возрастанию элементов строки означает переставить столбцы в соответствии со значениями строк, упорядоченными по возрастанию.

т.е. Вам нужно посмотреть разные ситуации, например:
C++
1
if (a[i1][0]<=a[i1][1] && a[i2][0]>a[i2][1]) cout << 1 << " " << 0 << "\n"; // 1 и 0 - это индексы столбцов
как получены 1 и 0. если строка с индексом i1 упорядочена по возрастанию, ничего не делаем. если строка с индексом i2 не упорядочена - переставляем (как бы в уме) 0 и 1

Добавлено через 15 минут
Цитата Сообщение от GaniBLLO Посмотреть сообщение
(1 или 2)
это в условии было или сами добавили ?
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 25
03.05.2020, 15:56  [ТС]
Может быть Вы имели ввиду сортировку столбца?
Если построчно даны такие значения у нулевого столбца a[i][0]:
2
3
1
8
7
то в данном случае тут нечего сортировать .
Оо
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
03.05.2020, 16:02
Цитата Сообщение от GaniBLLO Посмотреть сообщение
Может быть Вы имели ввиду сортировку столбца?
Насколько я понял задание, массив должен быть int a[2][N] - две строки по N символов.
И сначала надо отсортировать одну строку - a[0][i] (ошибся в предыдущем сообщении)
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 25
03.05.2020, 16:04  [ТС]
Нет. Строк может быть сколько угодно.
"Дан двумерный массив A[n][2], n = 2..255."
То есть столбцов всего 2, а строк в диапазоне от 2 - 255.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
03.05.2020, 16:11
Цитата Сообщение от GaniBLLO Посмотреть сообщение
Нет. Строк может быть сколько угодно.
А ну да, тогда сделай сортировку столбца (в принципе, здесь не имеет значения строка или столбец, просто меняешь индексы местами).

Добавлено через 3 минуты
Хотя, конечно вот эта фраза
Цитата Сообщение от GaniBLLO Посмотреть сообщение
Пользователь вводит число (1 или 2) в ответ на вопрос, по возрастанию элементов какой из строк следует сортировать массив в первую очередь, а по какому -- во вторую.
говорит о том, что должно быть именно две строки. И, по-моему, это правильно

Добавлено через 1 минуту
Цитата Сообщение от GaniBLLO Посмотреть сообщение
Дан двумерный массив A[n][2]
Скорее всего здесь ошибка, должно быть A[2][n]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2020, 16:11
Помогаю со студенческими работами здесь

Замена в тексте значений из массива
есть массив кодов смайликов и их названия$array = как можно заменить все коды (&amp;#_128522) на ссылки вида &lt;img class=&quot;emoji&quot;...

Замена отрицательных значений массива на 0
Задание: Напишите программу, которая удаляет из одномерного целочисленного массива все отрицательные числа. Освободившееся место в правой...

Замена значений элементов двумерного массива
Напишите программу формирования массива размером 5х5 с помощью датчика случайных чисел. Замените в нем значения элементов, сумма индексов...

Замена значений внутри массива Matlab
Всем доброго времени суток! Имеется матрица A размером со значениями от -1 до 1. Необходимо перевести ее в тип uint8, т.е. чтобы значения...

Замена значений в столбцах двумерного массива с использованием StringGrid
пожалуйста!!!! очень надо..)


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru