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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2012, 15:04   #1
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию Ошибка в коде Delphi

Всем доброго времени суток! Помогите пожалуйста исправить ошибку, только без процедур и функций.

Задача
В одномерном массиве, состоящем из n целых элементов вычислить произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,windows;
const
  n=8;
type
  telem=integer;
  mas=array[1..n] of telem;
var
  a:mas;
  i,m,k,p:telem;
begin
  setconsolecp(1251);
  setconsoleoutputcp(1251);
  for i:=1 to n do
  readln(a[i]);

  for i:=1 to n do
  begin
    if a[i]=0 then
    m:=i
  end;

  for i:=m+1 to n do
  begin
    if a[i]=0 then
    k:=i
  end;

  p:=1;
  for i:=m+1 to k-1 do
  begin
    p:=p*a[i]
  end;
  write(p);
  readln
end.
Начинающий програм вне форума Ответить с цитированием
Старый 06.02.2012, 16:05   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну что, совсем даже неплохо.
по большому счёту ошибочка была всего одна - после обнаружения нулевого элемента Вы не прерывали цикл (продолжали искать дальше...)

вот подправленный код:
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
const
  n=8;
type
  telem=integer;
  mas=array[1..n] of telem;
var
  a:mas;
  i,m,k,p:telem;
begin
  WriteLn('Enter ',n,' int numbers: ');
  for i:=1 to n do
    readln(a[i]);

  m:=0;
  k:=0;
  for i:=1 to n do
    if a[i]=0 then begin m:=i; Break; end;

  for i:=m+1 to n do
    if a[i]=0 then begin k:=i; Break; end;

  if (m=0) or (k=0) then
    WriteLn('Error! No two ZERO elements in arrays!')
  else
    if k=(m+1) then WriteLn('P=0')
    else
    begin
      p:=1;
      for i:=m+1 to k-1 do
         p:=p*a[i];
      writeln('P=',p);
    end;
  readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.02.2012, 16:14   #3
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Спасибо Вам вы меня очень выручили! У меня один к Вам вопрос, можно как-то подругому прервать цикл, то есть без использования брейка?
Начинающий програм вне форума Ответить с цитированием
Старый 06.02.2012, 16:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по другому - использовать ДРУГОЙ вариант цикла, например можно так найти индекс первого нулевого элемента (собственно цикл - это одна строчка кода - выделил полужирным шрифтом):
Код:
m := 0;
i := 1;

while (i<=N) and (A[i]<>0) do Inc(i);

if i>N then begin WriteLn('Not found first ZERO!'); Readln; Halt(1) end;
m := i;
или так:
Код:
m := 0;
i := 1;
while (i<=N) and (m=0) do
begin
   if a[i]=0 then m:=i
   else Inc(i);
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.02.2012, 17:46   #5
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Спасибо!!!
Начинающий програм вне форума Ответить с цитированием
Старый 06.02.2012, 18:05   #6
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

еще можно использовать
Код:
exit;
Кольша вне форума Ответить с цитированием
Старый 06.02.2012, 19:52   #7
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Благодарю Вас!
Начинающий програм вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В коде ошибка (Delphi). Начинающий програм Помощь студентам 0 08.12.2011 19:58
Ошибка в коде программы Delphi Начинающий програм Помощь студентам 5 07.12.2011 23:46
Ошибка в коде программы (Delphi) Начинающий програм Помощь студентам 4 03.12.2011 22:28
ошибка в коде с сохранением в файл в Delphi TaYgA Помощь студентам 3 22.11.2009 19:35
Delphi+Excel ошибка в коде Tirendus БД в Delphi 5 31.08.2009 10:47