Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.01.2020, 20:39
Sir Cat Sir Cat вне форума
Прохожий
 
Регистрация: 13.01.2020
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Почему не работает должным образом?

Есть код:
Код:
program lab9;
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
const N=6;
var
input, output: TextFile;
C: array[1..N, 1..N] of integer;
i, i2,n1,n2,k: integer;
found: boolean;
begin
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
if ParamCount < 2 then begin
Writeln('Не заданы параметры программы');
Readln;
exit;
end;
Assign(input, ParamStr(1));
Assign(output, ParamStr(2));
try
reset(input);
try
try
rewrite(output);
try
try
Readln(input,n1,n2);
for i:=1 to n1 do
begin
for i2:=1 to n2 do
begin
read(input, C[i, i2]);
end;
end;
found:=false;
i:=2;
i2:=1;
while ((not found) and (i2<=n2)) do
begin
while ((not found) and (i<=n1)) do
begin
if (C[i, i2] > C[i-1, i2]) then
begin
found:=true;
k:=i2;
end
else inc(i);
end;
inc(i2);
i:=2;
end;
writeln(output,'Исходная матрица (n1xn2) ',n1,'x',n2);
for i:=1 to n1 do
begin
writeln(output);
for i2:=1 to n2 do
begin
write(output,C[i,i2],' ');
end;
end;
writeln(output);
if (found) then
writeln(output, 'Первый неупорядоченный столбец k= ', k)
else writeln(output, 'Все столбцы упорядочены');
Except writeln('Ошибка при считывании или записи в файл') End;
Finally closeFile(output) End; {4}
Except writeln('Ошибка при создании выходного файла') End;
Finally closeFile(input) End; {2}
Except writeln('Ошибка при открытии файла с исходными данными')
End;
writeln('Press Enter...');
Readln;
end
Проблема в том, что я не понимаю, почему он не работает должным образом. То есть суть задания: в матрице найти номер первой строки, элементы которой стоят не в порядке убывания. Прога просто выдает результат 1 почти во всех тестах. Кроме случая, когда все элементы упорядочены.
Ответить с цитированием
  #2  
Старый 14.01.2020, 01:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,540
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

так строка или столбец?
Код:
var
  C: array[1..N, 1..N] of integer; // первый - строка, второй - столбец
  i ,j : integer;
  cmp : integer;
...
  cmp := -1;
  for i := 1 To N Do
    for j := 2 To N Do
      if C[i,j] > C[i,j-1] Then
        Begin
          cmp := i;
          Break;
        End;
...
  if cmp = -1 Then WriteLn('There is no such stings in the matrix')
  Else Wirteln(Format('The sting index is %d',[cmp]));
Ответить с цитированием
Ответ



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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2020

ВКонтакте   Facebook   Twitter