Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal (Паскаль)

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Nataliya
0 / 0 / 0
Регистрация: 12.11.2014
Сообщений: 3
#1

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

19.11.2014, 22:14. Просмотров 3148. Ответов 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):

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

палиндром - Pascal
Имя входного файла input.txt Имя выходного файла output.txt Максимальное время работы на одном тесте 2 секунды Ограничение по...

палиндром - Pascal
Помогите, пожалуйста с задачей. Есть число (допустим 196), нужно его перевернуть (691) и сложить с собой (196+691). Получится новое...

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

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

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

5
JokeR.BY
CAPITAL OF ROCK!
1275 / 702 / 573
Регистрация: 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
3604 / 2301 / 1197
Регистрация: 22.11.2013
Сообщений: 6,141
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
1636 / 1065 / 470
Регистрация: 03.07.2013
Сообщений: 4,506
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
кот Бегемот
Платежеспособный зверь
8220 / 3792 / 700
Регистрация: 28.10.2009
Сообщений: 9,710
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2014, 10:50
Привет! Вот еще темы с ответами:

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

Палиндром во времени - Pascal
Найти ближайшее время палиндром во времени. Ввод 00:00 Вывод 01:10 Ввод 12:34 Вывод 13:31 var h,m,mm:integer; procedure...

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

Строка-палиндром. - Pascal
Народ,как сделать через while?...и нужно от середины через 2 параметра сравнивать i и j...


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

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

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