палиндромы
|
|
snaper1993 | Дата: Понедельник, 27.10.2008, 19:08 | Сообщение # 1 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Задача 1! Назовем число палиндромом, если его десятичная запись читается одинаково слева- направо и справа-налево. Сколько из введенных чисел являются палиндромами? Входные данные: в стандартном входном потоке записанные числа в десятичной системе исчисления, каждое в красной строке. Все числа положительные и не превышают 2 000 000 000. Исходные данные: в первую строку стандартного исходного потока вывести искомое количество чисел- палиндромов. Пример входных и исходных данных: Стандартный входной поток: 12 321 1 212 222 213 Стандартный исходный поток: 3 Задача 2! "Двоичные палиндромы" С клавиатуры вводится число n (в десятичной системе исчисления). Вывести из интервала [n, 2*n] все числа (в двоичной системе исчисления), двоичная запись которых является палиндромом. Входные данные: с клавиатуры вводится единое число n (0<n<50000). Исходные данные: вывести на экран двоичные записи чисел- палиндромов из заданного интервала, каждое число в красной строке. Пример входных и исходных данных: Стандартный входной поток: 3 Стандартный исходный поток: 11 101 Объяснение: при n=3 интервал [3; 6] содержит 4 числа (3; 4; 5; 6), двоичные записи которых соответственно (11; 100; 101; 110). Задачка 3! "Палиндром-1" Задана строка, которая составляется из малых латинских букв. Разрешается удалять из строки определенные буквы. Сколькими разными образами можно при этом получить палиндром? Входные данные: заданная строка находится в файле palindrome1.dat, длина его не превышает 30 символов Исходные данные: в первую строку файла palindrome1.sol надо вывести искомое количество образов получения палиндрому. Пример входных и исходных данных: palindrome1.dat aab palindrome1.sol 4 Объяснение: палиндром можно получить, удалив символы: 1) 1 и 2; 2) 1 и 3; 3) 2 и 3; 4) 3. Задача 4! "Палиндром-2" Задана строка, которая составляется из малых латинских букв. Нужно разбить его на минимальное возможное количество палиндромов. Входные данные: заданная строка находится в файле palindrome2.dat, длина не превышает 2000 символов Исходные данные: в первую строку файла palindrome2.sol нужно вывести минимальное количество палиндромов, на которые можно разбить строку Пример входных и исходных данных: palindrome2.dat abbacbb palindrome2.sol 3 Объяснение: abbacbb = abba + c + bb
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Понедельник, 27.10.2008, 20:04 | Сообщение # 2 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| 1) Для перевода числа в строку используется процедура str. Проверка строки уже обсуждалась http://pascal-for-all.ucoz.ru/forum/11-271-1 . 2) В данном случае палиндромом может быть только чётное число. Поэтому нужно каждое чётное число из интервала перевести в строку и проверить. 3) Quote palindrome1.dat aab palindrome1.sol 4 Объяснение: палиндром можно получить, удалив символы: 1) 1 и 2; 2) 1 и 3; 3) 2 и 3; 4) 3. т.е. ab не палиндром? 4) Нужно в цикле проверить является ли палиндромом вся строка, если нет, то убрать последний символ и снова проверить и т.д. пока не встретим палиндром. Аналогично поступить со строкой без первого палиндрома(его мы только что нашли) и т.д. пока строка не станет пустой.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Понедельник, 27.10.2008, 20:22 | Сообщение # 3 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Alexander, Я в общем то все понял но одна проблема мне нужно на завтро ти не могби помоч !! Я то зделаю но (ето будет долго)) у меня черезвычайная ситуация!(помоги пожалуста(если не трудно)!!(Напиши в Паскале)!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Вторник, 28.10.2008, 02:30 | Сообщение # 4 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (snaper1993) Напиши в Паскале Ну уж нет, столь явной халявы не будет. Выкладывай свои исходники, если там будет не полный бред, то я их подправлю.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Вторник, 28.10.2008, 04:40 | Сообщение # 5 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| ну вот например первая, мне нужно штоби в стандартном входном потоке записанные числа в десятичной системе исчисления, каждое в красной строке. Все числа положительные и не превышают 2 000 000 000. Ау меня можно вводить только одну строку ну вот смотри: var i,k:integer; s:string; begin k:=0; read(s); for i:=1 to (length(s) div 2) do begin if (s[i]<>s[length(s)-i+1]) then k:=0 else k:=k+1; Break; end; writeln(k); end.Добавлено (27.10.2008, 21:40) --------------------------------------------- 2 и 3 задачу даже мисли нет !! Двоичную систему я не знаю! а 3 задача ти даже не обяснил!(помоги тебе што тежело)! Или как всекда Секюлера ждать!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Вторник, 28.10.2008, 05:44 | Сообщение # 6 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote var i,k:integer; s:string; begin k:=0; read(s); for i:=1 to (length(s) div 2) do begin if (s[i]<>s[length(s)-i+1]) then k:=0 else k:=k+1; Break; end; writeln(k); end. Не, это вообще никуда не годится . Во-первых в условии не сказано, как узнать, что все числа введены. Пусть ввод считается законченным при вводе не подходящего числа, т.е. меньше одного или больше двух миллиардов. Тогда получаем: Code uses crt; var i,k,l:byte; x:longint; s:string; test:boolean; begin ClrScr; k:=0; repeat ReadLn(x); if (x>2000000000) or (x<1) then break; Str(x,s); l:=length(s); test:=true; for i:=1 to l div 2 do if s[i]<>s[l-i+1] then begin test:=false; break; end; if test then Inc(k); until 1=0; WriteLn(k); ReadKey; end. Quote Двоичную систему я не знаю! Должен знать, раз в задании встретилось. Перевод из десятичной в двоичную можно осуществит, например, так: Code ReadLn(x); i:=1; while x<>0 do begin inc(i); s:=s+chr(x mod 2+$30); x:=x div 2; end; l:=Length(s); for i:=1 to l div 2 do begin c:=s[i]; s[i]:=s[l+1-i]; s[l+1-i]:=c; end; WriteLn(s); Рекомендую выделить это в отдельную функцию. Quote а 3 задача ти даже не обяснил! ну да, ступил(по накури и не такое бывает). Но сейчас вижу, что тебе первых двух надолго хватит. Quote Или как всекда Секюлера ждать! да хоть Папу римского! Меня это совершенно не волнует. З.Ы. И пиши по-русски, а то твои слова фиг расшифруешь.
Скажем дружно- нафиг нужно!
Сообщение отредактировал Alexander - Вторник, 28.10.2008, 05:46 |
|
| |
Seqular | Дата: Вторник, 28.10.2008, 06:19 | Сообщение # 7 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Ну что, я смотрю, без меня управились? )) молодцы.. Порадовали старика.
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
snaper1993 | Дата: Среда, 29.10.2008, 19:07 | Сообщение # 8 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Ага тут еще 3 задачки!Ета била самая льохкая Добавлено (28.10.2008, 08:42) --------------------------------------------- Ой извеняюсь 2 осталось но они тежолие! Добавлено (28.10.2008, 09:28) --------------------------------------------- в 2 задаче у меня выбивает только 11 когда я ввоу 3 , а должно вибивать 11 101 ну вот смотри: var x:longint; i,l:integer; s:string; c:char; begin i:=1; readln(x); while x<>0 do begin inc(i); s:=s+chr(x mod 2+$30); x:=x div 2; end; l:=Length(s); for i:=1 to l div 2 do begin c:=s[i]; s[i]:=s[l+1-i]; s[l+1-i]:=c; end; WriteLn(s); end. А в 1-ой задачке щитает все числа ! И палиндромы и не палиндромы! И еще одна просьба не могли би ви писать задачки без оттаких функций как "uses crt; ClrScr; ReadKey;" потому што нам не разришаеться пользоваться такими функцыями! И еще, Что означает эта функция "Str(x,s);" Добавлено (28.10.2008, 09:30) --------------------------------------------- 1-ая задачка var i,k,l:byte; x:longint; s:string; test:boolean; begin k:=0; repeat readLn(x); if (x>2000000000) or (x<1) then break; l:=length(s); test:=true; for i:=1 to l div 2 do if s[i]<>s[l-i+1] then begin test:=false; break; end; if test then Inc(k) else k:=k+0; until 1=0; WriteLn(k); end. Добавлено (28.10.2008, 19:27) --------------------------------------------- Seqular, Alexander, может ви мне поможете! Добавлено (29.10.2008, 12:07) --------------------------------------------- Seqular, Ну помоги мне пожалуста!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Среда, 29.10.2008, 23:13 | Сообщение # 9 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Времени сейчас совсем нет, завтра по сабжу отвечу если никто другой не объявится.
Скажем дружно- нафиг нужно!
|
|
| |
Alexander | Дата: Суббота, 01.11.2008, 03:50 | Сообщение # 10 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (snaper1993) А в 1-ой задачке щитает все числа ! И палиндромы и не палиндромы! Ложь. Если уж я пишу полный исходник, то я его проверяю на работоспособность или оговариваю в посте обратное. Code в 2 задаче у меня выбивает только 11 когда я ввоу 3 , а должно вибивать Ясное дело, я сразу написал, что это код для перевода числа из десятичной в двоичную систему счисления и не более того. Quote (snaper1993) Добавлено (28.10.2008, 09:30) --------------------------------------------- 1-ая задачка ... а это ещё что? Я написал полностью рабочий код и перепечатывать его, да ещё и с ошибками, не нужно.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Суббота, 01.11.2008, 07:15 | Сообщение # 11 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Ой извеняюсь 1 работает! А как вторую зделаль штобы еще и палиндромы выводило!! А 3 и 4 Помогы плиз Alexander, !!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Суббота, 01.11.2008, 07:52 | Сообщение # 12 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (snaper1993) А как вторую зделаль штобы еще и палиндромы выводило!! смотри пост 2 в этой теме. Про перевод в двоичную я написал, про определение палиндромов тоже- теперь с этой задачей и шимпанзе справится. Quote (snaper1993) А 3 и 4 Помогы плиз Alexander, !! сначала со второй надо разобраться.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Суббота, 01.11.2008, 17:47 | Сообщение # 13 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| А что у меня здесь не правильно: var i,k,l:integer; x:longint; s:string; test:boolean; c:char; begin ReadLn(x); i:=1; while x<>0 do begin inc(i); s:=s+chr(x mod 2+$30); x:=x div 2; end; l:=Length(s); for i:=1 to l div 2 do begin c:=s[i]; s[i]:=s[l+1-i]; s[l+1-i]:=c; end; writeln(s); Str(x,s); l:=length(s); test:=true; for i:=1to l div 2 do if s[i]<>s[l-i+1] then begin test:=false; break; end; if test then inc(k); if (k>0) then writeln(s) else write(''); end. Здвиги уже есть потомушто когда вводил 3 то выдавало 11, а сейчас выдайот 11 0 Подскажы в чом проблема!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Воскресенье, 02.11.2008, 05:12 | Сообщение # 14 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (snaper1993) Подскажы в чом проблема! в том, что ты вообще ничего не понимаешь... Попрошу ответить вот на какой вопрос: Если в программе нам надо повторить одно и тоже действие n-ное количество раз, то какую управляющую конструкцию языка необходимо использовать?
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Воскресенье, 02.11.2008, 16:36 | Сообщение # 15 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Цыкл! Я знаю што нужно использовать цыкл!Просто задачка для меня не понятна!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |