Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Название темы включает слова - "Помогите", "Спасите", "Срочно"
Название темы не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте >>>правила <<< и заново правильно создайте тему.
 
Опции темы
Старый 26.07.2008, 14:07   #1
EfiopianDIMON
 
Регистрация: 03.06.2008
Сообщений: 8
Репутация: 10
По умолчанию Сортировка строк двухмерного массива

Предисловие. Познаю С++ только 2,5 месяца, учимся пока в консоле, функции учить не начинали. Отсюда хотелось бы получить ответ простым кодом, желательно полным.
Задача: Создать двумерный массив. Отсортировать каждую строку по возрастанию. (Желательно методом пузырька и выбором)

Сложность вызывает переход от одномерного к двухмерному.
Если одномерный осилил, не сложно:

Код:

#include <iostream>
#include <time.h>
using namespace std;
void main ()
/*1.	Отсортировать в массиве из 10 чисел по возрастанию (метод пузырька).*/
{
	const int size=10;
	srand(time(0));
	int a[size];
	for(int i=0;i<10;i++)
	{
		a[i]=rand()%25;
		cout<<"a="<<a[i]<<"\n";
	}
	for(int i=0;i<size;i++)
	{
		for(int j=size-1;j>i;j--)
		{
			if(a[j]<a[j-1])
			{
				int tmp=a[j];
				a[j]=a[j-1];
				a[j-1]=tmp;
			}
		}
		cout<<"\t"<<"a="<<a[i]<<"\n";
	}

То для двухмерного не понял сколшько циклом нужно добавить и какие условия поставить.
Пожалуйста помогите!

Используйте тег <CODE>

Последний раз редактировалось merax; 26.07.2008 в 14:17.
EfiopianDIMON вне форума  
Старый 26.07.2008, 17:46   #2
Greblin
Меркантильный кю
Профессионал
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Адрес: ГЗ МГУ
Сообщений: 1,001
Репутация: 366

icq: 452325803
skype: igreblin
По умолчанию

Двумерный массив здаётся так
Код:

int a[size][size];

Соответсвенно, раз тебе надо только отсортировать элементы в каждой строчке, выглядеть это будет так:
Код:

for (int i = 0; i < 10; i++)
  {    
  for (j = 0; j < 10; j++)
        {
        a[i][j]=rand()%25;  
        cout << a[i][j] << " ";  
        }
  cout << "\n";
  } 
//это заполнение
for (int k = 0; k < size; k++)
//k - номер текущей строки
  {
  for(int i = 0;i < size; i++)   
    {  
    for (int j = size - 1; j > i; j--)  
      if (a[k][j] < a[k][j-1])  
        {  
        int tmp = a[k][j];  
        a[k][j] = a[k][j-1];  
        a[k][j-1] = tmp;  
        }     
    cout<<"\t"<<"a="<<a[k][i]<<"\n";   
    }
  }

__________________
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума  
Старый 26.07.2008, 19:12   #3
EfiopianDIMON
 
Регистрация: 03.06.2008
Сообщений: 8
Репутация: 10
По умолчанию

Спасибо, большое. Разобрался, финальный ответ получился таким:

Код:

#include <iostream>
#include <time.h>
using namespace std;
void main()
{
	srand(time(0));
	const int raw=5,col=5;
	int a[raw][col];
	for (int i = 0; i < raw; i++)   
  {      
  for (int j = 0; j < col; j++)  
        {  
        a[i][j]=rand()%10;    
        cout << a[i][j] << " ";    
        }  
  cout << "\n";   
  }    
	 cout << "\n";  
for (int k = 0; k < raw; k++)     
  {  
  for(int i = 0;i < col; i++)     
    {    
    for (int j = raw - 1; j > i; j--)    
      if (a[k][j] < a[k][j-1])    
       {    
        int tmp = a[k][j];    
        a[k][j] = a[k][j-1];    
        a[k][j-1] = tmp;
		    
        }        
        cout<<a[k][i]<<" ";  
    }  
  cout << "\n";  
 }  
}

Еще раз повторю про тег <CODE> и будет горчишник

Последний раз редактировалось merax; 26.07.2008 в 19:25.
EfiopianDIMON вне форума  
Старый 26.07.2008, 19:27   #4
Rembo
Участник клуба
 
Аватар для Rembo
 
Регистрация: 29.10.2007
Сообщений: 628
Репутация: 138
По умолчанию

EfiopianDIMON, а у вас это компилируется? Пока я строчку
Код:

void main()

не заменил на
Код:

int main()

(так как компилятор ругался на то, что функция main должна возвращать int) у меня прога не компилилась... Или я просто чего то не догоняю? тогда уж простите...

Последний раз редактировалось Rembo; 26.07.2008 в 19:29.
Rembo вне форума  
Старый 26.07.2008, 19:39   #5
EfiopianDIMON
 
Регистрация: 03.06.2008
Сообщений: 8
Репутация: 10
По умолчанию

Все нормально вышло, еще чуть-чуть поправил вышло:

Код:

#include <iostream>
#include <time.h>
using namespace std;
void main()
/*2. Создать двумерный массив. Отсортировать каждую строку по возрастанию.*/

{
	srand(time(0));
	const int raw=13,col=24;
	int a[raw][col];
	for (int i=0;i<raw;i++)   
  {      
  for (int j=0;j<col;j++)  
        {  
        a[i][j]=rand()%10;    
        cout <<a[i][j]<<" ";    
        }  
  cout <<"\n";   
  }    
	 cout <<"\n";  
for (int i=0;i<raw;i++)     
  {  
  for(int j=0;j<col;j++)     
    {    
    for (int k=col-1;k>j;k--)    
      if (a[i][k]<a[i][k-1])    
       {    
        int tmp=a[i][k];    
        a[i][k]=a[i][k-1];    
        a[i][k-1]=tmp;  
       }        
        cout<<a[i][j]<<" ";  
    }  
  cout <<"\n";  
 }  
}


Последний раз редактировалось merax; 27.07.2008 в 11:47.
EfiopianDIMON вне форума  
Старый 27.07.2008, 00:59   #6
como
Форумчанин
 
Регистрация: 26.07.2008
Сообщений: 116
Репутация: 62

icq: 225270844
По умолчанию

Цитата:
Сообщение от Rembo Посмотреть сообщение
EfiopianDIMON, а у вас это компилируется? Пока я строчку
Код:

void main()

не заменил на
Код:

int main()

(так как компилятор ругался на то, что функция main должна возвращать int) у меня прога не компилилась... Или я просто чего то не догоняю? тогда уж простите...
У него компилятор старый. Не поддерживает стандарт. По стандарту main должен быть объявлен как int main(), даже если она ничего не возвращает.
como вне форума  
Старый 27.07.2008, 10:05   #7
Rembo
Участник клуба
 
Аватар для Rembo
 
Регистрация: 29.10.2007
Сообщений: 628
Репутация: 138
По умолчанию

como, все, теперь понял
Rembo вне форума  
Старый 27.07.2008, 20:23   #8
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
Репутация: 110

icq: 57-67-57-14
По умолчанию

Цитата:
Сообщение от Rembo Посмотреть сообщение
EfiopianDIMON, а у вас это компилируется? Пока я строчку
Код:

void main()

не заменил на
Код:

int main()

(так как компилятор ругался на то, что функция main должна возвращать int) у меня прога не компилилась... Или я просто чего то не догоняю? тогда уж простите...
По поводу int/void main() можно прочитать здесь: http://programmersforum.ru/showthread.php?t=23353

Цитата:
Сообщение от como Посмотреть сообщение
У него компилятор старый. Не поддерживает стандарт. По стандарту main должен быть объявлен как int main(), даже если она ничего не возвращает.
Современный компилятор != следующий стандарту. Да, современные компиляторы все больше следуют стандарту, но некоторые все же отступают от него. Так VC++ 9.0 проглотит и void перед main().
filosof_x86 вне форума  
Старый 26.05.2009, 22:43   #9
вАтРуШкА
Новичок
 
Регистрация: 26.05.2009
Сообщений: 1
Репутация: 10
По умолчанию

у меня задача похожая,ток чуть условие другое.что надо сделать того чтобы упорядочить этот массив по элементам первой строки?
вАтРуШкА вне форума  
Старый 26.05.2009, 22:52   #10
Sazary
В тени
Профессионал
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,784
Репутация: 999
По умолчанию

вАтРуШкА, читайте правила. Один вопрос - одна тема.

Создайте свою тему и там выложите свои наработки по вашей задаче.
По вашему заданию: при сортировке сравнивайте элементы в первом столбце, а заменяйте сами строки.

Закрыто.
__________________
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума  
Закрытая тема

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой самый быстрый метод заполнения массива, например двухмерного? SkAndrew Общие вопросы Delphi 11 29.05.2008 13:23
Сортировка строк 2-мерного массива Mayday_007 Помощь студентам 1 04.04.2008 09:26
Передача двухмерного массива в функцию IgorKr Общие вопросы C/C++ 2 28.03.2008 02:11
Ввод двухмерного массива в Делфи через StringGrid KIRILL_FR Помощь студентам 2 24.02.2008 19:03
Сортировка массива строк StanPBH Помощь студентам 9 24.04.2007 00:34


13:46.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru