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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2012, 18:38   #1
Travi the Hedgehog
 
Регистрация: 07.11.2011
Сообщений: 9
Печаль Задачи в TurboPascal

Модем мой еле пашет, по этому я зайду завтра днём.
Кму не лень, решите мне две задачки на ТурбоПаскале. Они обе зачётные, и я уже замучился их переделывать, поскольку они у меня не получаются. Велено мне принести их 10 числа, или отчисление. За помощью сюда я решил зайти именно в последний момент. Задачи:
1 "Отсортируйте столбцы матрицы по убыванию."
2 "Дан двумерный массив. Найти наименьший отрицательный элемент выше главной диагонали и наибольший положительный элемент ниже главной диагонали с указанием их индексов. Создать новый массив, в котором указанные элементы поменяются местами."

Везде начальный массив надо ввести вручную.
Кому не лень, помогите.
Travi the Hedgehog вне форума Ответить с цитированием
Старый 05.01.2012, 18:55   #2
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

2 задача поиск максимального и минимального элементов...думаю ввод напишешь сам
Код:
min := 32767;
  for i := 1 to n-1 do
  begin
      for j := i+1 to n do
      begin
        if a[i,j] < min then
        begin
          min := a[i,j];
        end;
    end;
  end;

max := -32768;
  for i := 2 to n do
  begin
      for j := 1 to i-1 do
      begin
        if a[i,j] > max then
        begin
          max := a[i,j];
        end;
    end;
  end;
__________________________________
помог?!-Нажми на весы будь мужиком бл*ать!!!=)
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 05.01.2012 в 19:06.
McFrey вне форума Ответить с цитированием
Старый 05.01.2012, 19:03   #3
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

1)
Код:
Program by_McFrey;
const nrow=3;
ncol=4;
Type
 matrix=array [1..nrow,1..ncol] of integer;    

var
 a:matrix;


Procedure input (var a:matrix);
var i, j:integer;
Begin
writeln ('Введите элементы массива ');
for i:=1 to nrow do       
for j:=1 to ncol do
readln(a[i,j]);
end;


Procedure output (a:matrix);
var i, j:integer;
begin
for i:=1 to nrow do
 begin
for j:=1 to ncol 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 ncol do
  for j := nrow 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.
__________________________
помог?!-нажми на весы! будь мужиком бл*ать!=)
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 05.01.2012 в 19:36.
McFrey вне форума Ответить с цитированием
Старый 06.01.2012, 19:30   #4
Travi the Hedgehog
 
Регистрация: 07.11.2011
Сообщений: 9
По умолчанию

По поводу второй задачи.
У меня почти всё так же и есть. Единственная проблема, это то, что при выводе второй матрицы, меняется местами лишь один элемент. Можете расписать эту процедуру?

По поводу первой задачи.
Я поменяю немного ввод матрицы, поскольку надо так же самостоятельно вводить и её размерность. Но это не повод для проблемы.
Я сделал всё так же, но и в этом типе программы та же ошибка, что и у меня. В некоторых столбцах матрицы сортировка не происходит. В чём может быть проблема?

PS:
И я не знаю, где во второй задаче надо поставить команду, чтобы каждый раз программа начиналась с чистого листа.
Я начинаю печатать clrscr, но турбопаскаль с какой-то радости просит поставить после этой команды двоеточие и тип. Куда вписать эту команду в первой задачи?

Последний раз редактировалось Travi the Hedgehog; 06.01.2012 в 19:35.
Travi the Hedgehog вне форума Ответить с цитированием
Старый 06.01.2012, 19:37   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Я начинаю печатать clrscr
Код:
uses crt;
добавь после
Код:
Program by_McFrey;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 06.01.2012, 19:44   #6
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

по второй задаче: чтобы поменять 2 элемента максимальный и минимальный заведи для каждого из них дополнительную переменную, в которой будут хранится порядковые номера этих элементов, и соответственно через присваивание просто поменяй их местами...на мой взгляд это самый простой вариант
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 06.01.2012, 19:49   #7
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

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

Спасибо за совет по второй задаче) Всё заработало.

Вот с первой я уже замучался.
Я попробовал переделать выше предложенный мне пример так, чтобы можно было задавать своё количество строк и столбцов для матрицы. И тут у меня всё начинает улетать. Либо матрица работает, но очень маленькая (3х3 максисмум) и появляются ещё лишние строки заполненые нулями, либо ошибка параметров диапозона. Как надо сделать так, чтобы во второй задаче можно было самостоятельно вводить колличество строк и столбцов матрицы?

PS: процедуру прошли ещё не до конца, а на практике её не было совсем. 100% не могу правильно задать самостоятельный ввод кол-ва строк и столбцов матрицы из-за того, что тема не до конца пройдена.
Travi the Hedgehog вне форума Ответить с цитированием
Старый 07.01.2012, 18:49   #9
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

без проблем))...надеюсь ты действительно пытался разобраться с 1-ой задачей, держи
Код:
Program by_McFrey;
const nrow=100;
ncol=100;
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.
только вот не знаю...будут ли ругаться за глобальные переменные, нас ругают, если будут, то их значения можно просто напросто передавать в процедуру как параметр.
____________________________
помог?!-жми на весы!
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...

Последний раз редактировалось McFrey; 07.01.2012 в 18:54.
McFrey вне форума Ответить с цитированием
Старый 07.01.2012, 20:09   #10
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