Matrix32. Дана целочисленная матрица размера $$M \times N$$. Найти номер первой из ее строк, содержащих равное количество положительных и отрицательных элементов (нулевые элементы матрицы не учитываются). Если таких строк нет, то вывести $$0$$.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
program Matrix32; var a:array [1..10,1..10] of integer; Num, M, N, i, j, RezN,RezM:Integer; begin Write('N: '); Readln(N); Write('M: '); Readln(M); for i:=1 to M do begin writeln(i,': '); for j:=1 to N do begin Write(j,' : '); Read(a[i,j]); end; end; for i:=1 to M do begin Num:=0; for j:=1 to N do if a[i,j]<>0 then Num:=Num+(a[i,j] div abs(a[i,j])); if Num=0 then break; end; Writeln(i); end. |
Тоже самое решение, но вместо обрыва цикла for через break, используется конструкция repeat..until<>;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
program Matrix32; var a:array [1..10,1..10] of integer; Num, M, N, i, j, RezN,RezM:Integer; begin Write('N: '); Readln(N); Write('M: '); Readln(M); for i:=1 to M do begin writeln(i,': '); for j:=1 to N do begin Write(j,' : '); Read(a[i,j]); end; end; i:=0; Repeat i:=i+1; Num:=0; for j:=1 to N do if a[i,j]<>0 then Num:=Num+(a[i,j] div abs(a[i,j])); Until ((i>=M) or (Num=0)); Writeln(i); end. |
Другие задачи из раздела Matrix можно посмотреть здесь.
В первом решении у вас не соблюдается условие в конце задания: «Если таких строк нет, то вывести 0».
В случае если строк с равным количеством отрицательных и положительных элементов не будет, ответом будет число повторения цикла.
В этом коде, соблюдается условие в конце задачи, исправьте своё первое решение.
Владелец сайта тут редко появляется. Вряд ли теперь он будет что-то менять в своем коде. Наверное у него уже другие интересы. А вот к вашему есть замечание. Если элемент больше (или меньше) нуля, то ясно, что он не равен нулю. Зачем это еще раз проверять. Строки 21 и 24. Хотя вы сами тоже не сможете ничего изменить, только попросить владельца сайта, а он ну вы поняли.
Ну вы зря так… я читаю ваши комментарии… избавляюсь от спама … и не забиваю сайт рекламой 🙂 Но вы правы сейчас очень много всякой работы. А программирования сейчас в моей жизни вообще нет 🙁
А для того что бы дать адекватный ответ или поправить код надо разбираться. А для этого надо выспаться. 🙂
притом вы вышли из раздела Begin. А матрицы это сложно… там думать надо. 🙂
К тому же можно добавить ещё один комментарий.
А ваши решения я в итоге помещу в статьи Pascal .Net так как они используют много механизмов отличающегося от Borland Pascal.
Здравствуйте, Антон. Если для вас это не трудно, добавьте на сайт функционал редактирования своего кода. И удаления тоже. Было бы замечательно.
Дал аккаунту Bronislav права редактора.
Зайти на сайт не получается, я не регистрировался. Зарегистрироваться же заново под тем же именем не получается, т.к. это имя уже зарегистрировано, почему-то. Mожет быть был еще один Bronislav, который зарегистрировался с какой-то своей другой почтой? Получить ссылку на изменение пароля тоже не могу, т.к. моя почта не указана при регистрации. Может вам дать свой email и вы перерегистрируете ник Bronislav с моей почтой, чтобы я смог получить ссылку на изменение пароля?
Была указана ваша почта. Удалил аккаунт попробуйте ещё раз зарегистрироваться и сменить пароль.
Наконец, получилось зарегистрироваться, долго искал письмо, почему то гугл кинул его в спам. А как здесь редактировать свой код? Пока не соображу что-то.
Прав небыло. Выдал заново.
Ага, кажется разобрался, попробую позже. Благодарю за доверие. =)
Спасибо за совет! Действительно, лишнее.