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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Пожалуйста, помогите решить задачу с Динам-и массивами, Не могу написать программу(
сообщение
Сообщение #1


Новичок
*

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

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


Даны три матрицы целого типа произвольной размерности(размер вводится пользователем). Для каждой матрицы отсортировать столбцы в порядке возрастания их максимальных элементов(модерницированным методом пузырька). Предусмотреть обработку ошибок и удобный интерфейс. Прошу помогите....

Добавлено через 4 мин.
Программу нужно написать на языке Паскаль
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

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

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


Смотрел?
Динамические массивы и матрицы
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Да я уже вбивал различные готовые коды, но везде какие нибудь ошибки...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
везде какие нибудь ошибки...
Это где ошибки? В FAQ-е??? Покажи пальцем, где именно, в каком коде и какая ошибка у тебя возникает. А то, что ты
Цитата
уже вбивал различные готовые коды
меня как-то мало интересует. Я не телепат, чтобы знать, какие коды ты вбивал...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Цитата(volvo @ 14.02.2009 12:08) *

Это где ошибки? В FAQ-е??? Покажи пальцем, где именно, в каком коде и какая ошибка у тебя возникает. А то, что ты меня как-то мало интересует. Я не телепат, чтобы знать, какие коды ты вбивал...

Вписываю программу, у меня куча цифр на черном экране причем не в виде матрицы а просто срокой и много а в конце еррор написано....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

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

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


Вписываю программу


Тебе же ответили уже -
Покажи пальцем, где именно, в каком коде и какая ошибка у тебя возникает.


Приложи сюда свой код и данные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


ВОТ ГОТОВАЯ ПРОГРАММА VOLVO ПО МАТРИЦАМ-
{
Обязательно отключить проверку индексов,
иначе возникнет ошибка времени исполнения
}
{$R-}
Type
TType = Word; { Или любой другой тип }
Type
PVector = ^TVector;
{ Это - одна "строка" динамической матрицы }
TVector = Array[1 .. 1] of TType;

PDynMatrix = ^TDynMatrix;
{ Сама матрица - представляется как массив указателей на "строки" }
TDynMatrix = Array[1 .. 1] of PVector;

Var
{ Через эту переменную будет осуществляться вся работа с матрицей }
mxDynamic: PDynMatrix;
n, i, j: Word; - 1АЯ ОШИБКА( при присвоении Word происходит косяк с циклами....)
Begin
Write('n = '); ReadLn(n);

{ Выделяем память под указатели на "строки" }
GetMem(mxDynamic, n * SizeOf(PVector));
{ И для каждой "строки" - выделяем память для хранения данных }
For i := 1 To n Do
GetMem(mxDynamic^[i], n * SizeOf(TType));

(*** Работаем с матрицей ***)
{
Динамическая матрица представлена немного иначе,
чем динамический массив, поэтому для того, чтобы обратиться
к ее элементу, необходимы 2 операции разыменования указателей.
Пример:
}
For i := 1 To n Do { Строки }
For j := 1 To n Do { Столбцы (элементы строки) }
mxDynamic^[I]^[J]:=I*J;

For i := 1 To n Do Begin
WriteLn;
For j := 1 To n Do
Write(mxDynamic^[I]^[J]:4) - 2АЯ ОШИБКА ТУТ (не знаю что изменить....);
End;

(*** Закончили работу с матрицей - уничтожаем ее ***)

{ Освобождаем память в обратном порядке: }
{ Сначала - удаляем все "строки" }
For i := 1 To n Do
FreeMem(mxDynamic^[i], n * SizeOf(TType));
{ А теперь и указатели на них ... }
FreeMem(mxDynamic, n * SizeOf(PVector));
End.

И я не знаю как написать сортировку матрицы - чтобы поменять местами столбцы. Кто нибудь может показать код?

Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


Мне кто - нибудь поможет????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Поможет. Поиск по форуму. Я специально выкладывал пример описания типов для быстрого перемещения столбцов. Второй раз я то же самое делать не буду. А за те полмесяца, что ты ждешь ответа, можно было уже и самому давно разобраться, придумать свой алгоритм с нуля и написать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Не можете алгоритм вставить в эту темку а то я найти ничего не могу,или хотя бы ссылку на ту страницу где он приведен, лазию нигде ничего найти не могу( а с планом самому разобраться не могу, так как препод за весь курс объяснил только как работать с динамической памятью и все( приходится просто искать хоть что то работоспособное(помогите прошу оч....(
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


program lab_9;

const
n = 10;
m = 9;

k = 5;

var
a: array[1 .. n*m] of integer;
b, j, t, i: integer;

begin
randomize;
for i := 1 to n*m do begin
a[i]:=random(20)-10;
write(a[i]:4);
if i mod n = 0 then writeln;
end;
writeln;

for i:=1 to m do begin
b:=a[(i-1)*n+1];
a[(i-1)*n+1]:=a[(i-1)*n+k];
a[(i-1)*n+k]:=b;
end;

for i:=1 to n*m do begin
write(a[i]:4);
if i mod n = 0 then writeln;
end;
readln;
end.

Вот что нашел не знаю про это вы говорили или нет? но в код я малость не понимаю...(

Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Знаток
****

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

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


а про код забыл чтобы в коде надо всю программу обозначить


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

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

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


Так выше прведенный код меняет столбцы или я что то не понимаю? киньте ссылку страницы на которой приведен пример перемещения столбцов динамической матрицы
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

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

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


Кто- нибудь подскажет?((((((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

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

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


Ну можете скинуть ссылку на код, где меняются столбцы местами или программный код скопировать? я никак не могу найти...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

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

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


Вообщем своими усилиями сделал программу....никто так и не помог( но у меня еще вопрос, нашел готовый код внешнего интерфейса от Volvo , в процедуру вбиваю свой код программы...но...выдает ошибку...не пойму почему вот код:
{$S+}
program Prog4;
uses crt;
Type
MenuType = (Vertical, Horizontal);

const
width = 12; nItems = 4;

optText1: array[0 .. pred(nItems)] of string = (
'Option #1', 'Option #2', 'Option #3', 'Exit'
);

optNormal = LightGray;
optSelected = Yellow;

var
X, Y,
selected,
row: integer;
_style: menuType;


procedure MakeMenu (optText: array of string; MaxItems: integer);
var
i, _X: byte;
begin
Y := row;
_X := X;
for i := 0 to MaxItems-1 do
begin
GoToXY (_X, Y);
if i = selected then
TextColor (optSelected)
else
TextColor (optNormal);
write (optText[ i ]);

If _style = Horizontal Then
inc (_X, width + 1)
Else
inc (Y, 2);
end;
end;

function MenuOption (optText: array of string; MaxItems: integer): byte;
var
ch: char;
begin
selected := 0;

If _style = Vertical Then Begin
X := (80 - width) div 2;
row := (25 - MaxItems) div 2;
End
Else Begin
X := (80 - MaxItems * width) div 2;
row := 2;
GotoXY(1, row); ClrEol;
End;

repeat
MakeMenu (optText, MaxItems);

ch := readkey;
if ch = #0 then
ch := readkey;

case ch of
#80, #77: {Down/Right}
begin
inc (Selected);
if Selected = MaxItems then
Selected := 0;
MakeMenu (optText, MaxItems);
end;

#72, #75: {Up/Left}
begin
dec (Selected);
if Selected < 0 then
Selected := MaxItems-1;
MakeMenu (optText, MaxItems);
end;
end;
until ch = #13; {Enter}
MenuOption := Selected + 1;
TextColor (optNormal);
If _style = Vertical Then
clrscr;
end;

type
atype = array [1..90,1..90] of integer;
btype = array [1..90] of integer;

procedure Proc_1;
var
a22:atype;
b22:btype;
i22,j22,i1,j1,n22,max,n2,min,c22,k22,q22,o22:integer;
begin {Proc_1}
ClrScr;
Write('Vvedite razmernost (n>0). n=');
Readln(n22);
writeln('Vvedite Matrisu A:');
for i22:=1 to n22 do
for j22:=1 to n22 do begin
Write('Vvedite element Matristy a[',i22,',',j22,']=');
readln(a22[i22,j22]);
end;
for i22:=1 to n22 do begin
for j22:=1 to n22 do
write(a22[i22,j22]:3);
writeln;
end;
Writeln;

for j22:=1 to n22 do begin
max:=a22[1,j22];
for i22:=1 to n22 do
if a22[i22,j22]>max then
max:=a22[i22,j22];
writeln('Maximalnuj element ',j22,' stolbtsa = ',max) ;
b22[j22]:=max;
end;

for k22:=1 to n22-1 do
for j22:=1 to n22-k22 do
if (b22[j22]>b22[j22+1]) then
begin
for i22:=1 to n22 do
begin
c22:=a22[i22,j22];
a22[i22,j22]:=a22[i22,j22+1];
a22[i22,j22+1]:=c22;
end;
c22:=b22[j22];
b22[j22]:=b22[j22+1];
b22[j22+1]:=c22;
end;
Writeln;
Writeln('Otsortirovannya Matrista A: ');
for i22:=1 to n22 do begin
for j22:=1 to n22 do write(a22[i22,j22]:3);
writeln;
end;
ReadLn;
end;

procedure Proc_2;
begin
ClrScr;
WriteLn('#2 selected ...');
ReadLn;
end;

procedure Proc_3;
begin
ClrScr;
WriteLn('Other selected ...');
ReadLn;
end;

var
Option: byte;

begin
_style := Vertical;
repeat
clrscr;
Option := MenuOption (optText1, nItems);
case option of
1: Proc_1;
2: Proc_2;
3: Proc_3;
end;
until Option = nItems;
end.

Посмотрите плиз( (другие процедуры не удалял, решил оставить пока что все как есть)

Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

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

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


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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(VovaNs @ 16.03.2009 12:03) *
тут никого нету? удаляйте тему, если никто не может помочь....(
А знаешь, почему никто не жаждет тебе помогать? Ты пишешь: "выдает ошибку". А какую именно - это тебе уже лень написать. И лень поставить тэги (хотя это сказано в Правилах). Ну, хорошо, я потратил свое время, расставил тэги (заметь, нормальный пользователь не смог бы это сделать, так что никаких отступов, если он будет пытаться запускать твои творения). Запустил твою прогу - отработала нормально, никаких ошибок. И что мне теперь делать? Встать перед тобой на колени и выпрашивать, чтоб твоя царственная особа соизволила добавить пару слов про то, какая ошибка, при каких условиях возникает?

Почему нельзя избавить тех, у кого просишь помощи, от лишней работы?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

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

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


Ошибку выдает в первой процедуре на начале(begin)- error 202:stack overflow error. (при запуске программы, а не при компиляции)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


?
***

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

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


Цитата
error 202:stack overflow error.


error 202:stack overflow error. (Переполнения стека). Эта ошибка генерируется на входе в процедуру или функцию, скомпилированую в режиме {$S+} , если нет достаточной области для размещения локальных переменных подпограммы. Слудует увеличить размер стека , используя директиву компилятора $M. Данная ошибка может также вызиватся циклической рекурсией или процедурой на ассемблере, которая не подреживаетстек.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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