Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2010, 18:09   #1
alex22527
Пользователь
 
Регистрация: 07.10.2010
Сообщений: 24
По умолчанию массив

определить число положительных элементов до первого отрицательного в массиве
alex22527 вне форума Ответить с цитированием
Старый 13.11.2010, 18:15   #2
Риндера
Delphi, учу С
Форумчанин
 
Аватар для Риндера
 
Регистрация: 20.10.2010
Сообщений: 178
По умолчанию

Код:
while a[i] > 0 do
   inc(k);
Могли бы и сами немного мозгами пошевелить.
Риндера вне форума Ответить с цитированием
Старый 13.11.2010, 20:18   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

что ж это были за лабы, которые легче этой?!
фактически Вам нужно посчитать сколько в массиве элементов не равны нулю, пока не встретится число меньше нуля:
Код:
 CountPozite:=0; {обнулим счётчик положительных чисел}
 i := 1; {начнём с первого элемента массива} 
 while (a[i]>=0) and (i<=n)  do begin {пока не встретили отрицательное число и не дошли до конца массива делаем:}
   if a[i]>0 then {если число положительное}
      CountPozite:=CountPozite + 1: {увеличиваем счётчик положительных чисел}
   i := i + 1; {переходим к следующему элементу массива}  
end; {конец цикла}

WriteLn('Всего положительных чисел ', CountPozite);
readln;
так понятнее?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2010, 20:20   #4
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Uses
 CRT;
var
 a:array[1..50] of integer;
 i,n,kol:integer;
begin
ClrScr;
write('Ââåäèòå êîë-âî ýëåìåíòîâ: ');
repeat
 readln(n);
until n<50;
randomize;
for i:=1 to n do
begin
 a[i]:=random(10)-3;
 write(a[i]:3);
end;
kol:=0;
for i:=1 to n do
begin
 if a[i]<0 then
  break
   else
    inc(kol);
end;
writeln;
if kol<>0 then
 writeln('Kol:=',kol)
else
 writeln('Îòðèöàòåëüíûé ïåðâûé');
readkey
end.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 13.11.2010, 20:48   #5
alex22527
Пользователь
 
Регистрация: 07.10.2010
Сообщений: 24
По умолчанию

предыдущие лабы про массивы были лёгкими,а эту понять не могу((((Риндера можешь по подробней
alex22527 вне форума Ответить с цитированием
Старый 13.11.2010, 22:15   #6
Риндера
Delphi, учу С
Форумчанин
 
Аватар для Риндера
 
Регистрация: 20.10.2010
Сообщений: 178
По умолчанию

А куда, извините, подробнее? Тебе осталось просто объявить переменные и занести в массив значения. Далее мой цикл сделает что нужно.

Serge_Bliznykov и ROMA2PVT, что за ужасы вы понаписали?)))) Парню нужно просто посчитать, сколько положительных элементов стоит до первого отрицательного...
Риндера вне форума Ответить с цитированием
Старый 13.11.2010, 22:36   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Риндера, да ну? Всё так просто?

Ладно. Рассмотрим Ваш код из пост #2.
то, что простительно нубу, непростительно Вам.

1) Вам не кажется, что Ваш цикл бессмысленен? Точнее бесконечен по определению - в цикле i не изменяется...
2) Где проверка на достижение конца массива?

3) и, самое главное. Нужно посчитать количество положительных. Но дело в том, что ноль положительным число не является. поэтому нолики надо пропускать.

Вот если устранить эти три мелких нюанса, то из Вашего кода и получится примерно то, что я набросал...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2010, 22:54   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему Паскаль?
Может:
Код:
MODULE Массив;
IMPORT StdLog,ObxRandom;
VAR a:ARRAY(10) OF INTEGER;

PROCEDURE Нука*;
VAR i,cnt:INTEGER;ok:BOOLEAN;
BEGIN
 StdLog.Clear;cnt:=0;ok:=TRUE;
 FOR i:=0 TO LEN(a)-1 DO
  a[i]:=SHORT(ENTIER(90-ObxRandom.Uniform()*100));
  IF (a[i]<0) THEN ok:=FALSE;END;
  IF ok&(a[i]#0) THEN INC(cnt); END;
  StdLog.Int(a[i]);StdLog.Ln;
 END;
 StdLog.String('Таких = ');
 StdLog.Int(cnt);StdLog.Ln;
END Нука;

END Массив.
Результ:
Цитата:
66
16
-8
44
57
16
8
9
-1
7
Таких = 2
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.11.2010, 11:18   #9
alex22527
Пользователь
 
Регистрация: 07.10.2010
Сообщений: 24
По умолчанию

Stilet надо именно в паскале.
alex22527 вне форума Ответить с цитированием
Старый 14.11.2010, 11:45   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

У х ты... Проснулся наконец то.
А чтож сразу не указал?
Впрочем тебе в и Паскале ее уже решили.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как конвертировать массив символов в массив байт davinci C++ Builder 6 30.10.2010 18:09
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06