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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2019, 11:26   #1
daunina
 
Регистрация: 27.10.2019
Сообщений: 4
По умолчанию Получить одномерный массив,элементами которого будут номера максимальных отрицательных элементов в соответствующих строках матрицы

Код:
Program Lab2; 
uses crt; 
type matr = array[1..10,1..10] of integer; 
mass = array[1..10] of integer; 

procedure zadanie(); 
begin 
writeln('****'); 
writeln('№1-Получить одномерный массив,элементами которого будут номера максимальных отрицательных элементов в соответствующих строках матрицы.'); 
writeln('№2-В полученном векторе решить задачу поиска номера первого нулевого элемента'); 
writeln('№3-Отсортировать в матрице столбцы по убыванию значений элементов в первой строке.'); 
end; 

procedure InputMatr (var A: Matr; n,m:integer);
var i, j:integer;
begin
    for i:= 1 to n do 
    for j:=1 to m do 
    begin
      write ('Введите элементы');
      gotoxy (5*j, 13+i);
      readln(A[i,j]);
    end;
end;

procedure MatrToMas (var A: matr; n,m,max:integer; var B: mas);
var i, j: integer;
begin
  for i:= 1 to n do begin
    B[i]:=0;
    max := -maxint;
    for j:= 1 to m do
      if (A[i]<0) and (A[i]>max) then begin
        max:= A[i];
        B[i]:= j;
      end;
  end;
end;



Function FindPlus(var A:mas;n:integer):integer;
var i:integer;
begin
i:=1;
while (i<=m)and(A[i]<>0)do
j:=j+1;
if i<=n then FindPlus:=i
else FindPlus:=0;
writeln ('Таких нет');
end;



procedure Shell(var a:matr; n,m:integer);
const t:array[1..5] of integer = (9,5,3,2,1);
var i,k,v,g,j:integer;
begin
  for g:=1 to 5 do begin
    k := t[g];
    for i:=1 to n-k do begin
      if a[i,j]<a[i+t,j] then 
      
        v:=a[i,j]; a[i,j]:=a[i+t,j]; a[i+t,j]:=v;
      end; 
  end;
end;


Procedure OutputMatrMas(var a:matr;n,m:integer);
var i:integer;
begin
  for i:=1 to n do begin
    for j:=1 to m do begin
      gotoxy(5*j, 5+i);
      write(a[i,j]);
    end;
end;
end.
Что в этом коде не правильно?
может кто исправить?
daunina вне форума Ответить с цитированием
Старый 27.10.2019, 14:52   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от daunina Посмотреть сообщение
procedure InputMatr (var A: Matr; n,m:integer);
не проверял, но надпись 'Введите элементы' должна у Вас "скакать" по экрану.
Зачем это сделано?


Цитата:
Сообщение от daunina Посмотреть сообщение
procedure MatrToMas (var A: matr; n,m,max:integer; var B: mas);
тут вроде бы всё нормально.


Цитата:
Сообщение от daunina Посмотреть сообщение
Function FindPlus(var A:mas;n:integer):integer;
Это сделано неверно. Во-первых, индекс m для чего-то проверяется, хотя он там не нужнен, во-вторых, это не скомпилируется (т.к. m не передаётся в функцию - что правильно, т.к. он в ней не нужен). В-третьих ,как то сложно всё сделано.
В чётвёртных, j не описано, В-пятых, надпись "Таких нет" всегда будет выдаваться.

сравните:
Код:
Function FindPlus(var A:mas;n:integer):integer;
var i:integer;
begin
  FindPlus:=0;
  for i:=1 to n do
       if A[i]=0 then begin
         FindPlus:=i;
         Exit
       end;
end;
и всё.


сортировка, по моему, тоже неправильно написана. Или я её просто не понял.
Цитата:
Сообщение от daunina Посмотреть сообщение
(9,5,3,2,1);
это ещё что за волшебные числа?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.10.2019, 15:40   #3
daunina
 
Регистрация: 27.10.2019
Сообщений: 4
По умолчанию

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

Последний раз редактировалось daunina; 27.10.2019 в 15:48.
daunina вне форума Ответить с цитированием
Старый 28.10.2019, 13:50   #4
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

Цитата:
Сообщение от daunina Посмотреть сообщение
Я сам понятия не имею. Написал так только потому, что у всей группе сортировка начинается именно так(да да, стадный инстинкт) и потому, что я вообще не понимаю сортировку шелла на паскале. А, ну еще также было написано в примере, который был записан на лекции.
В интернете вообще не нашел ничего по сортировке Шелла, которая хоть чуть чуть бы была похожа на тот пример, что я записал на лекции.
есть подозрение, что это данные на примере которых разбирают алгоритм сортировки
unbanned вне форума Ответить с цитированием
Старый 28.10.2019, 13:55   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от daunina Посмотреть сообщение
потому, что я вообще не понимаю сортировку шелла на паскале
А в вики не пробовали смотреть? Она ж простая.

Цитата:
Сообщение от unbanned Посмотреть сообщение
есть подозрение, что это данные на примере которых разбирают алгоритм сортировки
Нет никаких подозрений для тех, кто в курсе про эту сортировку. Это расстояния для грубых проходов.
p51x вне форума Ответить с цитированием
Старый 28.10.2019, 14:35   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Нет никаких подозрений для тех, кто в курсе про эту сортировку. Это расстояния для грубых проходов.
ага. и лично я тест на знание этой сортировки не прошёл...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2019, 14:38   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Обычно, не пишут их явно, а считаю по одной из формул, например, d = N/2, d/2, ...
p51x вне форума Ответить с цитированием
Старый 28.10.2019, 15:53   #8
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Нет никаких подозрений для тех, кто в курсе про эту сортировку. Это расстояния для грубых проходов.
Цитата:
Сообщение от p51x Посмотреть сообщение
Обычно, не пишут их явно, а считаю по одной из формул, например, d = N/2, d/2, ...
вот как! Спасибо)
P.S. вот так в один пост от магии назад к программированию
unbanned вне форума Ответить с цитированием
Старый 28.10.2019, 18:11   #9
daunina
 
Регистрация: 27.10.2019
Сообщений: 4
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А в вики не пробовали смотреть? Она ж простая.
Ну если что то знать, то, конечно, это кажется простым
daunina вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить массив В, элементы которого равны наименьшим значениям элементов строк матрицы А - C# Evelienn Помощь студентам 1 18.12.2017 21:07
Дан массив А, элементами которого являются n действительных чисел. Найти количество отрицательных элементов массива... ENTERPRISE2015 Паскаль, Turbo Pascal, PascalABC.NET 10 21.11.2015 20:20
сформировать одномерный массив как сумму отрицательных элементов строк матрицы Андрей564 Паскаль, Turbo Pascal, PascalABC.NET 10 20.06.2015 16:33
Найти одномерный массив элементы которого равны минимальным значениям в строках исходной матрицы и одномерный массив элементы... Richik123 Microsoft Office Excel 1 16.10.2013 15:45
Получить новый одномерный массив В,каждый элемент которого равен мин элементу строк исходной матрицы Artimbulidor Помощь студентам 6 29.12.2008 18:51