возможно ли этот цикл запустить в обратном порядке,то есть for i:=n to 1 do ? интересуюсь,потому что не знаю как найти первый отрицательный элемент в массиве... если использовать for i:=1 to n do begin if a[i]<0 fhen n1:=i end. он найдет первое и продолжит искать...как остановить поиск после нахождения первого отрицательного ?
kvadrat
23.05.2008 1:33
for i:=n downto 1 do Вроде бы она делает то что ты хочеш
sintanial
23.05.2008 1:35
Цитата
он найдет первое и продолжит искать...как остановить поиск после нахождения первого отрицательного ?
Ну нас в универе заставляли не пользоваться этой функцией однако мне она очень нравится. Функция break оканчивает цикл =) Да и вообще тута много вариаций как остановить цикл после того как ты нашел что тебе надо =)
Ну не знаю можно ли так или нет, но мне кажется что можно for i:=1 to n do begin if a[i]<0 fhen begin n1:=i n:=i-1; <- вроде бы так тоже остановится =) end end.
warning777
23.05.2008 1:36
а если так попробовать ? или масло маслянjе ? l=0 for i:= to n do begin if a[i]<0 theh begin l:=l+1 if l=1 then n1:=i end; end.
volvo
23.05.2008 1:37
Цитата
Вроде бы она делает то что ты хочеш
Только зачем проходить по всем элементам массива, если можно просто остановиться вовремя?
i := 1; while (i <= n) and (a[i] >= 0) do i := i + 1; { если мы здесь, значит или i > n (если отрицательных нет вообще), или a[i] < 0 }
P.S.
Цитата
Функция exit оканчивает цикл =)
Паскалевский Exit немедленно оканчивает текущую подпрограмму (если вызван в основной программе - то заканчивает программу) вообще-то... Цикл заканчивает Break...
warning777
23.05.2008 1:44
класс !!! спасибо огромное значит чтобы найти первый отрицаельный элемент массива и присвоить ему номер n1 запишу следующее i := 1; while (i <= n) and (a[i] >= 0) do i := i + 1; n1:=i
что бы найти последнее равное нулю и присвоить ему номер n2 сделаю так for i:=1 to n do begin if a[i]=0 then n2:=i end
все верно ? спасибо огромное за помощь
Айра
23.05.2008 1:48
Цитата
что бы найти последнее равное нулю и присвоить ему номер n2 сделаю так
ты здесь тоже можешь while'ом обойтись, только у тебя i будет изначально равно n, а потом будет уменьшаться..
Добавлено через 7 мин. и еще
i := 1; while (i <= n) and (a[i] >= 0) do i := i + 1; n1:=i // так не правильно, потому что если в массиве не будет отрицательных // ты все равно присвоишь какой-то номер, тебе нужно еще проверку сделать
warning777
23.05.2008 1:56
у меня еще один вопрос. если мне дан массив,записанный в файл, как мне выдрать из него массив,находящийся, допустим, между третим и десятым элементом в основном массиве k=0 for i:=3 to 10 do begin k:=k+1; b[k]:=a[i]; end так будет работать ? я просто пока начинающий в паскале,прошу изивинить за такие вопросы
sintanial
23.05.2008 1:58
Цитата
Паскалевский Exit немедленно оканчивает текущую подпрограмму (если вызван в основной программе - то заканчивает программу) вообще-то... Цикл заканчивает Break...
Извиняюсь , перепутал
warning777
23.05.2008 2:26
если мне дан массив,записанный в файл, как мне выдрать из него массив,находящийся, допустим, между третим и десятым элементом в основном массиве k=0 for i:=3 to 10 do begin k:=k+1; b[k]:=a[i]; end так будет работать ?
sintanial
23.05.2008 4:36
Ммм смотря в какой файл записан, я так думаю =). В типизированном наверно так нельзя( но это я так только предполагаю !!! )
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.