IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Задача на двумерные массивы!, С++
-Дмитрий-
сообщение 23.11.2006 19:08
Сообщение #1


Гость






Задание:
Расположить столбцы матрицы D[M, N] в порядке возрастания элементов k-ой строки (1 ≤ k ≤ М).
Мой вариант:
#include <iostream.h>
#include <conio.h>

void main ()
{

int *a[5][6],aor,n,m,str,stlb,i,k;
clrscr();
cout << "\nEnter number of rows (max 5): ";
cin >> str;
cout << "\nEnter number of cols (max 5): ";
cin >>stlb;
for (n=1; n<=str;n++)
 {
 for (m=1; m<=stlb; m++)
  {
  cout << "\n Enter a["<< n << ","<<m << "]:";
  cin >> *a[n][m];
  }
 }
  cout << "Enter K:\n";
  cin >> k;

int f=1;
	 for (int g=1; (g<=stlb) && (f==1); g++)
	   {
	  f=0;
	  for (int j=1; j<=stlb-g; j++)
		 {
		if (a[k][j]>a[k][j+1])
		  {
		   for (int e=1; e<=str; e++)
		   {
			 a[e][stlb+1]=a[e][j];
			 a[e][j]=a[e][j+1];
			a[e][j+1]=a[e][stlb+1];
			 f=1;
		  }
		 }
	   }
}

}

Программа компилируется, но постоянно вываливается с аварийным завершением =(( Подскажите пожалуйста где ошибка?
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
volvo
сообщение 23.11.2006 19:16
Сообщение #2


Гость






Ну, во-первых, массивы индексируются от 0 до N-1, а не от 1 до N... А во-вторых, зачем тебе матрица УКАЗАТЕЛЕЙ на целые?
 К началу страницы 
+ Ответить 
Дмитрий
сообщение 23.11.2006 20:03
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


После модификации кода по Вашему совету получилось следующее:
#include <iostream.h>
#include <conio.h>

void main ()
{

int a[5][6],aor,n,m,str,stlb,i,k;
clrscr();
cout << "\nEnter number of rows (max 5): ";
cin >> str;
cout << "\nEnter number of cols (max 5): ";
cin >>stlb;
for (n=0; n<=str-1;n++)
{
for (m=0; m<=stlb-1; m++)
  {
  cout << "\n Enter a["<< n << ","<<m << "]:";
  cin >> a[n][m];
  }
}
  cout << "Enter K:\n";
  cin >> k;

int f=1;
	 for (int g=0; (g<=stlb-1) && (f==1); g++)
	   {
	  f=0;
	  for (int j=0; j<=stlb-g-1; j++)
		 {
		if (a[k][j]>a[k][j+1])
		  {
		   for (int e=0; e<=str-1; e++)
		   {
			 a[e][stlb+1]=a[e][j];
			 a[e][j]=a[e][j+1];
			a[e][j+1]=a[e][stlb+1];
			 f=1;
		  }
		 }
	   }
}

}

Программа стала компилироваться, но результат не отличается от первоначальных данных. Я пытался использовать сортировку пузырьком, переставляя элементы массива, которые сами являются массивами! Допустил ли я какую-либо ошибку в алгоритме? Может стоит использовать какой-нибудь другой?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алена
сообщение 23.11.2006 20:59
Сообщение #4


Гость






Вот так лучше?

#include <iostream.h>
#include <conio.h>

int main() {

  int a[5][6], aor, n, m, str, stlb, i, k;

  clrscr();

  cout << "\nEnter number of rows (max 5): "; cin >> str;
  cout << "\nEnter number of cols (max 5): "; cin >>stlb;

  for (n=0; n < str; n++)
    for (m=0; m < stlb; m++) {
      cout << "\n Enter a["<< n << ","<<m << "]:";
      cin >> a[n][m];
    }
  cout << "Enter K [0 .. " << n-1 << "]:\n"; cin >> k;

  int f=1;
  for (int g=0; (g < stlb) && (f==1); g++) {

    f=0;
    for (int j = stlb - 1; j > g; j--)
      if (a[k][j - 1] > a[k][j])
        for (int e=0; e<=str-1; e++) {
          a[e][stlb]=a[e][j-1];
          a[e][j-1]=a[e][j];
          a[e][j]=a[e][stlb];
          f=1;
        }
  }

  for (n=0; n < str; n++) {
    for (m=0; m < stlb; m++) {
      cout << a[n][m] << " ";
    }
    cout << endl;
  }
  return 0;

}
 К началу страницы 
+ Ответить 
Дмитрий
сообщение 23.11.2006 22:57
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Да, заметно лучше smile.gif Спасибо большое! А можно узнать в чем ошибка была?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 8.08.2025 3:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"