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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2009, 20:35   #1
Deniska112
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 33
По умолчанию помогите исправить ошибку

Всем привет!Вот возник вопрос есть программ которая считает сумму между первым и вторым отрицательным числом включительно
пример 1 2 -4 6 1 -4 9 получится -1 но через функцию что то не получается поскажите плиз вот текст
Код:
Program massiv;
const n=32;
type
mass=array [1..n] of integer;
function sum (var x:mass;i,k,q,l:integer):integer;
begin
  l:=0;
  k:=0;
  for i:=1 to n do
    if x[i]<0 then begin
      if (l<>0) and (k=0) then k:=i;
      if l=0 then l:=i;
    end;
q:=0;
for i:=1 to k do
sum:=q+x[i];
end;
var i,k,l,q,w:integer;
x:mass;
begin
randomize;
for i:=1 to n do begin
x[i]:=random(30)-7;
write (x[i]:5);
end;
begin
w:=sum(x,i,k,q,l);

writeln('     symma megdy 1 i 2 otryzatelnimy vklychitelno ravna : ', w:5);
readln;
end;
end.

Последний раз редактировалось MaTBeu; 24.06.2009 в 21:14.
Deniska112 вне форума Ответить с цитированием
Старый 25.06.2009, 03:46   #2
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

А если отрицательных чисел больше двух, между какими надо находить сумму?
megachuhancer вне форума Ответить с цитированием
Старый 25.06.2009, 11:03   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

megachuhancer, так в условии задачи ясно же сказано: "между первым и вторым отрицательным числом"
а там их пусть хоть сто будет...

___________________________________ __________________________________
Deniska112, ошибка номер раз - цикл надо крутить от l (а не от 1-цы),
ошибка номер два - не наращиваете Q в цикле.
конец функции SUM должен быть такой:
Код:
q:=0;
for i:=l to k do
  q:=q+x[i];
sum := q
end;

Последний раз редактировалось Serge_Bliznykov; 25.06.2009 в 11:37.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.06.2009, 11:56   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а вообще я бы предложил такой вариант (на основе Вашего, но чуть исправленный):
Код:
program massiv;
const n = 32;
type
  mass = array[1..n] of integer;

function sum(arrX: mass): integer;
var i, q, l, k: integer;
begin
  l := 0;
  k := 0;
  q := 0;
  for i := 1 to n do
  begin
    if arrX[i] < 0 then begin
      if (l <> 0) and (k = 0) then k := i;
      if l = 0 then l := i;
    end;
    if ((l <> 0) and (k = 0)) or (i = k) then q := q + arrX[i];
  end;
  sum := q;
end;
var
  x: mass;
  w, i: integer;
begin
  randomize;
  for i := 1 to n do begin
    x[i] := random(30) - 7;
    write(x[i]: 5);
  end;
  w := sum(x);
  writeln('     symma megdy 1 i 2 otryzatelnimy vklychitelno ravna : ', w: 5);
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.06.2009, 12:15   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но через функцию что то не получается
Я бы однозначно прогу упростил до такого:

Код:
  var k,s,i:integer;
  function sum(i,s:integer):integer; begin   sum:=s+i; end;
begin
   repeat
    read(i);
    if i<0 then inc(k);
    if k=1 then
      s:=sum(i,s);
   until i=0;
 writeln(s);
 readln;readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Или примерно такого...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибку Ortega Общие вопросы C/C++ 6 04.06.2009 22:39
Помогите исправить ошибку! samuex Microsoft Office Word 1 24.02.2009 22:05
помогите исправить ошибку. RUSLAN13 Помощь студентам 1 25.12.2008 17:22
Помогите исправить ошибку artem_MG Паскаль, Turbo Pascal, PascalABC.NET 4 27.10.2008 17:42
Помогите исправить ошибку Булат Общие вопросы Delphi 3 25.04.2008 10:01