Целочисленная арифметика в Паскаль и Питон (Бонус-тест для 1 курса)

Условия бонус-теста:
1) Запрещено использование тех языковых средств, которые нами ещё не рассматривались на лабораторных занятиях (условия, циклы, специальные функции и т.п.);
2) Оцениваются только те решения, которые не дублируют уже приведённые кем-то (но по одной задаче может быть предложено несколько способов её решения).
3) Обсуждать, улучшать или находить ошибки в чужих решениях можно без ограничений – это тоже даёт бонусы, при этом, возможно, даже большие, чем само решение.
4) До 24:00 каждому участнику разрешено представить правильное решение не более, чем одной задачи (чтобы могло попробовать себя большее число людей); При нарушении этого условия, все баллы участника аннулируются и он исключается из числа участников теста.
5) Любое решение обязательно должно предваряться номером и условием задачи, выполненным в форме включённого в код комментария.
6) Принимается к рассмотрению только правильно выделенный тегами (“красивый”) код, выполненный с необходимыми отступами и содержащий ключевые комментарии.

При несоблюдении выше указанных правил, посты даже не комментируются.

Итак, вот задания:

1. Языки: ПАСКАЛЬ, ПИТОН Написать программы, производящие следующие вычисления над ЦЕЛЫМИ числами (используем только присваивания, операции ввода/вывода и базовые арифметические операции целочисленной арифметики).

Задача 1.
Написать Паскаль-программу, которая принимая на вход натуральное число, не превосходящее 15:
A) Выводит его 2-ичное представление (например, 12 -> 1100);
B) Выводит число единиц в этом 2-ичном представлении (например, 12 -> 2).

Задача 2.
По заданным натуральным, трёхзначным в десятичной записи числам A и B образовать и вывести число C такое, что на нечётных позициях этого числа стоят цифры числа А, а на чётных - цифры числа B. Например, А=205, B=312 дают C=230152. Представить код решения этой задачи
A) На Паскале; B) На Питоне.

Задача 3.
Ввести натуральное ДВОИЧНОЕ 4-значное число и вывести количество содержащихся в его двоичной записи нулевых цифр. Например, 0100 => 3 (в двоичной записи числа три нуля). Решить задачу на Паскале.

Задача 4.
“Счастливым номером” назовём 4-значное натуральное число такое, что сумма первых его двух цифр совпадает с суммой вторых двух его цифр. Написать программу, которая распознаёт счастливые номера, выводя 1, если введённый номер счастливый, и выводя 0, если нет. Например, 3416 => 1, 5003 => 0 (первый номер счастливый, второй – нет). Решить задачу на Паскале.

Задача 5.
Привести не содержащую никаких переменных программу на Питоне, которая:
A) Удваивает вводимое число.
B) Находит сумму двух введённых чисел.

5
Your rating: Нет Average: 5 (5 votes)

Комментарии

Титов Влад аватар

#Задача 4.

  1. #Задача 4.
  2. #“Счастливым номером” назовём 4-значное натуральное число такое, что сумма первых его двух цифр совпадает с суммой вторых двух его цифр. Написать программу, которая распознаёт счастливые номера, выводя 1, если введённый номер счастливый, и выводя 0, если нет. Например, 3416 => 1, 5003 => 0 (первый номер счастливый, второй – нет). Решить задачу на Паскале
  3. n=int(input())
  4. d=n%10
  5. c=(n//10)%10
  6. b=(n//100)%10
  7. a=(n//1000)
  8. if a+b==c+d:
  9.     print(1)
  10. else:
  11.     print(0)

Мне кажется, Влад поспешил...

Мне кажется, Влад поспешил...

Титов Влад аватар

Да, вижу уже, извините)

Да, вижу уже, извините)

Задача 1

  1. Задача 1.
  2. Написать Паскаль-программу, которая принимая на вход натуральное число, не превосходящее 15:
  3. A) Выводит его 2-ичное представление (например, 12 -> 1100);
  4. B) Выводит число единиц в этом 2-ичном представлении (например, 12 -> 2).
  5. A)
  6. program zadacha1;
  7.     var n, x1, x2, x3, x4 : integer;
  8. begin
  9.     readln( 'Введите число n =< 15');
  10.     x1= n mod 2;
  11.     n= n div 2;
  12.     x2= n mod 2;
  13.     n= n div 2;
  14.     x3= n mod 2;
  15.     n= n div 2;
  16.     x4= n mod 2;
  17.     n= n div 2;
  18.     writeln(' 2-ичное представление числа n =   ' x4, x3, x2, x1)
  19. end.
  20. B)
  21. program zadacha1;
  22.     var n, x1, x2, x3, x4, x : integer;
  23. begin
  24.     readln( 'Введите число n =< 15');
  25.     x1= n mod 2;
  26.     n= n div 2;
  27.     x2= n mod 2;
  28.     n= n div 2;
  29.     x3= n mod 2;
  30.     n= n div 2;
  31.     x4= n mod 2;
  32.     n= n div 2;
  33.     x=x1+x2+x3+x4;
  34.     writeln('число единиц в 2-ичном представлении числа n=    ' x )
  35. end.

