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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Задача на двумерные массивы!, С++
сообщение
Сообщение #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;
}
}
}
}

}

Программа компилируется, но постоянно вываливается с аварийным завершением =(( Подскажите пожалуйста где ошибка?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ну, во-первых, массивы индексируются от 0 до N-1, а не от 1 до N... А во-вторых, зачем тебе матрица УКАЗАТЕЛЕЙ на целые?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;

}
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


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

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

 





- Текстовая версия 27.09.2020 12:00
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name