школьные олимпиады по программированию.Решение и разбор задач.

VAR A,B,i:INTEGER;
S,s1:STRING;
k:string[1];

BEGIN
assign(input,'input.txt');
assign(output,'output.txt');
reset(input);
rewrite(output);
READLN(A);
REPEAT
str(a mod 2,k);
s:=k+s;
A:=A DIV 2;
UNTIL A<1;

WRITE(S,' ');
for i:=1 to length(s) do
s1:=s[i]+s1;

if s1=s then write('1')
else write('0');

END.

Решение и разбор задачи
Задача 2.Палиндром.
Вывести двоичное представление десятичного числа и определить является ли данное разложение палиндромом.
INPUT.TXT
10
OUTPUT.TXT
1010 0

Алгоритм

1)из входного файла input.txt считываем десятичное число

2)в цикле с постусловием организуем рост строки остатков от деления на "2" данного числа до тех пор пока это число не станет меньше "1", внутри тела цикла рост строки двоичного числа и целая часть числа после деления на "2"

3)в цикле с параметром , обращаясь к строке как к элементам массива,генерируется "перевертыш" двоичного кода десятичного числа

4)условие сравнения "перевертыша" с изначальным "двоичным" числом, если истина вывод двоичного кода и "1", если ложь - "0"

Знать:
  • алгоритм перевода числа из одной системы счисления в другую
  • оператор выбора "if <условие> then <оператор>"
  • арифметические операторы "div" и "mod"
  • циклы с параметром for.., с предусловием while..., с постусловием repeat...


Уметь:
  • работать с входными и выходными файлами input.txt output.txt
  • генерировать перевод числа в другую систему счисления
домой
Hosted by uCoz