Влад.

Жду второй попытки.

Ошибки

Есть какие-нибудь ошибки?

no comments

код не соответствует требованиям

Задача 3

  1. program zadanie_3;
  2. var a,b,c:integer;
  3. begin
  4.  
  5.   // Номер задачи: 3
  6.   // Условие: Ввести натуральное ДВОИЧНОЕ 4-значное число и вывести количество
  7.   // содержащихся в его двоичной записи нулевых цифр. Например, 0100 => 3
  8.   // (в двоичной записи числа три нуля). Решить задачу на Паскале.
  9.  
  10.   writeln('Введите двоичное 4х значное натуральное число');
  11.   readln(a);
  12.   b:= a mod 2;      // Подсчет количества единиц в числе
  13.   a:= a div 10;
  14.   b:= b + (a mod 2);
  15.   a:= a div 10;
  16.   b:= b + (a mod 2);  
  17.   a:= a div 10;
  18.   b:= b + (a mod 2);
  19.   a:= a div 10;
  20.   c:= 4 - b;       // От общего кол-ва цифр отнимаем кол-во единиц
  21.   writeln('Количество нулей в числе: ', c);
  22. end.

Титов Влад аватар

“Счастливым номером” назовём

  1. “Счастливым номером” назовём 4-значное натуральное число такое, что сумма первых его двух цифр совпадает с суммой вторых двух его цифр. Написать программу, которая распознаёт счастливые номера, выводя 1, если введённый номер счастливый, и выводя 0, если нет. Например, 3416 => 1, 5003 => 0 (первый номер счастливый, второй – нет). Решить задачу на Паскале.
  2. program pascal;
  3. var a,b,c,d,n:integer;
  4. begin
  5. readln(n);
  6. d:=n mod 10;
  7. c:=(n div 10) mod 10;
  8. b:=(n div 100) mod 10;
  9. a:=(n div 1000);
  10. if a+b=c+d then
  11.     begin
  12.     writeln(1);
  13.     end;
  14. if a+b<>c+d then begin
  15.     writeln(0);
  16.     end;
  17. end.

Юлиана

Ну, почти...
При запуске всё же получите ошибочку

Влад, задачка с изюминкой. Вы

Влад, задачка с изюминкой. Вы её пока не увидели. Только смены языка мало. Надеюсь, кто-то укажет Вам, что не так.

no comments

код не соответствует требованиям

Кажется нашла ошибку...

  1. Задача 1.
  2. Написать Паскаль-программу, которая принимая на вход натуральное число, не превосходящее 15:
  3. A) Выводит его 2-ичное представление (например, 12 -> 1100);
  4. B) Выводит число единиц в этом 2-ичном представлении (например, 12 -> 2).
  5. A)
  6. program zadacha1;
  7.     var n, x1, x2, x3, x4 : integer;
  8. begin
  9.     readln( 'Введите число n =< 15');
  10.     x1:= n mod 2;
  11.     n:= n div 2;
  12.     x2:= n mod 2;
  13.     n:=n div 2;
  14.     x3:= n mod 2;
  15.     n:= n div 2;
  16.     x4:= n mod 2;
  17.     n:= n div 2;
  18.     writeln(' 2-ичное представление числа n =   ' x4, x3, x2, x1)
  19. end.
  20. B)
  21. program zadacha1;
  22.     var n, x1, x2, x3, x4, x : integer;
  23. begin
  24.     readln( 'Введите число n =< 15');
  25.     x1:= n mod 2;
  26.     n:= n div 2;
  27.     x2:= n mod 2;
  28.     n:= n div 2;
  29.     x3:= n mod 2;
  30.     n:= n div 2;
  31.     x4:= n mod 2;
  32.     n:= n div 2;
  33.     x:=x1+x2+x3+x4;
  34.     writeln('число единиц в 2-ичном представлении числа n=    ' x )
  35. end.

Нестеров В.

Сожалею, Владислав, но комментирую только "красивый код".

Титов Влад аватар

