Turbo Pascal

Пух

كنت بلهاء
Модератор
Чёто намудрили Вы с всякими "сумами отрицательных элементов", количество элементов в строке то известно, ИМХО наглядней и проще было бы решить задачу " в лоб" что-то типа
...
NomerStroki:=0;
for i:=10 downto 1 do
begin
kol:=0;
for j:=1 to 5 do
if a[i,j]>0 then kol:=kol+1;
if kol=5 then NomerStroki:=i;
end;
writeln('Номер строки: ',NomerStroki);
...
примерный вариант я писал, только немного запутался в циклах, по этому не получалась задача. пришлось по-другому делать... ваш вариант тоже не идеальный, т.к. программа найдет все строки, в которых все элементы положительные, и только потом выдаст на экран номер последней такой строки(у вас проход с конца, по этому эта строка и будет искомой). так что в быстродействии несильно они будут отличатся))
идеально было б останавливать полность проход, когда счетчик будет равен 5 и сразу выводить номер строки.
 

xZ_

Хьёзь
примерный вариант я писал, только немного запутался в циклах, по этому не получалась задача. пришлось по-другому делать... ваш вариант тоже не идеальный, т.к. программа найдет все строки, в которых все элементы положительные, и только потом выдаст на экран номер последней такой строки(у вас проход с конца, по этому эта строка и будет искомой). так что в быстродействии несильно они будут отличатся))
идеально было б останавливать полность проход, когда счетчик будет равен 5 и сразу выводить номер строки.
Код:
for (i=0;i<5;i++)
  {
   for (j=0;j<10;j++)
    if (A[i][j]<=0) break;
   if (j==10) break;
  }
   printf("%d",(i==5)?0:i);
на си я так эту задачу делал, если что переделайте сами)
 
Останнє редагування:

serg_pet

New Member
Отлично ! Келбасу привет.





Успехов ! В учебе. 2 Келбас не поставит. Трудитесь !
 
Останнє редагування модератором:

Cris

Member
ЛЮДИ КОМУ ДЛЯ келбаса надо прогу на графики - седни-затра я зделаю для своего друга заоодно выложу суда, с коментариями что гд енадо исправить чтоб заметно небыло!)) ждите, ее делать часа 2-4)
 

Пух

كنت بلهاء
Модератор
ЛЮДИ КОМУ ДЛЯ келбаса надо прогу на графики - седни-затра я зделаю для своего друга заоодно выложу суда, с коментариями что гд енадо исправить чтоб заметно небыло!)) ждите, ее делать часа 2-4)
если эта та прога, в которой используется польская строка, то можешь забить - они её не обьяснят. а так, основная часть проги на 20 строчек:)
 

Cris

Member
АНТИ КЕЛБАС)):

ВОТ ВАМ КОД, практически каждая строчка с обьяснением, не забудьте прочитать мои пожелания!
как менять цвета чего либо я написал, если че надо то спрашивайте
 

Вкладення

Останнє редагування:

Пух

كنت بلهاء
Модератор
глупый конечно вопрос, но т.к. я с процедурами не силен, прошу найти ошибку:
uses crt;
type arrtype=array[1..100] of integer;
const m=10; n=8;
var
x,y:arrtype;

procedure vvod(var a:arrtype; k:integer);
var g,i:integer;
begin
randomize;
for i:=1 to k do
begin
g:=random(20)-15;
a:=g;
end; end;

procedure vivod(a:arrtype; k:integer);
var i:integer;
begin
for i:=1 to k do
begin
if i<k then
write(a,',')
else write(a);
end; end;

begin
clrscr;
vvod(x,m);
vivod(x,m);
gotoxy(1,2);
vvod(y,n);
vivod(y,n);

readln;
end.

задание: ввод и вывод двух массивов.
проблемма в том, что выводит один и тот же массив, но с разным количеством чисел. Например так:
20,10,15,13,6,23,-3,2,1,7
20,10,15,13,6,23,-3,2
 
Останнє редагування:

Hamster

Well-Known Member
Почему в процедуре ввода в параметры передается k - размер массива, а цикл шурует до m?
и randomize; можно выполнить 1 раз в основном begin-e.
 
Зверху