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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2009, 17:07   #1
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
Печаль исправьте пл3 задачу

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

Код:
program zadacha1;
uses crt;
const n=10;
type mass=array[1..20] of integer;
var s1,s2,i:integer; x:mass;

procedure input(n:integer; var x:mass);
          begin
          for i:=1 to n do
          begin
          x[i]:=-random(10)+2;
          writeln(x[i]);
          end;
          end;

procedure p2(n:integer; x:mass; var s1,s2:integer);
          begin
          i:=1;
          s1:=0;
          s2:=0;

          if x[i] mod 2 <>0 then s1:=s1+x[i];
          while (x[i]<0) and (i<n) do
          begin
          inc(i);

          if x[i] mod 2 <> 0 then
          s1:=s1+x[i];
          end;
          while i<=n do
          begin
          inc(i);

          if x[i]<0 then inc(s2);
          end;
          writeln('б㬬*=',s1);
          writeln('Є®«ЁзҐбвў®=',s2);
          end;

begin
clrscr;
randomize;
input(n,x);
p2(n,x,s1,s2);
readln
end.
она почему то считает сумму чисел которые стоят на нечетных местах...а мне надо что бы она считала просто нечетные числа до первого положителнього

Последний раз редактировалось pavel42; 14.05.2009 в 17:10. Причина: не тот код )
pavel42 вне форума Ответить с цитированием
Старый 14.05.2009, 21:30   #2
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

кому не лень помогите )
pavel42 вне форума Ответить с цитированием
Старый 14.05.2009, 22:13   #3
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию

Немножко подправил вашу процедурку
Код:
procedure p2(n:integer; x:mass; var s1,s2:integer);
          begin
          i:=1;
          s1:=0;
          s2:=0;

          while (x[i]<0) and (i<n) do
          begin
           if x[i] mod 2 <> 0 then
            s1:=s1+x[i];
           inc(i);
          end;

          while i<=n do
          begin
          inc(i);
          if x[i]<0 then inc(s2);
          end;
          writeln('á㬬*=',s1);
          writeln('ª®«¨ç¥á⢮=',s2);
          end;
Изменения небольшие, думаю, комментарии необязательны.
anGeee вне форума Ответить с цитированием
Старый 15.05.2009, 06:55   #4
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

спасибо...то что надо )
pavel42 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[делфи] Исправьте меня zotox Помощь студентам 6 14.12.2008 01:13
Исправьте ошибку в Паскаль!! W_P Паскаль, Turbo Pascal, PascalABC.NET 8 17.03.2008 11:35
Исправьте ошибку в Паскаль!! W_P Помощь студентам 1 16.03.2008 18:29