Среда, 08.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 4 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Модератор форума: Seqular, Pavel  

палиндромы
AlexanderДата: Понедельник, 03.11.2008, 09:01 | Сообщение # 46
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
ReadLn(x) зачем? Счётчику цикла присваивать на каждом витке единицу это по-твоему нормально? И ещё эту же переменную использовать как счётчик уже другого цикла тоже очень оригинальная идея.

Скажем дружно- нафиг нужно!
 
AlexanderДата: Понедельник, 03.11.2008, 09:02 | Сообщение # 47
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote
Незнаю ну если вот етот код даже не наближен к действительности тогда я пас!

не приближен.


Скажем дружно- нафиг нужно!
 
snaper1993Дата: Понедельник, 03.11.2008, 09:08 | Сообщение # 48
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: 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
Репутация: 16
Замечания: 0%
Статус: 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;

Quote
Тебе што трудно!

а вот этот аргумент никогда не используй, если просишь кого-то о помощи, запомни- ничего не делать всегда проще. Кстати, завтра выходной.


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Понедельник, 03.11.2008, 09:46
 
SeqularДата: Понедельник, 03.11.2008, 09:47 | Сообщение # 50
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: 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
Репутация: 16
Замечания: 0%
Статус: Offline
Quote
Until ((n >= 0) and (n <= 50000));

и часто integer хранит значение >=50000? smile .
Кстати, ещё я очень сомневаюсь, что он что-то слышал о подпрограммах.
И насчёт перевода- твой изврат понятен, введена вторая строка, но нет цикла для переворота строки. Так вот, зачем нам переводить в двоичную? Мы ведь просто проверим палиндром это или нет, а палиндром как не переворачивай, он всё равно таким же и останется.
И ещё, теперь эта тема на твоей совести biggrin .


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Понедельник, 03.11.2008, 10:01
 
SeqularДата: Понедельник, 03.11.2008, 10:07 | Сообщение # 52
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Quote (Alexander)
и часто integer хранит значение >=50000?

Эммм.... Да уж.. Тут я конечно дал маху )) Граничные условия дописал уже перед отправкой ))
Ну можно longint сделать тип базовый...

Quote (Alexander)
Кстати, ещё я очень сомневаюсь, что он что-то слышал о подпрограммах.

Без подпрограммы я писать код отказываюсь... Извращение полное. Пусть тогда он разберется в подпрограммах, (их отлаживать проще), а потом пишет все монолитным куском ))

Quote (Alexander)
введена вторая строка

Если ты про переменную temp, то она нужна только для того, чтобы остаток от деления преобразовать в строку. Писать отдельно функцию IntToStr() мне не хотелось...

Quote (Alexander)
И насчёт перевода- твой изврат понятен

Не спорю, многое можно было сделать лучше. Но так будет понятее ему разобраться в кусках...

Quote (Alexander)
И ещё, теперь эта тема на твоей совести

НЕЕЕЕЕЕЕЕ-Е-Е-Е-ЕТ!!!!! cry cry cry


Поддерживаю также проект сообщество молодых сисадминов
 
AlexanderДата: Понедельник, 03.11.2008, 10:15 | Сообщение # 53
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote (Seqular)
Но так будет понятее ему разобраться в кусках...

Да брось, не будет он ни в чём разбираться.
Quote (Seqular)
Если ты про переменную temp, то она нужна только для того, чтобы остаток от деления преобразовать в строку.

Угу, тут я очень фигово написал. А темп тут нужно делать чаром и использовать функцию chr.


Скажем дружно- нафиг нужно!
 
SeqularДата: Понедельник, 03.11.2008, 10:36 | Сообщение # 54
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Quote (Alexander)
Да брось, не будет он ни в чём разбираться.

Ну это по-моему его проблемы... Мы-то с тобой решим в ином случае эту задачу.. А разобраться в этой - он сам заинтересован


Поддерживаю также проект сообщество молодых сисадминов
 
SeqularДата: Понедельник, 03.11.2008, 11:32 | Сообщение # 55
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Как вот третью решать? )) Удалять последовательно различные символы (рекурсивно может быть?)
И с четвертой вопрос... Нечасто у нас строка хранит 2000 символов.
И вообще.
ДЛЯ КАЖДОЙ ЗАДАЧИ СВОЯ ТЕМА ДОЛЖНА БЫТЬ!


Поддерживаю также проект сообщество молодых сисадминов
 
AlexanderДата: Понедельник, 03.11.2008, 21:20 | Сообщение # 56
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote (Seqular)
Как вот третью решать? )) Удалять последовательно различные символы (рекурсивно может быть?)

Зачем? Нам дана строка- это множество. Нам нужно сформировать все возможные подмножества этого множества, которые тоже образуют строки. Не забываем, что порядок имеет значение, примеры здесь.
Quote (Seqular)
Нечасто у нас строка хранит 2000 символов.

массив из 2000 чаров- чем не строка? Для любителей готовых типов данных есть phar. Эта задача очень простая, третья намного сложнее, я когда-то тоже над комбинаторной задачей долго просидел- надо было многочлен вида (x-x1)(x-x2)...(x-xn) привести к стандартному виду.


Скажем дружно- нафиг нужно!
 
snaper1993Дата: Вторник, 04.11.2008, 00:40 | Сообщение # 57
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
Seqular, помоги мне зделать 3 и 4 задачки! пОЖАЛУСТА!
Alexander, может у вас в понидельник выходной, а вот у нас нет!

Добавлено (03.11.2008, 17:40)
---------------------------------------------
И еще Alexander, ти говориш што 4 задача простая. как тогда можна 4 зделать!Обесни мне!


Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
AlexanderДата: Вторник, 04.11.2008, 02:23 | Сообщение # 58
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: 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
Репутация: 2
Замечания: 0%
Статус: 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
Репутация: 16
Замечания: 0%
Статус: Offline
Quote (snaper1993)
Етот код не работает, может ти забыл проверить!

haha , ты долго думал перед тем, как не дописав свои процедуры, скормить этот код компилятору??? Просто цирк.


Скажем дружно- нафиг нужно!

Сообщение отредактировал Alexander - Вторник, 04.11.2008, 03:38
 
  • Страница 4 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;