//“Счастливым номером”

  1. //“Счастливым номером” назовём 4-значное натуральное число такое, что сумма первых его двух цифр совпадает с суммой вторых двух его цифр. Написать программу, которая распознаёт счастливые номера, выводя 1, если введённый номер счастливый, и выводя 0, если нет. Например, 3416 => 1, 5003 => 0 (первый номер счастливый, второй – нет). Решить задачу на Паскале.
  2. program pascal;
  3. var a,b,c,d,n:integer;
  4. begin
  5. readln(n);
  6. if n>0 then begin
  7.     d:=n mod 10;
  8.     c:=(n div 10) mod 10;
  9.     b:=(n div 100) mod 10;
  10.     a:=(n div 1000);
  11.     if a+b=c+d then
  12.        begin
  13.        writeln(1);
  14.         end;
  15.     if a+b<>c+d then begin
  16.           writeln(0);
  17.         end;
  18. end;
  19. end.

Вы говорили об условии натуральности числа или нет?)

Юлиана, нет! Попробуйте

Юлиана, нет!
Попробуйте запустить программу (любую из двух)

Титов Влад аватар

Юлиана, нет у тебя ввода

Юлиана, нет у тебя ввода числа n, есть надпись "введите число n", но нет самого readln(n)

Тесленко Ольга аватар

Нельзя использовать условный

Нельзя использовать условный оператор

Ошибка

Нельзя пользоваться условными операторами ( if )

Александр Глобенко аватар

readln('тут текст не

readln('тут текст не пишется')

Конечно, Влад

Конечно, Влад, числа натуральные.
Прочитайте предварительные мои комментарии к бонус тесту повнимательней!

Титов Влад аватар

Каким образом тогда проверять

Каким образом тогда проверять в задаче условие равна сумма первых двух цифр сумме двух последних цифр или нет? это невозможно без условного оператора if, как мне кажется

Влад.

Оля и Владислав правы! Ничего невозможного нет.

no comments

код не соответствует требованиям

no comments

код не соответствует требованиям

Саша Глобенко тоже прав. Жаль

Саша Глобенко тоже прав. Жаль только, "красивый код" не использовал.

...

  1. program zadacha1;
  2.     var n, x1, x2, x3, x4 : integer;
  3. begin
  4.     writeln( 'Введите число n =< 15');
  5.     readln(n)
  6.     x1:= n mod 2;
  7.     n:= n div 2;
  8.     x2:= n mod 2;
  9.     n:=n div 2;
  10.     x3:= n mod 2;
  11.     n:= n div 2;
  12.     x4:= n mod 2;
  13.     n:= n div 2;
  14.     writeln(' 2-ичное представление числа n =   ' x4, x3, x2, x1)
  15. end.

Виолетта, Владислав (повторно!)

Комментирую только "красивый" код!

Вопрос

Могу ли я узнать, почему мое решение никак не комментируется? :)
Код сделал "красивым"

Юлиана, ещё есть ошибка!

Юлиана, ещё есть ошибка!

Тесленко Ольга аватар

Юлиана, Забыла точку с

Юлиана, Забыла точку с запятой после Readln(n)

///

  1. program zadacha1;
  2.     var n, x1, x2, x3, x4 : integer;
  3. begin
  4.     writeln( 'Введите число n =< 15');
  5.     readln(n);
  6.     x1:= n mod 2;
  7.     n:= n div 2;
  8.     x2:= n mod 2;
  9.     n:=n div 2;
  10.     x3:= n mod 2;
  11.     n:= n div 2;
  12.     x4:= n mod 2;
  13.     n:= n div 2;
  14.     writeln(' 2-ичное представление числа n =   ' x4, x3, x2, x1)
  15. end.

Злобина Олеся Эдуардовна аватар

Ошибка в задаче 1 у Юлианы

  1. Вместо строки
  2.     readln( 'Введите число n =< 15');
  3. должно быть
  4.     writeln(' Введите число n =< 15');
  5.     readln(n);

Владислав.

Сравните свой текст кода с текстом, например, той же Юлианы. Есть разница в форме представления кода?

Пархоменко Ольга аватар

no comments

код не соответствует требованиям

Павел Хартомацидис аватар

Добрый вечер!

  1. program zadacha1;
  2.     var a,b,c,d,t: integer; //Вводим 5 переменных
  3. begin
  4.     readln( 'Введите число t: ');
  5.     a:= n mod 2;
  6.     n:= n div 2;
  7.     b:= n mod 2;
  8.     n:= n div 2;
  9.     c:= n mod 2;
  10.     n:= n div 2;
  11.     d:= n mod 2;
  12.     n:= n div 2;
  13.     writeln(' Представление числа t= ' d,c,b,a);
  14. end.

