палиндромы
|
|
Alexander | Дата: Понедельник, 03.11.2008, 09:01 | Сообщение # 46 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| ReadLn(x) зачем? Счётчику цикла присваивать на каждом витке единицу это по-твоему нормально? И ещё эту же переменную использовать как счётчик уже другого цикла тоже очень оригинальная идея.
Скажем дружно- нафиг нужно!
|
|
| |
Alexander | Дата: Понедельник, 03.11.2008, 09:02 | Сообщение # 47 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote Незнаю ну если вот етот код даже не наближен к действительности тогда я пас! не приближен.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Понедельник, 03.11.2008, 09:08 | Сообщение # 48 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Ну пожалуста подправь ету задачку! Тебе што трудно! И спать уже охота но не могу на завтра задачу ету нужно! For i := n to n+n do Begin If (i mod 2 = 1) then Begin 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; End;
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Понедельник, 03.11.2008, 09:44 | Сообщение # 49 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Уже лучше. Code For i := n to n+n do Begin If (i mod 2 = 1) then Begin Вот здесь забыл присвоить значение i иксу и обнулить строку s 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 Здесь и далее нельзя использовать i- надо ввести новую переменную begin c:=s[i]; s[i]:=s[l+1-i]; s[l+1-i]:=c; end; WriteLn(s); end; End; а вот этот аргумент никогда не используй, если просишь кого-то о помощи, запомни- ничего не делать всегда проще. Кстати, завтра выходной.
Скажем дружно- нафиг нужно!
Сообщение отредактировал Alexander - Понедельник, 03.11.2008, 09:46 |
|
| |
Seqular | Дата: Понедельник, 03.11.2008, 09:47 | Сообщение # 50 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Code Uses CRT; Var n, j: Integer; c: String;
{Convert DEC'number to BIN'number format} Function Dec2Bin(x: Integer): String; Var rez, temp: String; v: Integer; Begin rez := ''; If (x > 0) then Begin While (x >= 2) do Begin v := x mod 2; Str(v, temp); rez := temp + rez; x := x div 2; End; Dec2Bin := '1' + rez; End Else Dec2Bin := '0'; End;
Function IsPalindrome(s: String): Boolean; Var i: Byte; Begin IsPalindrome := True; For i := 1 to (length(s) div 2) do Begin If (s[i] <> s[length(s)-i+1]) then Begin IsPalindrome := False; Break; End; End; End;
Begin Repeat ClrScr; Write('NUM: '); Readln(n); Until ((n >= 0) and (n <= 50000)); For j := n to n+n do Begin If (j mod 2 = 1) then Begin c := Dec2Bin(j); If (IsPalindrome(c)) then Writeln(c); End; End; ReadKey; End. Оптимизируйте на здоровье ))
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Alexander | Дата: Понедельник, 03.11.2008, 09:59 | Сообщение # 51 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote Until ((n >= 0) and (n <= 50000)); и часто integer хранит значение >=50000? . Кстати, ещё я очень сомневаюсь, что он что-то слышал о подпрограммах. И насчёт перевода- твой изврат понятен, введена вторая строка, но нет цикла для переворота строки. Так вот, зачем нам переводить в двоичную? Мы ведь просто проверим палиндром это или нет, а палиндром как не переворачивай, он всё равно таким же и останется. И ещё, теперь эта тема на твоей совести .
Скажем дружно- нафиг нужно!
Сообщение отредактировал Alexander - Понедельник, 03.11.2008, 10:01 |
|
| |
Seqular | Дата: Понедельник, 03.11.2008, 10:07 | Сообщение # 52 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Quote (Alexander) и часто integer хранит значение >=50000? Эммм.... Да уж.. Тут я конечно дал маху )) Граничные условия дописал уже перед отправкой )) Ну можно longint сделать тип базовый... Quote (Alexander) Кстати, ещё я очень сомневаюсь, что он что-то слышал о подпрограммах. Без подпрограммы я писать код отказываюсь... Извращение полное. Пусть тогда он разберется в подпрограммах, (их отлаживать проще), а потом пишет все монолитным куском )) Quote (Alexander) введена вторая строка Если ты про переменную temp, то она нужна только для того, чтобы остаток от деления преобразовать в строку. Писать отдельно функцию IntToStr() мне не хотелось... Quote (Alexander) И насчёт перевода- твой изврат понятен Не спорю, многое можно было сделать лучше. Но так будет понятее ему разобраться в кусках... Quote (Alexander) И ещё, теперь эта тема на твоей совести НЕЕЕЕЕЕЕЕ-Е-Е-Е-ЕТ!!!!!
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Alexander | Дата: Понедельник, 03.11.2008, 10:15 | Сообщение # 53 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (Seqular) Но так будет понятее ему разобраться в кусках... Да брось, не будет он ни в чём разбираться. Quote (Seqular) Если ты про переменную temp, то она нужна только для того, чтобы остаток от деления преобразовать в строку. Угу, тут я очень фигово написал. А темп тут нужно делать чаром и использовать функцию chr.
Скажем дружно- нафиг нужно!
|
|
| |
Seqular | Дата: Понедельник, 03.11.2008, 10:36 | Сообщение # 54 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Quote (Alexander) Да брось, не будет он ни в чём разбираться. Ну это по-моему его проблемы... Мы-то с тобой решим в ином случае эту задачу.. А разобраться в этой - он сам заинтересован
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Seqular | Дата: Понедельник, 03.11.2008, 11:32 | Сообщение # 55 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Как вот третью решать? )) Удалять последовательно различные символы (рекурсивно может быть?) И с четвертой вопрос... Нечасто у нас строка хранит 2000 символов. И вообще. ДЛЯ КАЖДОЙ ЗАДАЧИ СВОЯ ТЕМА ДОЛЖНА БЫТЬ!
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Alexander | Дата: Понедельник, 03.11.2008, 21:20 | Сообщение # 56 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (Seqular) Как вот третью решать? )) Удалять последовательно различные символы (рекурсивно может быть?) Зачем? Нам дана строка- это множество. Нам нужно сформировать все возможные подмножества этого множества, которые тоже образуют строки. Не забываем, что порядок имеет значение, примеры здесь. Quote (Seqular) Нечасто у нас строка хранит 2000 символов. массив из 2000 чаров- чем не строка? Для любителей готовых типов данных есть phar. Эта задача очень простая, третья намного сложнее, я когда-то тоже над комбинаторной задачей долго просидел- надо было многочлен вида (x-x1)(x-x2)...(x-xn) привести к стандартному виду.
Скажем дружно- нафиг нужно!
|
|
| |
snaper1993 | Дата: Вторник, 04.11.2008, 00:40 | Сообщение # 57 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Seqular, помоги мне зделать 3 и 4 задачки! пОЖАЛУСТА! Alexander, может у вас в понидельник выходной, а вот у нас нет!Добавлено (03.11.2008, 17:40) --------------------------------------------- И еще Alexander, ти говориш што 4 задача простая. как тогда можна 4 зделать!Обесни мне!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Вторник, 04.11.2008, 02:23 | Сообщение # 58 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| четвёртая в общих чертах должна так выглядеть: Code i:=1; k:=n; while i<>n do begin if testpalindrom(c,i,k) then begin Writestr(c,i,k); i:=k+1; k:=n; end else dec(k); end; testpalindrom проверяет палиндром ли строка в массиве "с" начиная с элемента i до j. Writestr выводит на экран строку из массива "с" начиная с элемента i до j. n- число элементов в массиве "с". Quote (snaper1993) ти говориш што 4 задача простая. как тогда можна 4 зделать!Обесни мне! смотри мой первый пост в этой теме. Объяснять что-либо тому, кто ничего не делает для того, чтобы понять- бесполезное занятие и я им больше заниматься не буду.
Скажем дружно- нафиг нужно!
Сообщение отредактировал Alexander - Вторник, 04.11.2008, 02:24 |
|
| |
snaper1993 | Дата: Вторник, 04.11.2008, 03:23 | Сообщение # 59 |
Бывалый
Группа: Пользователи
Сообщений: 121
Статус: Offline
| Code i:=1; k:=n; while i<>n do begin if testpalindrom(c,i,k) then begin Writestr(c,i,k); i:=k+1; k:=n; end else dec(k); end; Етот код не работает, может ти забыл проверить!
Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
|
|
| |
Alexander | Дата: Вторник, 04.11.2008, 03:38 | Сообщение # 60 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Quote (snaper1993) Етот код не работает, может ти забыл проверить! , ты долго думал перед тем, как не дописав свои процедуры, скормить этот код компилятору??? Просто цирк.
Скажем дружно- нафиг нужно!
Сообщение отредактировал Alexander - Вторник, 04.11.2008, 03:38 |
|
| |