![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Замена произвольных столбцов местами(массив) |
|
|
C/C++ - Замена произвольных столбцов местами(массив)
|
Пользователь Сообщения: 98 |
Всем привет, хотел посоветоваться решаю тут задачку такого плана:
Дана произвольная матрица размером 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 |
|