галина
?>

Дано натуральное число n. проверить, является ли оно счастливым билетом. примечание: вообще, в обычно рассматриваются счастливые билеты с нечетным количеством цифр, потому что у них можно явно выделить левую и правую половины одинаковой длины, сумма цифр которых и сравниваются. однако мы несколько расширим это определение, полагая, что если число имеет нечетную длину, его центральную цифру можно отбросить, так как ее логично было бы прибавить к накапливаемым суммам обоих половин, что, собственно, не изменить отношение между ними. вводные данные выходные данные 14350 true 65248 false , просто от этого зависит моя оценка : )

Информатика

Ответы

bespalovaannaanna

Код:

1.program HappyTicket;

2.var

3.n, a: longint;

4.left, right, digits, i: byte;

5.begin

6.readln(n);

7.a := n;

8.digits := 0;

9.while a <> 0 do begin

10.a := a div 10;

11.inc(digits)

12.end;

13.left := 0;

14.right := 0;

15.for i := 1 to digits div 2 do begin

16.right := right + n mod 10;

17.n := n div 10

18.end;

19.if odd(digits) then n := n div 10;

20.for i := 1 to digits div 2 do begin

21.left:= left + n mod 10;

22.n := n div 10

23.end;

24.writeln(left = right)

25.end.

Представим, как должен работать алгоритм при вводе числа 14350:

1)      Считаем длину числа, она равна 5 (строки 11-14);

2)      В цикле из 5 div 2 = 2 повторений прибавляем к right крайние справа цифры 0 и 5, после чего отбрасываем их и имеем в n 143 (строки 17-20);

3)      Так как odd(digits) = odd(5) = true, отбрасываем 3, после чего имеем в n 14 (строка 21);

4)      В цикле из 5 div 2 = 2 повторений прибавляем к left оставшиеся цифры 1 и 4, после чего n становится равно 0, что, впрочем, нас уже не интересует (строки 22-25);

5)      Выводим на экран значение выражения left = right – ответ положительный (строка 26)

Объяснение:

Для ее решения необходимо знать длину числа (то есть его разрядность), вследствие чего нам необходимо скопировать переменную n в некоторую другую (например, a), чтобы на основе a посчитать количество десятичных разрядов n и сохранить его в некоторой переменной digits. Сделать это можно так:

a := n;

digits := 0;

while a <> 0 do begin

a := a div 10;

inc(digits)

end;

srvsm
Program zadacha;varA: array[1..8] of integer;i,kolvo_pol,proiz_otr: integer;beginfor i:=1 to 8 do read(A[i]);kolvo_pol:=0;proiz_otr:=1;
for i:=1 to 8 do beginif A[i]>0 then kolvo_pol:=kolvo_pol+1;end;writeln();writeln('kolvo_pol = ', kolvo_pol);
for i:=1 to 8 do beginif A[i]<0 then proiz_otr:=proiz_otr*A[i];end;writeln('proiz_otr= ', proiz_otr);end.

program zadacha;varC: array[1..10] of integer;i: integer;beginfor i:=1 to 10 do read(C[i]);writeln();
for i:=1 to 10 do beginif C[i]>0 then C[i]:=sqr(C[i]);end;
for i:=1 to 10 do beginif C[i]<0 then C[i]:=20;end;
for i:=1 to 10 do write(C[i]:6);end.
Шапкина1531
1. Современное решение

// PascalABC.NET 3.2, сборка 1367 от 20.12.2016
// Внимание! Если программа не работает, обновите версию!

begin
  var c:=ReadArrInteger('Введите элементы массива: ',10);
  c.Transform(x->x>0?x*x:x=0?x:20); c.Println
end.

Пример
Введите элементы массива:  5 11 -7 0 3 -12 -8 1 9 -2
25 121 20 0 9 20 20 1 81 20

2. Традиционное "школьное" решение

const
  n=10;
var
  i:integer;
  c:array[1..n] of integer;
begin
  Write('Введите элементы массива: ');
  for i:=1 to n do Read(c[i]);
  for i:=1 to n do
    if c[i]>0 then c[i]:=sqr(c[i])
    else
      if c[i]<0 then c[i]:=20;
  for i:=1 to n do Write(c[i],' ');
  Writeln
end.

3. Улучшенное "школьное" решение

const
  n=10;
var
  i,t:integer;
  c:array[1..n] of integer;
begin
  Write('Введите элементы массива: ');
  for i:=1 to n do begin
    Read(t);
    if t>0 then c[i]:=t*t
    else
      if t<0 then c[i]:=20
    end;
  for i:=1 to n do Write(c[i],' ');
  Writeln
end.

Решите на 4 или на 5 9 класс,массивы на 4 дан массив а(8) ввод данных с клавиатуры.найти произведени
Решите на 4 или на 5 9 класс,массивы на 4 дан массив а(8) ввод данных с клавиатуры.найти произведени

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Дано натуральное число n. проверить, является ли оно счастливым билетом. примечание: вообще, в обычно рассматриваются счастливые билеты с нечетным количеством цифр, потому что у них можно явно выделить левую и правую половины одинаковой длины, сумма цифр которых и сравниваются. однако мы несколько расширим это определение, полагая, что если число имеет нечетную длину, его центральную цифру можно отбросить, так как ее логично было бы прибавить к накапливаемым суммам обоих половин, что, собственно, не изменить отношение между ними. вводные данные выходные данные 14350 true 65248 false , просто от этого зависит моя оценка : )
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

sashaleb88
ktatarinova
galichka12
fygasika
asvavdeeva
ipaskarovanv6
severbykova
reinish23
svo1961
Sacharov84
s-food
marychev55
artemiusst
Альберт Татьяна
Stroeva19651938