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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.12.2008, 12:07   #1
Андрю)(@
Пользователь
 
Регистрация: 07.11.2008
Сообщений: 23
По умолчанию необходимо подкоректировать....

Написать программу поиска суммы последовательных чисел, вводимых с клавиатуры, предшествующих первому введённому нулю. Указание: должен многократно выполняться оператор ввода. Контрольный пример: 1, 2, 3, -4, 5, -2, 0. Рзультат: 7.
пробовал сам сделать
Код:
Program zad2;
Uses Crt;
Var
sum,a: integer;
begin
ClrScr;
repeat
read(a);
inc(sum, a);
until a=0;
Writeln(sum);
end.
нужно чтобы когда начинается несоблюдение последовательности на '-2' суммирование прекращалось
помгите плиз исправить данную траблу
Андрю)(@ вне форума Ответить с цитированием
Старый 31.12.2008, 12:58   #2
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

То есть -4 считается в этом ряду как последовательное? если так, то счас я тебе код намаляю
capta1n вне форума Ответить с цитированием
Старый 31.12.2008, 13:31   #3
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию программа

Код:
program posled;
label 1;
var
 a,b,d,sum : integer;
begin
  sum:=0;
  writeln ('Vvedite posledovatel''nie 4isla: ');
  readln (a);
  d:=a;
  if a=0 then goto 1;
  sum:=sum+a;
  repeat
    b:=abs(a);
    readln (a);
    if abs(a)-b<>d then break;
    sum:=sum+a
  until a=0;
  1: writeln ('Summa= ',sum);
  readln
end.
capta1n вне форума Ответить с цитированием
Старый 31.12.2008, 13:43   #4
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

вот еще:
Код:
var c,a,summa:integer;  {c-число, а-предшествующее число}
    flag:boolean; {True-если последовательнось соблюдается}
begin
 flag:=false;
 summa:=0;
 a:=0;
   while true do
      begin
        write('Введите число: ');
        readln(c);
          if c=0 then
            break;
          if a=0 then  {Если первое число}
            summa:=c
          else
            if (abs(c)=abs(a)+1) and (flag=false) then  {Последующие числа}
               summa:=summa+c
            else
             flag:=true;
         a:=c;
      end;

write('Сумма равна = ',summa);
readln;
end.

Последний раз редактировалось Викдон; 31.12.2008 в 13:54.
Викдон вне форума Ответить с цитированием
Старый 31.12.2008, 13:54   #5
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Викдон - мне понравился алгоритм, а если шаг допустим не "1" а скажем "10" - то тут проблемка не сочти за наглость - просто интересно посоветоваться, пообщаться с умными людьми
capta1n вне форума Ответить с цитированием
Старый 31.12.2008, 13:56   #6
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

ну тут просто вместо (abs(c)=abs(a)+1) делаем (abs(c)=abs(a)+n) В данном случае n=10
Викдон вне форума Ответить с цитированием
Старый 31.12.2008, 14:01   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Согласен - можно тогда и код подправить, только в данном случае "n" - это шаг, который я так понял вам надо задавать
capta1n вне форума Ответить с цитированием
Старый 31.12.2008, 14:12   #8
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

да n шаг)) можно мой код и подправить, просто я подогнал его под конкретный случай), Вроде в задании шаг единица, как я понял)
Викдон вне форума Ответить с цитированием
Старый 31.12.2008, 14:17   #9
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Все правильно, только меня учили создавать программу для "конечного" пользователя )) Понимаете о чем я )) Ну это так, просто к слову, на самом деле к конкретной задаче к вашей программе нет никаких претезий, просто у меня шаг задается первым вводом, а я вот подумал можно ведь шаг задать и просто как параметр - ну ладно, это так - полет фантазии
capta1n вне форума Ответить с цитированием
Старый 31.12.2008, 14:26   #10
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

да можно задать: (abs(c)=abs(a)+n) n задается в программе))
Викдон вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подкоректировать.обработка символьных данных и строк felmor Паскаль, Turbo Pascal, PascalABC.NET 1 25.12.2008 19:12
подкоректировать. Двумерный массив felmor Паскаль, Turbo Pascal, PascalABC.NET 5 25.12.2008 14:31
ПОмогите подкоректировать задачу на Паскале maziLa Помощь студентам 1 24.12.2008 23:14
Помогите подкоректировать программу Killdgedan Помощь студентам 7 24.12.2008 22:10
HELP! Нужно подкоректировать прогу на СИ. NEWLOGIN Помощь студентам 3 10.05.2008 18:11