Помощь - Поиск - Пользователи - Календарь
Полная версия: Определить порядковый номер 1-го положительного эл
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
BanneD
Код

program massiv;
uses crt;
const n=50;
type t=array [1..n] of integer;
var a:t;
i:integer; m:integer;
begin
clrscr;
randomize;
read(m);
for i:=1 to m do
a[i]:=5-random(10);
for i:=1 to m do
if a[i]>0 then writeln('i=',i);
for i:=1 to m do
writeln('a[',i,']=',a[i]);
end.

всё тут сделано но нужно чтобы не все положительные элименты, а нужно чтобы только 1-ый положительный элимент выводил, а остальные нет!
как это сделать ?
Lapp
Цитата(BanneD @ 14.12.2010 21:14) *
как это сделать ?

Учить Паскаль и читать Правила Форума.
BanneD
Цитата(Lapp @ 15.12.2010 0:20) *

Учить Паскаль и читать Правила Форума.

Логично! но я вроде просил помощи, а не учить меня что мне делать! и всё таки я нашел решение мб кому понадобится!
Код
program massiv;
uses crt;
const n=50;
type t=array [1..n] of integer;
var a:t;
i:integer; m:integer;
begin
clrscr;
randomize;
write('введите кол-во элементов:');
readln(m);
for i:=1 to m do
a[i]:=random(20)-15;

for i:=1 to m do
writeln('a[',i,']=',a[i]);

for i:=1 to m do
begin
if a[i]>0 then
begin
writeln('номер первого положительного:',i); break;{эта операция нужна для принудительного завершения цикла! хотя эту операцию мы ещё не проходили!}
end;
end;

end.


так же скществует другой код
Код

program massiv;
uses crt;
const n=50;
label 1;
type t=array [1..n] of integer;
var a:t;
i:integer; m:integer;
begin
clrscr;
randomize;
write('введите кол-во элементов:');
readln(m);
for i:=1 to m do
a[i]:=random(20)-15;

for i:=1 to m do
writeln('a[',i,']=',a[i]);

for i:=1 to m do
begin
if a[i]>=0 then
begin
writeln('номер первого положительного:',i); goto 1;
end;
end;

1:end.
Lapp
Цитата(BanneD @ 14.12.2010 21:37) *
Логично! но я вроде просил помощи, а не учить меня что мне делать!
А я попросил не нарушать правила.

Учить тебя, что делать? Смеешься? Безнадежно.
BanneD
Цитата(Lapp @ 15.12.2010 0:52) *

А я попросил не нарушать правила.

Учить тебя, что делать? Смеешься? Безнадежно.

мда! Я не гордый приношу свои извинения!
Ну так объясни мне столь безнадежному человеку что я нарушил??
мисс_граффити
вообще все то же можно сделать без break и тем более без goto. Циклы while/repeat вы проходили?
Lapp
Цитата(мисс_граффити @ 15.12.2010 8:53) *

вообще все то же можно сделать без break и тем более без goto. Циклы while/repeat вы проходили?

Юль, эта тема была кандидатом на удаление, поскольку создана со многими нарушениями и вообще большой ценности не представляет. Если хочешь продолжить - перенеси в подходящий раздел, и т.д... (а лучше - удали)).
BanneD
Цитата(мисс_граффити @ 15.12.2010 11:53) *

вообще все то же можно сделать без break и тем более без goto. Циклы while/repeat вы проходили?

Да цикл с предусловием и с постусловием! в том то и дело я юзал эти циклы около 2-х часов но так и не нашел решения!
а с параметром как то всё быстренько решилось! wacko.gif
Lapp
Цитата(BanneD @ 15.12.2010 14:43) *
в том то и дело я юзал эти циклы около 2-х часов но так и не нашел решения!
а с параметром как то всё быстренько решилось! wacko.gif
А ты не ведись на быстренькие решения. Подумаешь, 2 часа. Надо однажды посидеть нсколько дней/недель/месяцев для того, чтобы потом выдавать хорошие решения за доли секунды..
В твоей задаче нет абсолютно ничего особенного, такие конструкции применяются десятками в любой обычной программе.
program massiv;
const
n=50;
type
t=array [1..n] of integer;
var
a:t;
i,m:integer;

