|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Замена произвольных столбцов местами(массив) |
|
|
C/C++ - Замена произвольных столбцов местами(массив)
|
Пользователь Сообщения: 98 |
Профиль | Отправить PM | Цитировать
Всем привет, хотел посоветоваться решаю тут задачку такого плана:
Дана произвольная матрица размером 10:10 поменять произвольные значение столбцов местами. Вобщем я думал как ето лучше сделать и вот примерно что надумал: #include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <conio.h> int main() { int arr[10][10]={{0,0}}; int i,j; int sum = 0; randomize; for(i = 0; i < 10; i++) for(j=0; j< 10; j++) { arr[i][j]=random(5); } printf("Massiv: n [ "); for(i = 0; i < 10; i++) for(j=0; j< 10; j++) printf("%i ",arr[i][j]); printf("]\n"); // вывод на экран нашего массива Думаю,что случайно заменять не совсем получится(или я не знаю как ) Вобщем я хочу использовать псевдослучайную замену. Тоесть сравнивать к примеру первое значение массива со всеми последующими если оно ну допустим arr[0][0]>arr[i][j](соответственно условие в цикле) значит переместить его в конец массива(тоесть присвоит arr[0][0]==arr[9][9]) Вобщем хотел спросить, таким методом мне прийдётся каждое значение массива сравнивать с последующим и переносить его в конец, а если к примеру массив 100на100 то такой метод вызывает у меня сомнение может подскажите что то более практичное! Зарание благодарю!!! |
|
Отправлено: 16:04, 20-03-2009 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать ShadowMas, заполнять случайными числами элементами массива получается, так почему не получится тогда сделать выборку по столбцам массива? Главное проверять, что б во второй раз одно и тоже число не выпало, а то менять не с чем будет.
Насчёт псевдослучайной замены, это основываясь на предыдущей генерации случайных чисел массиву идёт справнее что больше с тем и работать? Как уже выше предложил - тем же методом что и заполняются элементы массива с помощью функции random(). |
Отправлено: 17:50, 20-03-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Честно говоря, задачу не совсем понял.
Цитата ShadowMas:
Цитата ShadowMas:
Немного бы код изменил, выделил цветом что добавил, при выполнении, будет наглядно видно содержимое массива, не в ряд, а десять строк в десять рядов. |
||
------- Отправлено: 18:14, 20-03-2009 | #3 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Да спасибо так конечно будет нагляднее,я как то не подумал .
Да я извиняюсь за не совсем коректную постановку вопроса. Вообщем суть в том что бы в массиве размерностью 10на10 arr[10][10] ,случайным образом поменять местами значения столбиков ну к примеру arr[0][0] меняем (случайным образом) с arr[0][9] или arr[1][7] или с любым другим arr[i][j] Дело в том что я не как не могу условие придумать оптимальное, что бы не приходилось каждый раз сравнивать одно значение с последующими и переносить его в конец или там на шаг в перёд или ещё куда то. Это вообще то не очень удобно каждый раз сравнивать, а вот как описать проще не как не придумаю |
Отправлено: 18:57, 20-03-2009 | #4 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Извиняюсь если неправильно понял снова, но как понял, так и решил. Цель, перебросить все значения случайного столбца массива в другой столбец. Короче поменять содержимое двух столбцов. Красным цветом выделил, что нужно дописать. Единственно, можно вместо конкретных значений номеров столбца, генерировать случайные.
|
|
------- Отправлено: 19:24, 20-03-2009 | #5 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:04, 20-03-2009 | #6 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:01, 20-03-2009 | #7 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать ShadowMas, В таком виде, вместо каждого следующего элемента одного столбца, будет генерироваться каждый раз, разный.
... for(int i = 0; i < 10; i++){ random(j); temp = arr[i][j]; arr[i][j] = arr[i][0]; arr[i][0] = temp; } ... ... int randomColum; ... randomColumn = random(j); for(int i = 0; i < 10; i++){ temp = arr[i][randomColumn]; arr[i][randomColumn] = arr[i][0]; arr[i][0] = temp; Тогда числа будут генерироваться каждый раз другие. |
------- Отправлено: 21:14, 20-03-2009 | #8 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Спасибо всем за помощь!!!
Ушел пробывать |
Отправлено: 23:01, 20-03-2009 | #9 |
Пользователь Сообщения: 98
|
Профиль | Отправить PM | Цитировать Да люди спасибо за помощь вот что получилось :
#include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <conio.h> int main() { int arr[10][10] = {{0,0}}; int i, j, temp,a; int sum = 0; randomize; for(i = 0; i < 10; i++) for(j=0; j< 10; j++){ arr[i][j]=random(5); } printf("Massiv: n \n\n"); for(i = 0; i < 10; i++){ for(j = 0; j < 10; j++) printf("%i ",arr[i][j]); if(j % 10 == 0) cout<<endl; } cout<<"\n\n Perenosim stolbsi\n"; cout<<"ukazite perviy stolbik"<<endl; cin>>j; cout<<"ukazite vtoroy stolbik"<<endl; cin>>a; for(int i = 0; i < 10; i++){ temp = arr[i][j]; arr[i][j] = arr[i][a]; arr[i][a] = temp; cout<<endl; } for(i = 0; i < 10; i++){ for(j = 0; j < 10; j++) printf("%i ",arr[i][j]); if(j % 10 == 0) cout<<endl; getch(); return 0; } } |
Отправлено: 18:46, 21-03-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] как отключить показ дополнительных столбцов в проводнике? | ALEXEY_DFD | Microsoft Windows 2000/XP | 5 | 31-03-2016 18:58 | |
Диски поменялись местами | cheap | Хочу все знать | 3 | 15-11-2005 17:28 | |
MsOffice | Свойства столбцов в Access | sdiplo | Программирование и базы данных | 1 | 31-01-2005 09:45 | |
Поменять местами харды | DeadAdmin | Общий по Linux | 7 | 17-08-2003 13:47 | |
ListView редактирование столбцов | lesco | Программирование и базы данных | 2 | 11-04-2003 22:23 |
|