...

На самом деле, у меня не отличается
Возможно, какие-то проблемы из-за того, что редактировал комментарий
Сейчас выложу решение уже новым комментарием

ой

у меня съехало, в компиляторе все нормально

Зиновьева Анастасия аватар

1 задача (а) program

  1. 1 задача (а)
  2. program zadacha_1;
  3.   var i,k,m,r,s:byte;
  4.   n, x1, x2, x3, x4, x : integer;
  5. begin
  6.    write('Введите N (0..15): '); readln(i); k:=0;
  7.    k:=k+i mod 2; i:=i div 2;
  8.    k:=k+i mod 2; i:=i div 2;
  9.    k:=k+i mod 2; i:=i div 2;
  10.    k:=k+i mod 2; i:=i div 2;
  11.  
  12.    writeln('Число единиц равно: ',k);
  13.  readln;
  14. End.

Увы, Юлиана

Увы, Юлиана уже испортила свой код. В очередном примере он не "красивый". Теперь рекомендую как пример Олесю.

no comments

код не соответствует требованиям

вопрос

как сделать такой код, как у всех???
у меня как обычный текст делается и из-за этого все плывет

Тогда могу я попро

Тогда могу я попробовать решить другую задачу?

Задача 3

  1. program zadanie_3;
  2.  
  3.    // Номер задачи: 3
  4.    // Условие: Ввести натуральное ДВОИЧНОЕ 4-значное число и вывести количество
  5.    // содержащихся в его двоичной записи нулевых цифр. Например, 0100 => 3
  6.    // (в двоичной записи числа три нуля). Решить задачу на Паскале.
  7.  
  8.    var a,b,c:integer;
  9.  
  10. begin
  11.  
  12.    writeln('Введите двоичное 4х значное натуральное число');
  13.    readln(a);
  14.  
  15.       b:= a mod 2;      // Подсчет количества единиц в числе
  16.       a:= a div 10;
  17.  
  18.       b:= b + (a mod 2);
  19.       a:= a div 10;
  20.  
  21.       b:= b + (a mod 2);  
  22.       a:= a div 10;
  23.  
  24.       b:= b + (a mod 2);
  25.       a:= a div 10;
  26.  
  27.       c:= 4 - b;       // От общего кол-ва цифр отнимаем кол-во единиц
  28.  
  29.    writeln('Количество нулей в числе: ', c);
  30.  
  31. end.

А ты ставила

А ты ставила < pre> и < /pre> ? ( без пробела)

Оля, Павел, снова Владислав...

Ребята, неужели не видите, что представляет собой "красивый код"? Я этому учил во "Введении для 1-курсника". Прямоугольная закрашенная серым фоном область и нумерованные строки форматированного кода в ней...

Зиновьева Анастасия аватар

Переменные integer в задаче

Переменные integer в задаче не учитываются, они относятся к другой задаче

Титов Влад аватар

//Задача 2.По заданным

  1. //Задача 2.
  2. //По заданным натуральным, трёхзначным в десятичной записи числам A и B образовать и вывести число C такое, что на нечётных позициях этого числа стоят цифры числа А, а на чётных - цифры числа B. Например, А=205, B=312 дают C=230152. Представить код решения этой задачи
  3. A) На Паскале; B) На Питоне.
  4. program ABC;
  5. var A,B,C1,C2,C3,C4,C5,C6,C:integer;
  6. begin;
  7. readln(A);
  8. readln(B);
  9. C5:=A mod 10;
  10. C3:=(A div 10) mod 10;
  11. C1:=(A div 100);
  12. C6:=B mod 10;
  13. C4:=(B div 10) mod 10;
  14. C2:=B mod 100;
  15. C:=C1*100000 + C2*10000 + C3*1000 + C4*100 + C5*10 + C6;
  16. writeln(C);
  17. end.

Знаю что неправильно, потому и выкладываю спросить совета, почему не так работает? Каким-то образом у меня даже отрицательное число на выходе получается

Павел Хартомацидис аватар

Zadacha 1

  1. program zadacha1;
  2.     var a,b,c,d,t:integer;
  3. begin
  4.     writeln(' Введите число t');
  5.     readln(n);
  6.     a:= n mod 2;
  7.     n:= n div 2;
  8.     b:= n mod 2;
  9.     n:= n div 2;
  10.     c:= n mod 2;
  11.     n:= n div 2;
  12.     d:= n mod 2;
  13.     n:= n div 2;
  14.     writeln(' Представление числа t= ' d,c,b,a);
  15. end.

...

Что-нибудь изменилось в внешнем виде моего решения?