Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Предисловие. Познаю С++ только 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
По умолчанию

Двумерный массив здаётся так
Код:
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
По умолчанию

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

Код:
#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
По умолчанию

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
По умолчанию

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

Код:
#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
По умолчанию

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

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

Цитата:
Сообщение от 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
По умолчанию

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

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

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

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

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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