begin
randomize;
write('введите кол-во элементов: ');
readln(m);
for i:=1 to m do a[i]:=random(20)-15;
for i:=1 to m do writeln('a[',i,'] = ',a[i]:4);
i:=1;
while (i<=m) and (a[i]<=0) do Inc(i);
if i<=m then writeln('номер первого положительного: ',i);
ReadLn
end.


PS
еще раз увижу CRT и ClrScr не по делу - буду понижать репу.. norespect.gif
BanneD
Цитата(Lapp @ 16.12.2010 3:54) *

PS
еще раз увижу CRT и ClrScr не по делу - буду понижать репу.. norespect.gif


Спасибо за код! о5 же эти предуприждения! что то я в правилах не видел указания "писать прог. код без CRT и ClrScr "! на репу мне как то до форточки! (пусть каждый заходит и мне ставит - в репу мне как то по ....)! mad.gif
раз я ошибся не там написал пост, извенился- получается на мне надо ездить! а хрен где сядите там и слезите! norespect.gif
volvo
Цитата
еще раз увижу CRT и ClrScr

Андрей, если б ты знал, до какой степени иногда надоедает чистить от всяческих ClrScr-ов код... До такой, что я для себя написал
Вот такой небольшой модуль (Показать/Скрыть)
. Подключаешь его последним в списке Uses, и получаешь в 99% случаев чистый вывод программы, без опустошения экрана и разноцветных сообщений. А также без звуковых эффектов, от которых начинающих программистов просто прёт, и они думают, что это должно сразу понравиться пользователю - пикание на все лады. А если еще добавить реализацию Delay - то будет вообще прекрасно smile.gif
TarasBer
> Вот такой небольшой модуль

Хах, сурово. Я это на ГК запощу (не потому, что это ГК, просто очень в тему компьютерного юмора).
Lapp
Цитата(volvo @ 16.12.2010 10:36) *
"Вот такой небольшой модуль"
Спасибо, Володь, идея замечательная.
Речь, конечно, не об усталости - но долбодубы наподобие этого выше все равно ничего не понимают и не поймут. Правда, этот совсем уж уникальный экземпляр..

Цитата(TarasBer @ 16.12.2010 11:16) *
Я это на ГК запощу (не потому, что это ГК, просто очень в тему компьютерного юмора).
Тарас, юмор - юмором, но перед публикацией чужого кода (каким бы он ни был) все же абсолютно нелишне спросить разрешение его автора.
volvo
Цитата
абсолютно нелишне спросить разрешение его автора
Да мне все равно, я не против публикации, если только будет хоть как-то описано, зачем этот модуль создавался. Тем более, я уверен, не у одного меня зародилась такая мысль. Это вообще очень даже стандартная практика: перекрывать своими модулями часть функционала чужих модулей...
TarasBer
> все же абсолютно нелишне спросить разрешение его автора.

Ну я потому и говорю, а не молча выкладываю.

> если только будет хоть как-то описано, зачем этот модуль создавался.

Само собой.

> Это вообще очень даже стандартная практика: перекрывать своими модулями часть функционала чужих модулей...

Это да, но такой случай перекрытия функционала на ноль мне показался забавным.
мисс_граффити
Стесняюсь спросить... а чем вызвана такая ненависть к ClrScr?
Lapp
Цитата(мисс_граффити @ 16.12.2010 15:35) *
Стесняюсь спросить... а чем вызвана такая ненависть к ClrScr?

