Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 13.01.2020, 21:23   #1
Sir Cat
Новичок
Джуниор
 
Регистрация: 13.01.2020
Сообщений: 1
По умолчанию Почему код работает некорректно?

Суть задания: в матрице m x n код должен найти первую строку, где элементы расположены не в порядке убывания и написать ее номер. Мой код всегда выдает цифру 1
Код:
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

Последний раз редактировалось Sir Cat; 13.01.2020 в 21:29.
Sir Cat вне форума Ответить с цитированием
Старый 14.01.2020, 09:22   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,061
По умолчанию

используй имена переменных говорящие от смысле
сделай замену имен переменных
всего две небольшие замены
i ==> irow (индекс строки)
i2 ==> icol (идекс колонки)

Код:
if c[irow-1, icol] < c[irow, icol] then
понятно?
сравниваем колонки!
----
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 14.01.2020, 19:29   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 2,554
По умолчанию

Изменение имён переменных на вменяемые - решит проблему ?
Я читать подробно не стал, но мне кажется запредельным количество try-Except'ов.
а уж
Код:
try
try
- это нечто...
digitalis вне форума Ответить с цитированием
Старый 15.01.2020, 09:12   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,061
По умолчанию

Цитата:
Изменение имён переменных на вменяемые - решит проблему ?
можно понять что мы сравниваем и припомнить что требуется в ТЗ.
или наоборот знать что требуется(хотим сделать) и прочитать что делаем.
надеюсь.
Цитата:
понятно?
сравниваем колонки!
----


Цитата:
Код:
try
try
...
except showmessage...
finally closefile...
Цитата:
- это нечто...
согласен, половину (ту что finally) можно безболезненно убрать.
код после except... end; будет выполняться и так.

впрочем ТС уже забыл про эту задачу.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему некорректно работает элементарная регулярка на php? Aleskandr Помощь студентам 0 13.01.2018 05:46
Некорректно работает рассылка mila_serdnaya WordPress и другие CMS 0 23.06.2016 18:55
float в ие-6 работает некорректно cratte HTML и CSS 3 17.02.2010 08:50
Почему две программы с инди одновременно работают некорректно? TwiX Работа с сетью в Delphi 1 12.12.2009 15:22
скажите почему работает некорректно pimiento Общие вопросы C/C++ 6 29.05.2008 16:21


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840