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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2012, 20:22   #11
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

нет, это не то....и у меня все замечательно работает pascal abc
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 07.01.2012, 20:33   #12
Travi the Hedgehog
 
Регистрация: 07.11.2011
Сообщений: 9
По умолчанию

По этому у меня и затруднения. В Pascal abc работы не принимаются .___.
Только через TurboPascal. Что это за ошибка?
Travi the Hedgehog вне форума Ответить с цитированием
Старый 07.01.2012, 20:41   #13
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

ошибка переполнения памяти стека....
Код:
Program by_McFrey;
const nrow=20;
ncol=20;
Type
 matrix=array [1..nrow,1..ncol] of integer;    

var
 a:matrix;
 m,n:integer;


Procedure input (var a:matrix);
var i, j:integer;
Begin
writeln('Введите число строк массива');
readln(m);
writeln('Введите число столбцов массива');
readln(n);
writeln ('Введите элементы массива ');
for i:=1 to m do       
for j:=1 to n do
readln(a[i,j]);
end;


Procedure output (a:matrix);
var i, j:integer;
begin
for i:=1 to m do
 begin
for j:=1 to n do     
write (a[i,j]:7);             
writeln;
 end;
readln;
end;


procedure sort(var a: matrix);
var i, j, k: integer;
    buf: integer;
begin
for i := 1 to m do
  for j := n downto 2 do
    for k := 1 to j-1 do
      if a[k, i] < a[k+1, i] then
        begin
	buf := a[k, i];
	a[k, i] := a[k+1, i];
	a[k+1, i] := buf;
	end;
end;

BEGIN          
input(a);  
output(a); 
sort(a);    
output(a);  
END.
попробуй так...я ограничил 20 строками и столбцами ввод массива...
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 07.01.2012, 20:56   #14
Travi the Hedgehog
 
Регистрация: 07.11.2011
Сообщений: 9
По умолчанию

Да, всё заработало.

С однозначными числами всё верно происходит, а вот при добавлении двухзначных...


К сожалению, препод добавляет элементы матрицы примерно в таком порядке.
Что добавить, чтобы так же сортировка была верна при добавлении и двухзначных чисел?
Travi the Hedgehog вне форума Ответить с цитированием
Старый 07.01.2012, 21:05   #15
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

блин...действительно щас помыслим почему так....
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 07.01.2012, 21:12   #16
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

используй такую сортировку
Код:
procedure sort (var mas: matrix; const rows, cols: byte;);
var
    i, j: byte;
    flag: boolean;
begin
    for j := 1 to cols do
        repeat
            flag := false;
            for i := 1 to (rows - 1) do
                if mas[i,j] < mas[i+1,j] then
                begin
                    flag := true;
                    mas[i,j] := mas[i+1,j] + mas[i,j];
                    mas[i+1,j] := mas[i,j] - mas[i+1,j];
                    mas[i,j] := mas[i,j] - mas[i+1,j];
                end;
        until flag = false;
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303

Последний раз редактировалось Hacker19_90; 07.01.2012 в 21:15.
Hacker19_90 вне форума Ответить с цитированием
Старый 07.01.2012, 21:26   #17
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Я думаю McFrey имел ввиду преподователя, а не компилятор. А ошибкатакая скорее всего из-за неправильного обращения к массиву, другими словами у тебя матрица 3х3, а обращение происходит, например, к A[3,4], как следствие повреждение стека.

Update: хренасе, вовремя отписался Оо
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 07.01.2012, 21:27   #18
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

попробуй...
Код:
program by_McFrey;

const
  nrow = 20;
  ncol = 20;

type
  matrix = array [1..nrow, 1..ncol] of integer;    

var
  a: matrix;
  m, n: integer;


procedure input(var a: matrix);
var
  i, j: integer;
begin
  writeln('Введите число строк массива');
  readln(m);
  writeln('Введите число столбцов массива');
  readln(n);
  writeln('Введите элементы массива ');
  for i := 1 to m do       
    for j := 1 to n do
      readln(a[i, j]);
end;


procedure output(a: matrix);
var
  i, j: integer;
begin
  for i := 1 to m do
  begin
    for j := 1 to n do     
      write(a[i, j]:7);             
    writeln;
  end;
  readln;
end;



procedure sort (var a: matrix);
var
    i, j: byte;
    flag: boolean;
begin
    for j := 1 to n do
        repeat
            flag := false;
            for i := 1 to (m - 1) do
                if a[i,j] < a[i+1,j] then
                begin
                    flag := true;
                    a[i,j] := a[i+1,j] + a[i,j];
                    a[i+1,j] := a[i,j] - a[i+1,j];
                    a[i,j] := a[i,j] - a[i+1,j];
                end;
        until flag = false;
end;

begin
  input(a);  
  output(a); 
  sort(a);    
  output(a);  
end.
P.S. спасибо Hacker19_90
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 07.01.2012, 21:53   #19
Travi the Hedgehog
 
Регистрация: 07.11.2011
Сообщений: 9
По умолчанию

Да! Всё теперь заработало исправно!
Спасибо вам всем огромное! Вы мне здорово помогли (:
Travi the Hedgehog вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
turboPascal masterlomaster Помощь студентам 1 26.04.2011 19:45
TurboPascal masterlomaster Помощь студентам 0 26.04.2011 15:36
TurboPascal - help! Lexone Помощь студентам 5 29.03.2009 15:38
Помогите по TurboPascal Vetal07 Помощь студентам 3 11.11.2008 18:51