LINUX.ORG.RU

Помогите решить головоломку


0

1

Народ подскажите мне пжалуйста как в paskal сделать что бы проверялось чтение числа с лева на право и с право налево если равные, то true, если нет то false? что то ничего в голову не лезет...

$ paskal
Language not found

urxvt ★★★★★
()

number_to_string == number_to_string_reversed

urxvt ★★★★★
()

По-моему, это лучше в Jobs - «нанимаю делать домашние задания за небольшую плату», etc.

swift
()

решить головоломку

головоломку

головоломку

головоломку


Ты что, этож сложно..

Viglim
()

>с лева на право и с право налево

мда, случай тяжёлый... требуется лечение в условиях стационара...

anonymous
()

s:IntToStr(num);
b:true;
for i:0 to Length(s) div 2 do
if s[i]<>s[Length(s)-i-1] then begin
b:false;
break;
end;

Равно залипает после пролитого пива, s типа ShortString, на паскале три года не писал, склероз свирепствует, могут быть ошибки.

redgremlin ★★★★★
()
Ответ на: комментарий от SlyAlex

Паскаль давно изучал... Если я тебя правильно понял, то самый топорный вариант такой:

1. a - число
2. меняешь каждую цифру числа местами зеркально, получаем число b
3. проверяешь a=b

neocrust ★★★★★
()
Ответ на: комментарий от neocrust

ну что то в этом роде т.е к примеру 123321 это число одинаковое при чтении его с права на лева и с лева на право

SlyAlex
() автор топика
Ответ на: комментарий от SlyAlex

>поскалю

с лева на право

что то

Приговор: расстрел на месте.

vurdalak ★★★★★
()
Ответ на: комментарий от MrHouse

спасибо огромное, оригинально ответил!!! ))) 5 Баллов!!! ну так всё таки кто нить решит?

SlyAlex
() автор топика

ну так как? кто нить поможет??? мне аж самому интересно стало.:-)

SlyAlex
() автор топика
Ответ на: комментарий от SlyAlex

Если хочешь накормить голодного, дай ему удочку. (Как-то так).

А я бы даже сказал, что лучшая помощь - обеспечить самые жестокие условия для тренировки.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

и что ты хочешь предложить паскаль мне выучить до завтра??? за ночь??? если так тяжело помочь, то так и скажи!

SlyAlex
() автор топика
Ответ на: комментарий от SlyAlex

А ребёнку надо было раньше начинать учиться (и/или учиться гуглить). Пусть получает свою заслуженную двойку.

swift
()

этот пост содержит ВЕЩЕСТВА!

А обязатленно переводить число в строку? У меня вшыло во ттак:

#include <stdio.h>

int main()
{
        const int base = 10;
        int a, b = 0, c, ao, bo, l = 0, pl = 0;

        printf("Input some number: ");
        scanf("%d", &a);
        printf("The number is %d...\n", a);

        do {
                ao = a;
                bo = b;

                c = a % base;
                a /= base;
                b = b*base + c;

                if (b == a) {
                        printf("Yes =)!\n");
                        return 0;
                }

                ++l;
                if ((ao == b) && (bo == a))
                        pl = l;
        } while (a);

        if ((l % 2) && (pl == l / 2 + 1)) {
                printf("Yes =)!\n");
                return 0;
        }

        printf("No =(.\n");

        return 0;
}

Deleted
()
Ответ на: комментарий от SlyAlex

Ладно, так и быть, на тебе ссылки:

Раз, два, три.

Как делать. Сначала читаешь 1, копируешь себе, запускаешь. Из общих соображений догадываешься, как сохранить «зеркальное» число в переменную (выводить на экран его не надо, если что - раздел «объявление переменных»). Потом читаешь 2, пишешь одну строку и получаешь работающую программу для четырехзначных чисел. Затем разбираешься, как оно работает (это несложно), читаешь пару абзацев из 3 и переделываешь, чтобы работало на бОльших числах.

gizzka ★★
()

У меня вышло вот так (сильно не бейте, недавно начал изучать paskal):

