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

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

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

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


Новичок
*

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

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


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

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


Гуру
*****

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

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


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


Новичок
*

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

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


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


Гость






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


Новичок
*

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

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


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

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

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


Гуру
*****

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

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


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


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


Приложи сюда свой код и данные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
VovaNs
сообщение 16.02.2009 14:49
Сообщение #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 - 17.03.2009 4:17
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
VovaNs
сообщение 28.02.2009 11:50
Сообщение #8


Новичок
*

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

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


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


Гость






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


Гость






Не можете алгоритм вставить в эту темку а то я найти ничего не могу,или хотя бы ссылку на ту страницу где он приведен, лазию нигде ничего найти не могу( а с планом самому разобраться не могу, так как препод за весь курс объяснил только как работать с динамической памятью и все( приходится просто искать хоть что то работоспособное(помогите прошу оч....(
 К началу страницы 
+ Ответить 
VovaNs
сообщение 28.02.2009 15:36
Сообщение #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 - 17.03.2009 4:18
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 1.03.2009 12:05
Сообщение #12


Знаток
****

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

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


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


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


Новичок
*

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

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


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


Новичок
*

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

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


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


Новичок
*

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

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


Ну можете скинуть ссылку на код, где меняются столбцы местами или программный код скопировать? я никак не могу найти...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
VovaNs
сообщение 11.03.2009 12:12
Сообщение #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 - 17.03.2009 4:26
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
VovaNs
сообщение 16.03.2009 12:03
Сообщение #17


Новичок
*

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

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


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


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

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

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


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

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


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


Новичок
*

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

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


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


?
***

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

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


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


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

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

 



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