ВХОД

МЕТОДИЧЕСКИЕ РАЗРАБОТКИ ПО КУРСУ ИНФОРМАТИКИ

"ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PASCAL"

Начало > Глава III. Палиндромы, Фибоначчи > Задачи с решениями

ГЛАВА III

ЗАДАЧИ С РЕШЕНИЯМИ

Палиндромы



1. Проверить, является ли число, вводимое с клавиатуры, палиндромом.
  Переход
Блок-схема

2. Найти палиндромы в заданном интервале.
  Переход
Блок-схема

3. Найти первый трехзначный палиндром, сумма цифр которого - двузначное число.
  Переход
Блок-схема


1. Проверить, является ли число, вводимое с клавиатуры, палиндромом.

Ответ:
x=121
121 - палиндром
или x=123
123 - не палиндром

program pal_01;
uses crt;
var x, xx, c, x1: integer;

    {x - исходное число;
    xx - дубликат исходного числа;
    x1 - обратное число;
    c - цифра исходного числа}

begin clrscr;
write('x='); readln(x);
xx:=x; {создали дубликат исходного числа}
    while x< >0 do {применим алгоритм разделения числа на цифры для сборки обратного числа}
    begin
      c:=x mod 10;
      x:=x div 10;
      x1:=x1*10+c; {учитываем порядок цифр числа}
    end;
{если обратное число равно дубликату исходного числа:}
If x1=xx then writeln(xx, ' - палиндром')
    else writeln(xx, ' - не палиндром')
end.



2. Найти палиндромы в заданном интервале.
Ответ:
a=10
b=12
10 - не палиндром
11 - палиндром
12 - не палиндром


program pal_02;
uses crt;
var a,b, max,min, x, c, x1: integer;
    {a,b - границы интервала;
    max, min - определение границ интервала как минимальное и максимальное число;
    x - дубликат исходного числа;
    x1 - обратное число;
    c - цифра исходного числа}
begin clrscr;
write('a='); readln(a); {ввод границ интервала}
write('b='); readln(b);
    if a>b then begin max:=a; min:=b end {определение границ интервала как минимальное и максимальное число}
    else begin max:=b; min:=a end ;

while min<=max do {пока нижняя граница интерваа не сравняется с верхней}
    begin
      x:=min; {создали дубликат исходного числа}
      x1:=0;
      while x< >0 do {применим алгоритм разделения числа на цифры для сборки обратного числа}
        begin
          c:=x mod 10;
          x:=x div 10;
          x1:=x1*10+c; {учитываем порядок цифр числа}
        end;

      {если обратное число равно исходному числу:}
      If x1=min then writeln(min, ' - палиндром') else writeln(min, ' - не палиндром');
      inc(min);

    end;

end.


3. Найти первый трехзначный палиндром, сумма цифр которого - двузначное число.

Ответ:
x=191 Sc=11

program pal_03;
uses crt;
var i, Sc, x, c, x1: integer;

    { i - трехзначные числа;
    Sc - сумма цифр;
    x - дубликат исходного числа;
    x1 - обратное число;
    c - цифра исходного числа}

begin
    clrscr;
    i:=100; {первое число}

    while (Sc<=10) do {пока сумма цифр меньше 10}

      begin
      x:=i; {создали дубликат проверяемого числа} ;
      x1:=0;
      while x< >0 do {применим алгоритм разделения числа на цифры для сборки обратного числа}
        begin
        c:=x mod 10;
        x:=x div 10;
        x1:=x1*10+c; {учитываем порядок цифр числа}
        end;
      {если обратное число равно исходному числу:}
      If x1=i then
        begin
        Sc:=0;
        while x1< >0 do
          begin
          c:=x1 mod 10;
          x1:=x1 div 10;
          inc(Sc,c) ;
          end;

        end;

      inc(i) {готовим следующее число для проверки}
      end;

    writeln('x=':8,i-1,'Sc=':8,Sc);
end.



 

 

 

 

Copyright ©2011 Nika A.S.
Hosted by uCoz