Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Nataliya
0 / 0 / 1
Регистрация: 12.11.2014
Сообщений: 3
#1

Четырехзначный палиндром - Pascal

19.11.2014, 22:14. Просмотров 3737. Ответов 5
Метки нет (Все метки)

Требуется написать программу, определяющую, является ли четырехзначное натуральное число N палиндромом, т.е. числом, которое одинаково читается слева направо и справа налево. Входной файл INPUT.TXT содержит натуральное число N (1000 ≤ N ≤ 9999). В выходной файл OUTPUT.TXT следует вывести слово «YES», если число N является палиндромом, или «NO» – если нет.
Вот что пишу я (новичок, чайник, не всё до конца понимающий, почти "0")
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Var n, a,b,c,d: Integer;
Begin
Assign (input, 'input.txt');
Reset (input);
Assign (output, 'output.txt');
Rewrite (output);
Read (n);
a:= n div 1000;
b:= n div 100 mod 10;
c:= n div 10 mod 10;
d:= n mod 10;
If (a=d and b=c) then write ('YES')
                        else write ('NO');
Close (input);
Close (output);
End.
Если честно с трудом понимаю как разбить 4-значное число на цифры. Поясните пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2014, 22:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Четырехзначный палиндром (Pascal):

Определить четырехзначный номер нарушителя
15. Три друга были свидетелями ДТП. Первый заметил, что номер нарушителя...

палиндром
Имя входного файла input.txt Имя выходного файла output.txt Максимальное...

палиндром
найти все меньшие ста числа-палиндромы, которые при возведении в квадрат дают...

Палиндром
Составить программу для поиска натуральных чисел меньше 100,которые при...

палиндром
Помогите, пожалуйста с задачей. Есть число (допустим 196), нужно его...

Число палиндром
Назовем число палиндромом, если оно не меняется при перестановке его цифр в...

5
JokeR.BY
CAPITAL OF ROCK!
1278 / 705 / 982
Регистрация: 03.03.2010
Сообщений: 2,284
Завершенные тесты: 2
20.11.2014, 03:13 #2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const
    ans : Array[Boolean] of String = ('NO', 'YES');
 
var
    n : Word;
    f, g : Text;
    a, b, c : Byte;
begin
    Assign(f, 'input.txt'); Reset(f);
    ReadLn(f, n); Close(f);
    Assign(g, 'output.txt'); ReWrite(g);
    if ((n >= 1000) And (n <= 9999)) then // вообще лучше (n in [1000..9999]), но fpc ругается на range check error. а вот pascalABC.NET норм кушает
    begin
        a:= n div 1000;
        b:= n div 100 mod 10;
        c:= n div 10 mod 10;
        n:= n mod 10;
        WriteLn(g, ans[(a = n) And (b = c)]);
    end
    else
        WriteLn(g, 'ERROR');
    Close(g);
end.
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3755 / 2452 / 2034
Регистрация: 22.11.2013
Сообщений: 6,821
20.11.2014, 07:20 #3
Nataliya,
правильно пишете, вот только логическое выражение в if с ошибкой, приоритет операции "=" ниже, чем у "and", поэтому компилятор видит: a = (d and b) = c, что синтаксически неверно, но легко исправляется скобками:
Pascal
1
If (a=d) and (b=c) then
0
APALoff
1638 / 1067 / 1080
Регистрация: 03.07.2013
Сообщений: 4,507
20.11.2014, 10:28 #4
v1:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function IntRevers(a : Longint) : Longint;
Var k : Longint;
Begin
  k:=0;
  While a>0 do
  Begin
    k:=k*10+(a mod 10);
    a:=a div 10;
  end;
  IntRevers:=k;
end;
 
Function IsPali(B : Longint) : Boolean;
Begin
  IsPali:=(B=IntRevers(B));
end;
v2:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Var
  S,ss : String;
  i : Byte;
 
Begin
 Readln(ss);  S:='';
 For i:=1 to Length(SS) do
   If ss[i]<>' ' then s:=s+ss[i];
 For i:=1 to Length(S) div 2 do
   If Upcase(S[i])<>Upcase(S[Length(S)-i+1]) then
   Begin
     Writeln('Not Polyndrome!');
     Break;
   End;
  If i>=Length(S) div 2 then Writeln('Its Polyndrome!');
End.
0
кот Бегемот
Платежеспособный зверь
8447 / 3886 / 1511
Регистрация: 28.10.2009
Сообщений: 10,062
20.11.2014, 10:45 #5
APALoff, девочка и в простых-то программах не разбирается, а Вы ей функций наворотили. Выделываемся?
Она всего лишь задала вопрос: как разбить число на цифры.
Ответ такой:
Для 4-значного числа.
Чтобы найти последнюю цифру, берём остаток от деления этого числа на 10: d:=n mod 10
Так например, остаток от деления числа 2347 mod 10=7, это и есть последняя цифра.
Чтобы найти предпоследнюю цифру, сначала отбросим последнюю, поделив целочисленно на 10
например, 2347 div 10=234
Теперь предпоследняя цифра стала последней и мы находим её по уже известному правилу: остаток от деления на 10
234 mod 10=4
Эти операции можно объединить в одну: (2347 div 10)mod 10=4
Теперь находим вторую цифру. Сначала сделаем её последней, поделив число на 100
2347 div 100=23
и опять берём остаток от деления на 10
23 mod 10=3
или, объединив операции, (2347 div 100)mod 10=3
Осталось найти первую цифру, для этого убираем 3 последние, поделив число на 1000
2347 div 1000=2
Всё это написано и в самой верхней программе
1
APALoff
20.11.2014, 10:50     Четырехзначный палиндром
  #6

Не по теме:

Цитата Сообщение от кот Бегемот Посмотреть сообщение
Выделываемся?
ну если только чуть-чуть... ))

0
20.11.2014, 10:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 10:50
Привет! Вот еще темы с ответами:

число палиндром?
Установить, является ли заданное натуральное число n палиндромом (одинаково...

про палиндром
Составить программу, которая определяет, является ли заданное натуральное число...

Строка-палиндром.
Создать программу, проверяющую является ли строка текстовым палиндромом

Циклы и палиндром.
1)Дана квадратная матрица. Необходимо поменять местами главную диагональ с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru