Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопрос по условию
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
kr3v3tkus
Написать программу, которая в заданном массиве из n элементов (элементами являются целые числа, 0 < n < 100) находит:
Сумму первых положительных элементов;

Вот такая штука написана в условии sad.gif я не могу понять чего исколько брать sad.gif
мне кажется , что если например есть массив
-11 20 43 -54 11
то надо найти чтоли сумму первых встречающихся положительных чисел?! Если так , то помогите плз , как сделать так, чтобы при нахождении первого положительного числа , проверялось сколько потом идёт положительных. Просто у меня загвоздка в 2х местах:
1) как сделать чтобы при проверке и нахождении 1ого положительного эл-та останавливался поиск(без брейка)
2) нет конкретного значения сколько у нас полож. чисел есть, я не знаю как ето определить.
если 1ый пункт я ещё как нибудь бы через даунту сделал, то 2ой я вообще не знаю ((( Натолкните
APAL
Тафталогия получается!
По условию "(элементами являются целые числа, 0 < n < 100)" - у нас все числа положительны
klem4
Цитата
Сумму первых положительных элементов

очень мутно ...

можно найти сумму первых K положительныйх элементов нарпимер ...
APAL
может что нибудь вроде этого...

Flag:=True;
Sum:=0;
i:=1;
While Flag do
Begin
If i<=n then
If m[i]>0 then Sum:=Sum+m[i]
else
If Sum>0 then Flag:=False;
else Flag:=False;
Inc(i);
End;
kr3v3tkus
2 APAL
вово я тоже сначала так подумал, но 1е задание было такое:
Найти Первый отрицательный элемент;
ну чето подумал и решил, что ето количество елементов ну, типа если ставить const n , то любую от 1 до 99.
2 klem4
блин сам в шоке.. smile.gif
а всмысле первых К? индексов?

Кстати расшифруйте плз
Решить следующие задачи, используя алгоритмы: поиска делителей заданного натурального числа N и разложения числа на составляющие его цифры:
1. Составить программу нахождения количества делителей заданного натурального числа N, N <1000. (Само число и единица включаются в число делителей.).

я не пойму что надо сделать, а мне ещё 20 однотипных таких задач (
типа просто надо разбить число на цифры ( 2334 в 2 3 3 4) и найти делители( что такое делители? smile.gif )

2 APAL
а вроде получается сумма всех положительных чисел? или я просто не разобрался?
APAL
Цитата
2 APAL
а вроде получается сумма всех положительных чисел? или я просто не разобрался?


Каюсь, не проверял, но по алгоритму должен найти сумму не всех, а только первых положительных чисел, т.е.:
Елси массив -1 -4 3 6 -2 3 5 -1
То должен получить сумму: 3+6 = 9

Задача по разложению числа на цифры уже была на форуме - воспользуйся поиском.
kr3v3tkus
вернее я точно не разобрался smile.gif я вот щас посмотрел, вроде более понял, почему только во 2омм ифе и в then и в else стоит false?
и кстати While Flag ето типа условие пока переменная не изменится?

ок тнх!

ок тнх!

блин ответы в один сливаюцца :D
APAL
Цитата(kr3v3tkus @ 15.12.2005 15:56) *

вернее я точно не разобрался smile.gif я вот щас посмотрел, вроде более понял, почему только во 2омм ифе и в then и в else стоит false?


В первом, это когда мы дошли до конца массива (n-элементов всего)
Во втором, это когда встретилось первое отрицательное число и к этому моменту мы уже имеем сумму отличную от нуля, т.е. мы уже сложили первые встретившиеся положительные элементы.
volvo
kr3v3tkus, если тебе надо найти
Цитата
сумму первых встречающихся положительных чисел
, то вот так, наверное, тоже можно? (без Flag):
  i := 1;
while a[i] < 0 do inc(i); { пропускаем отрицательные если есть }
if i <= n then
repeat
s := s + a[i];
inc(i)
until (a[i] < 0) or (i > n); { идем до отрицательного или до конца массива }
APAL
можно и так...
на выбор... blum.gif
kr3v3tkus
ууу :D всем БИГ СПС :D
вот прикол будет если я прийду и мне скажут , что ошибка в условии smile.gif убью yes2.gif
кстати я в жизни в нете не видел таких форумов , где люди с такой быстротой отвечают smile.gif программисты - самый дружный народ :D
kr3v3tkus
понимаю,задрал уже blink.gif но ничё не могу поделаьб, уже глаза слезятся mega_chok.gif
как изменить код , чтобы найти сумму последних положительных элементов?
volvo
Элементарно:
  i := n; s := 0;
while a[i] < 0 do dec(i);
if i > 0 then
repeat
s := s + a[i];
dec(i)
until (a[i] < 0) or (i < 1);
kr3v3tkus
blink.gif у меня while заколдован smile.gif как только за него берусь, сразу прога виснет )
volvo последний вопросик не по этой задаче
Код
begin
s:=a[1];
for i:=1 to n do
  if a[i]>0 then
    if s>a[i] then s:=a[i];
end;

вот ето поиск минимального положительного элемента , скажи ето у меня паскаль глючит или я накосячил? потомучто у меня он выводит 1ый елемент(любой хоть + хоть - ) sad.gif
я и через while делал такаяже фиговина вышла (
ещё раз сори за назойливость :D просто задали для допуска на зачёт 160 задач, вот сижу делаю wacko.gif
GoodWind
Цитата
begin
s:=a[1];
for i:=1 to n do if (a[i]>0) and (a[i]<s) then s:=a[i];
end;


то же что и у тебя... работать должно unsure.gif
volvo
Ты ошибся...
  s := a[1]; { <--- Здесь !!! }
for i:=1 to n do
if a[i]>0 then
if s>a[i] then s:=a[i];

А вдруг первый же элемент будет отрицательным? И что, потом ты найдешь положительный, который меньше него? Вот так будет лучше:
  s := maxint; { Заведомо самый большой из всех возможных ПОЛОЖИТЕЛЬНЫХ }
for i:=1 to n do
if a[i]>0 then
if s>a[i] then s:=a[i];

Так все нормально отрабатывает...
GoodWind
volvo.... каюсь ибо грешен... sad.gif
kr3v3tkus
я подозревал что это связано с присвоением :D
как плохо когда и логика и математика страдает )
volvo в который раз пасибки :D уже 44 задачи сделал осталось всего-то 116 :D
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.