IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> цикл for i:=1 to n do, интересует следующее
warning777
сообщение 22.05.2008 21:25
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


возможно ли этот цикл запустить в обратном порядке,то есть
for i:=n to 1 do ?
интересуюсь,потому что не знаю как найти первый отрицательный элемент в массиве...
если использовать
for i:=1 to n do
begin
if a[i]<0 fhen
n1:=i
end.
он найдет первое и продолжит искать...как остановить поиск после нахождения первого отрицательного ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 10)
kvadrat
сообщение 22.05.2008 21:33
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской

Репутация: -  0  +


for i:=n downto 1 do
Вроде бы она делает то что ты хочеш
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sintanial
сообщение 22.05.2008 21:35
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 70
Пол: Мужской
Реальное имя: Мартын

Репутация: -  1  +


Цитата
он найдет первое и продолжит искать...как остановить поиск после нахождения первого отрицательного ?


Ну нас в универе заставляли не пользоваться этой функцией однако мне она очень нравится. Функция break оканчивает цикл =)
Да и вообще тута много вариаций как остановить цикл после того как ты нашел что тебе надо =)

Ну не знаю можно ли так или нет, но мне кажется что можно
for i:=1 to n do
begin
if a[i]<0 fhen
begin
n1:=i
n:=i-1; <- вроде бы так тоже остановится =)
end
end.

Сообщение отредактировано: sintanial - 22.05.2008 21:59
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
warning777
сообщение 22.05.2008 21:36
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


а если так попробовать ? или масло маслян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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.05.2008 21:37
Сообщение #5


Гость






Цитата
Вроде бы она делает то что ты хочеш
Только зачем проходить по всем элементам массива, если можно просто остановиться вовремя?
i := 1;
while (i <= n) and (a[i] >= 0) do i := i + 1;
{ если мы здесь, значит или i > n (если отрицательных нет вообще), или a[i] < 0 }


P.S.
Цитата
Функция exit оканчивает цикл =)
Паскалевский Exit немедленно оканчивает текущую подпрограмму (если вызван в основной программе - то заканчивает программу) вообще-то... Цикл заканчивает Break...

Сообщение отредактировано: volvo - 22.05.2008 21:42
 К началу страницы 
+ Ответить 
warning777
сообщение 22.05.2008 21:44
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


класс !!! спасибо огромное smile.gif
значит чтобы найти первый отрицаельный элемент массива и присвоить ему номер 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

все верно ? спасибо огромное за помощь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 22.05.2008 21:48
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Цитата
что бы найти последнее равное нулю и присвоить ему номер n2 сделаю так

ты здесь тоже можешь while'ом обойтись, только у тебя i будет изначально равно n, а потом будет уменьшаться..

Добавлено через 7 мин.
и еще
i := 1;
while (i <= n) and (a[i] >= 0) do i := i + 1;
n1:=i // так не правильно, потому что если в массиве не будет отрицательных
// ты все равно присвоишь какой-то номер, тебе нужно еще проверку сделать



Сообщение отредактировано: Айра - 22.05.2008 21:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
warning777
сообщение 22.05.2008 21:56
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


у меня еще один вопрос.
если мне дан массив,записанный в файл, как мне выдрать из него массив,находящийся, допустим, между третим и десятым элементом в основном массиве
k=0
for i:=3 to 10 do
begin
k:=k+1;
b[k]:=a[i];
end
так будет работать ?
я просто пока начинающий в паскале,прошу изивинить за такие вопросы

Сообщение отредактировано: warning777 - 22.05.2008 21:57
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sintanial
сообщение 22.05.2008 21:58
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 70
Пол: Мужской
Реальное имя: Мартын

Репутация: -  1  +


Цитата
Паскалевский Exit немедленно оканчивает текущую подпрограмму (если вызван в основной программе - то заканчивает программу) вообще-то... Цикл заканчивает Break...


Извиняюсь , перепутал
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
warning777
сообщение 22.05.2008 22:26
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


если мне дан массив,записанный в файл, как мне выдрать из него массив,находящийся, допустим, между третим и десятым элементом в основном массиве
k=0
for i:=3 to 10 do
begin
k:=k+1;
b[k]:=a[i];
end
так будет работать ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sintanial
сообщение 23.05.2008 0:36
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 70
Пол: Мужской
Реальное имя: Мартын

Репутация: -  1  +


Ммм смотря в какой файл записан, я так думаю =). В типизированном наверно так нельзя( но это я так только предполагаю !!! )
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.06.2025 2:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"