(define (reverse-iter number result)
  (if (= number 0)
      result
      (reverse-iter (quotient number 10)
                    (+ (* result 10) (modulo number 10)))))

(define (reverse number)
  (reverse-iter number 0))

(define (solve number)
  (= number (reverse number)))

(begin (cond ((solve (read)) (display "Yes"))
             (else (display "No")))
       (newline))

Raving_Zealot ★★
()
$_ = "abba";
print qw(false true)[$_ eq reverse], "\n";

пожалуйста, всегда рад помочь с paskal, это же мой любимый язык!

arsi ★★★★★
()

извенять поскаль не знаю но может пример на математике помогать?
[code]
n=123321
Trace[ToString[n]==StringReverse[ToString[n]]]
[/code]

note173 ★★★★★
()
Ответ на: комментарий от arsi

Раз уж все помогают с paskal - я тоже напишу, это ведь и мой любимый язык!

import std.stdio, std.string, std.cstream, std.conv;
void main()
{
	string s = cast(string)(din.readLine());
	s = strip(s);
	try
	{
		to!int(s);
	}
	catch
	{
		writefln("Not an integer");
		return;
	}
	writefln(cmp(s, s.dup.reverse) == 0 ? "true" : "false");
}
gizzka ★★
()

Вам правильно подсказали еще в самом начале. Только там почему-то знаки «=» не пропечатались

dumal ★★
()
Ответ на: комментарий от SlyAlex

Ладно, я понимаю, что немного не этот язык нужен, но вдруг пригодится. На паскале (не путать с поскалем и paskal).

program inversion;
var x, xc, xi: integer;
begin
readln(x);
xc := x;
xi := 0;
while xc > 0 do
      begin
           xi := xi * 10;
           xi := xi + xc mod 10;
           xc := (xc - xc mod 10) div 10;
      end;
if xi = x then
   writeln('true')
else
   writeln('false');
end.
gizzka ★★
()
Ответ на: комментарий от gizzka

var
a, max_b: longint;

function Reverse(a,b: longint): longint;
begin
if (a = 0) then begin
Reverse:= 0;
max_b:= (b div 10);
exit
end;
Reverse:= (a mod 10)*(max_b div b) + Reverse( (a div 10), b*10 )
end;

begin
write('Chislo = ');
readln(a);
writeln('Perevernutoe chislo = ',Reverse(a,1));
end.

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

SlyAlex
() автор топика
Ответ на: комментарий от SlyAlex

ура добил наконец

var
a, max_b, d: longint;

function Reverse(a,b: longint): longint;
begin
if (a = 0) then begin
Reverse:= 0;
max_b:= (b div 10);
exit
end;
Reverse:= (a mod 10)*(max_b div b) + Reverse( (a div 10), b*10 );
end;

begin
write('Chislo = ');
readln(a);
writeln('Perevernutoe chislo = ',Reverse(a,1));
d:=Reverse(a,1);
if a<>d then write('false');
if a=d then write('true');
readln;
end.

SlyAlex
() автор топика
Ответ на: комментарий от SlyAlex

А я тут пока ещё один вариант написал. Это быдлокод, но зато работает:

let str = System.Console.ReadLine().Trim()
let x = 0
let rez = System.Int32.TryParse(str, ref x)
let tarr = System.Text.ASCIIEncoding.ASCII.GetBytes(str)
System.Array.Reverse(tarr)
match rez with
| false -> printf("not a number")
| true -> 
    let inv = System.Text.ASCIIEncoding.ASCII.GetString(tarr) in
    match str.CompareTo(inv) with
    | 0 -> printf("true")
    | _ -> printf("false");
gizzka ★★
()
Ответ на: комментарий от gizzka

ей богу ещё ему пару раз помочь, и я паскаль выучу)))

Всем огромное спасибо!!!

А может кто подскажет по какой книге лучше всего учить паскаль?

SlyAlex
() автор топика

Вроде как-то так

(\a -> a == reverse a) $ show 

AlexVR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.