Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Интересная задача, помогите решить


Автор: Mcicool 14.10.2005, 22:05
Вводится последовательность чисел. Признак конца ввода - число 100.
Записать алгоритм решения следующей задачи.
1. Нахождения количества чисел в последовательности.
2. Нахождения суммы последовательности чисел.
3. Нахождения произведения последовательности чисел.
4. Нахождения максимального числа последовательности чисел.

Автор: Zero 14.10.2005, 22:12
Цитата(Mcicool @ 14.10.2005, 23:05)
1. Нахождения количества чисел в последовательности.

Если эта последовательность перечисляется через запятые или пробелы, то подсчтать их кол-во и минус один.
Цитата(Mcicool @ 14.10.2005, 23:05)
2. Нахождения суммы последовательности чисел.

А там в начале создаёшь переменную типа реал:
Код

var
s:real;
...
s:=0;

а далее к в цикле прибавляешь к S соответствующие значения:
Код

S:= S + <число из полследовательности>

Цитата(Mcicool @ 14.10.2005, 23:05)
3. Нахождения произведения последовательности чисел.

Тоже самое, но вот так:
Код

var
  S:real;
...
S:=1;
S:=S*<число последовательности>


Цитата(Mcicool @ 14.10.2005, 23:05)
4. Нахождения максимального числа последовательности чисел.

А тут вот типа такого:
Код

var
  max:real;
.... 
  Max:=0;

далее в цикле:
проверяешь, если следующее число последовательности больше текущего Max, тогда Max, присвоит то самое число...

Автор: Mcicool 14.10.2005, 22:18
Я не понимаю, как задать эту последовательность. Как ее задать в описательной части программы?

Автор: Mal Hack 14.10.2005, 22:24
Объявляешь массив от 1 до 100, к примеру.
делаешь ввод элементов массива в цикле от 1 до 100.
После readln( x[i] ); делаешь проверку: if x[i] = 100 then begin n := i; break; end;
Ну и затем при рассчетах используешь N как кол-во элементов в массиве (последовательности).

Автор: maxim1000 14.10.2005, 22:34
Цитата
Объявляешь массив от 1 до 100, к примеру

ну... без массива тут можно обойтись...
просто хранить искомые значения (минимум, среднее, ... что там еще) и обновлять их при вводе каждого числа...
после 100 - выводить...

Автор: Mal Hack 14.10.2005, 22:41
Цитата(maxim1000 @ 14.10.2005, 23:34)
просто хранить искомые значения (минимум, среднее, ... что там еще) и обновлять их при вводе каждого числа...

Ну это да, но я так понимаю человеку надо на учебу, а там все-таки привычка у преподов видеть данные и т.п.
Хотя, конечно, для птимальности для конкретных задач можно и не хранить.

Автор: Mcicool 14.10.2005, 22:49
А вы не могли бы пример привести такой проги, если это не сложно.

Автор: Diesel Draft 15.10.2005, 01:07
Давно не писал тому могут бить ошыбкы

Код


Var N, S, M, T : real;

begin
N=0;
S=0;
M=0;


  While N<>100 do
    begin
     Readln(T);
     if T<>100 then
      begin
 //   1. Нахождения количества чисел в последовательности.
 inc(N);

 //   2. Нахождения суммы последовательности чисел.
 S = S + T;

 //   3. Нахождения суммы последовательности чисел.
 //  Извини не понял задачи. Иногда з руским проблемы

 //   2. Нахождения максимального числа последовательности чисел.
 if M<T then M = T;

      end;
    end;

Writeln("Количества чисел в последовательности", N)
Writeln("суммы последовательности чисел", S)
Writeln("максимального числа последовательности чисел", M)


end;


Автор: Druidik25 17.10.2005, 13:36
Кстати есть небольшая поправка к такой программе. Я не видел, что было сказано, что последовательность нужна положительная поэтому код
Код

M=0;

Не должен быть так записан.
Я думаю стоит ставить
Код

M=100;

Чего не может быть, а потом ставить проверку типа:
Код

if (M<T)OR(M=100) then M = T;

Автор: Zero 18.10.2005, 07:31
Diesel Draft и Druidik25, не забываем что оператор присваивания в Паскале пишется ":=", а не "=".
Цитата(Druidik25 @ 17.10.2005, 14:36)
Кстати есть небольшая поправка к такой программе. Я не видел, что было сказано, что последовательность нужна положительная поэтому код

код Pascal/Delphi
1:
M=0;

Не должен быть так записан.
Я думаю стоит ставить

код Pascal/Delphi
1:
M=100;

Чего не может быть, а потом ставить проверку типа:

код Pascal/Delphi
1:
if (M<T)OR(M=100) then M = T;

Тогда условие теряет смысл, вначале, максимум, должен выбиратся самым маленьким а не большим... иначе он не будет найден.

Автор: Druidik25 20.10.2005, 21:14
Да забыл ещё втулить одну строку:

Код

  if(M=100) then M=T; 

Эта строка всё выравняет...

И сразу же повится смысл в том что я говорил...

Хотя, придираться - третье дело, но если кто и будет придираться, то лучьше тут чем где сдавать работу...

Автор: Zero 20.10.2005, 23:50
Druidik25 Прочитай мой предыдущий пост...
(на счёт оператора присваивания)
smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)