Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > задача по консоле в delphi


Автор: oksancik 24.12.2004, 18:41
Интересуют любые вариации ниже приведенного задания!Задание по консоле.

Дана последовательность целых чисел ai. Построить новую последовательность,
состоящую из тех элементов, которые больше суммы двух предыдущих.
Начинать построение новой последовательности с третьего элемента.

Вход
В каждой строке входа дано по одному элементу исходной последовательности.
Признак конца последовательности - 0.
Выход
В каждую строку выхода вывести по одному элементу результирующей
последовательности. Заключительный нуль в результат не выводить.

Пример
Код
Вход:
1
4
7
2
7
10
3
0
Выход:
7
10

Автор: Yanis 24.12.2004, 18:57
Если бы мне не надо бьло на электричку выходить я бы тебе написал smile Это же не так сложно.

Автор: z-END 24.12.2004, 19:00
Мне на электричку не надо =)
Код

program Zadacha;

{$APPTYPE CONSOLE}

uses Classes, SysUtils;
var
 InList: TStringList;
 Line: String;
 x, Item1, Item2, Item: Integer;
begin
InList := TStringList.Create;
Repeat
 ReadLn (Line);
 if Line <> '0' then InList.Add (Line);
Until Line = '0';
for x := 2 to InList.Count-1
do
 begin
  Item := StrToInt (InList[x]);
  Item1 := StrToInt (InList[x-1]);
  Item2 := StrToInt (InList[x-2]);
  if Item > Item1+Item2 then WriteLn (Item);
 end;
Readln;
FreeAndNil (InList);
end.

Автор: oksancik 24.12.2004, 20:24
Спасибо. Только нельзя это по легче написать, а то я не всё понимаю и не знаю еще столько smile
Конкретно это:
Цитата
...Readln;
FreeAndNil (InList);
end...

Автор: Yanis 27.12.2004, 20:11
Я приехал smile

Так тебе с файлома или с массивами надо делать?

Автор: Bes 28.12.2004, 09:30
Var
A,B:array of integer;
i:integer;
begin
setlength(b,0);
setlength(A,8);
a[0]:=1;
a[1]:=4;
a[2]:=7;
a[3]:=2;
a[4]:=7;
a[5]:=10;
a[6]:=3;
a[7]:=0;

for i:=2 to length(a)-1 do
if a[i]>a[i-1]+a[i-2] then
begin
setlength(b,length(b)+1);
b[length(b)-1]:=a[i];
end;
end;
// вывод сам напишешь?

Автор: z-END 28.12.2004, 11:17
Bes а если элементов больше чем 8?! и вообщето по условию (насколько я понял) числа не даны изначально, их вводит юзер, соотвтственно если через TStrings работать нельзя то наверно надо будет поступить таким образом:
Код

Var InList:Array of Integer;
...
Repeat
ReadLn (Line);
if Line <> '0' then
  begin
    SetLength (InList, Length (InList) + 1);
   InList[Length (InList) - 1]:=Line;
  end;
Until Line = '0';



Цитата(oksancik @ 24.12.2004, 20:24)
Спасибо. Только нельзя это по легче написать, а то я не всё понимаю и не знаю еще столько

можно и полегче, например так: InList.Free;

Автор: Bes 28.12.2004, 11:24
2nJIaKca.spb:
Ну ясен пень. просто написал принцип вычисления а уж ввод-вывод... по крайней мере в вопросе не спрашивалось.
А причем тут TStrings?

Мммм.... понятно. (не буду зарабатывать себе "звездочек" - отредактирую это :-) )

Автор: z-END 28.12.2004, 11:32
Да притом что уж очень это похоже на школьный экзамен=) а там наврядли воспримут решение через TStrings, а если говорить про принцип вычисления, то я его уже давно тут написал smile

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