Смею предположить, что ты мало используешь командную строку (особенно как рабочий инструмент).
Кто читает мои мессаджи, тот знает, я уже много раз говорил (и volvo частенько подхватывал). Например, можно почитать с этого мессаджа и ниже: Матрица. Суммы диоганалей паралельных главной и побочной
Я понимаю, что это всего лишь момент в образовании, но достало. Так что форма вышла резковатая, признаю. Я думал, что люди задумаются ("а почему?"), а нарвался на выражение протеста против ограничения прав и свобод )). Еще раз повторяю: репутация не есть админский способ наказания, это средство для каждого участника выразить свое мнение о человеке. Та угроза была, конечно, профанацией и скорее шуткой, но смайл я не поставил - и получил в ответ грубость (наверное, заслуженную). Я снимаю премод BanneD, убираю минус из репутации и извиняюсь.

CRT я прекрасно использую и сам (например, в последней отвеченной теме, про змейку). И, если нужно, использую и ClrScr. Но не нужно совать и везде и всюду.
BanneD
Цитата(мисс_граффити @ 16.12.2010 18:35) *

Стесняюсь спросить... а чем вызвана такая ненависть к ClrScr?

Цитата(Lapp @ 6.12.2010 4:32) *

А когда ты делаешь ClrScr - ты стираешь ВСЕ (не только свое). А ты сотри все с диска, прежде чем записать туда свой файл - флаг тебе в руки. Во, крастота-то будет! Все чистенько, все в порядочке!

Кроме того, CRT нарушает стандартную модель доступа к файлам (что не написано в ее описании) и приводит к многим осложнениям при работе с диском.

Умные дяденьки придумали ядерную бомбу. Иди, используй.. lol.gif

blink.gif Если от нее столько вреда, так зачем же нас учат использовать ее ?!
Цитата(Lapp @ 17.12.2010 3:42) *
Еще раз повторяю: репутация не есть админский способ наказания, это средство для каждого участника выразить свое мнение о человеке. Та угроза была, конечно, профанацией и скорее шуткой, но смайл я не поставил - и получил в ответ грубость (наверное, заслуженную). Я снимаю премод BanneD, убираю минус из репутации и извиняюсь.

Я тоже принашу свои извинения! но впредь давай соблюдать поговорку как правило"7-раз отмерь, 1-раз отреж"
надо подумать прежде чем ответить как отриагирует на него другой человек! моя выспылчивость тоже меня достала! нодо было тоже подумать прежде чем отвечать на горячую голову!
впредь надеюсь что болше такого не повторится good.gif
Цитата(TarasBer @ 16.12.2010 15:05) *

я так и не понял ты хочешь куда то выкласт пост? мое предложение удалить его к черту! как неготивную тему!
volvo
Цитата
мое предложение удалить его к черту! как неготивную тему!
Ага, особенно актуально после твоего
Цитата
но впредь давай соблюдать поговорку как правило"7-раз отмерь, 1-раз отреж"


А давай не только другие будут соблюдать поговорку, но и ты тоже? Ничего не надо никуда удалять.
BanneD
Цитата(volvo @ 17.12.2010 20:01) *

Ага, особенно актуально после твоего
А давай не только другие будут соблюдать поговорку, но и ты тоже? Ничего не надо никуда удалять.

Я за=) почему не надо удалять? какой смысл от нее?
Lapp
Цитата(BanneD @ 17.12.2010 17:55) *
Я за=) почему не надо удалять? какой смысл от нее?
В назидание потомкам )). На этом фрруме практически ничего не удаляется. Что сказано, то сказано.
BanneD
Цитата(Lapp @ 18.12.2010 5:20) *

В назидание потомкам )). На этом фрруме практически ничего не удаляется. Что сказано, то сказано.

blink.gif
Да будет примером для других! ну надеюсь не я один такой косяковый!
поучатся на мойх ошибках! а то за 1 пост я столько каши наварил!
что пришлось расхлебывать её всем lol.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.