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

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

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

 
 Ответить  Открыть новую тему 
> цикл for i:=1 to n do, интересует следующее
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Пионер
**

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

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


for i:=n downto 1 do
Вроде бы она делает то что ты хочеш
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

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

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


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

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

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



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


Новичок
*

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

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


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

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


Пионер
**

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

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


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


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


Новичок
*

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

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


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


Пионер
**

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

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


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

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

 





- Текстовая версия 23.11.2020 22:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name