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

 

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

палиндромы
snaper1993Дата: Вторник, 04.11.2008, 04:03 | Сообщение # 61
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
Quote

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

А какие процедуры нужно дописать! surprised
Чото я не понял!


Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
AlexanderДата: Вторник, 04.11.2008, 04:10 | Сообщение # 62
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
этот код я писал для Seqular, чтоб его 2к символов не смущали. И дальше в этой теме я отвечаю только на его посты.

Скажем дружно- нафиг нужно!
 
snaper1993Дата: Вторник, 04.11.2008, 05:30 | Сообщение # 63
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
Quote

этот код я писал для Seqular, чтоб его 2к символов не смущали. И дальше в этой теме я отвечаю только на его посты

А почему только на посты Seqularа!


Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
SeqularДата: Вторник, 04.11.2008, 07:57 | Сообщение # 64
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Quote (Alexander)
этот код я писал для Seqular, чтоб его 2к символов не смущали

Меня уже не смущают. В принципе процедуры я понял как написать. Примерный ход программы таков:
+ Открываем файл, считываем оттуда массив символов.
+ Смотря с конца и далее на один символ меньше, считаем этот фрагмент словом.
+ Проверяем слово на палиндром.
- Если да - Исключаем это слово из рассмотрения.
- Если нет - уменьшаем слово, до тех пор, пока не станет палиндромом.
+ Действуем до тех пор, пока не дойдем до конца массива.


Поддерживаю также проект сообщество молодых сисадминов
 
snaper1993Дата: Четверг, 06.11.2008, 09:43 | Сообщение # 65
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
Seqular, можеш написать етот код для меня пожалуста!

Добавлено (06.11.2008, 02:43)
---------------------------------------------
Seqular, помоги мне с 3 и 4 задачами!Пожалуста!


Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
SeqularДата: Пятница, 07.11.2008, 23:12 | Сообщение # 66
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Alexander, алгоритм, который мы с тобой думали - не пройдет... Надо что-то иное придумать...
snaper1993, есть решение 4-ой, но оно не верное... Т.е. работает, но не совсем те палиндромы выделяет


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

Что значит не пойдёт?! Всё как надо выдаёт! Вот наспех дописанный(часть кода уже выложил выше) вариант:
Code
uses crt;
type
    Arr=array[1..2000] of char;
var
    i,n,k:word;
    c:Arr;
function testpalindrom(c:Arr;i,j:word):boolean;
var
    test:boolean;
    k:word;
begin
    test:=true;
    for k:=1 to (j-i+1) div 2 do
       if c[i+k-1]<>c[j-k+1] then
          begin
             test:=false;
             break;
          end;
    testpalindrom:=test;
end;
procedure writestr(c:Arr;i,j:word);
begin
    for i:=i to j do
       Write(c[i]);
    WriteLn;
end;
begin
    ClrScr;
    n:=0;
    repeat
       inc(n);
       Read(c[n]);
    until not ((c[n]>='a') and (c[n]<='z'));
    dec(n);
    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;
    readKey;
end.


Скажем дружно- нафиг нужно!
 
VictorisДата: Суббота, 08.11.2008, 05:49 | Сообщение # 68
Новичок
Группа: Пользователи
Сообщений: 9
Репутация: -1
Замечания: 20%
Статус: Offline
Разслабтесь, ему уже задачи не нужны, он всё сдал, ну а результаты патом скажет tongue
Спасибо ждите от него wink
 
AlexanderДата: Суббота, 08.11.2008, 06:15 | Сообщение # 69
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Quote (Victoris)
Разслабтесь

во-первых пишется через "с" и с мягким знаком, а во-вторых никто и не напрягался.
Quote (Victoris)
ему уже задачи не нужны

Вообще-то это я продемонстрировал Seqular'у, что алгоритм "пройдёт", а snaper1993 всё равно не сможет подправить пару строк, чтоб не с клавы ввод был, а из файла biggrin .


Скажем дружно- нафиг нужно!
 
SeqularДата: Суббота, 08.11.2008, 06:55 | Сообщение # 70
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Alexander, Скопировал твой код, но так и не понял, как в него вводить данные.. ввожу по символам - завершается после первого же.. Ввожу строкой - в бесконечный цикл падает. Хм.... Как быть?

Поддерживаю также проект сообщество молодых сисадминов
 
SeqularДата: Суббота, 08.11.2008, 06:59 | Сообщение # 71
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Alexander, В моем варианте примерно такой же код получился. Только перед вызовом функции проверки на палиндром я сравнивал c[i] и c[j] символы. Если они не равны, то и палиндрома получиться не может

Поддерживаю также проект сообщество молодых сисадминов
 
AlexanderДата: Суббота, 08.11.2008, 07:12 | Сообщение # 72
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
цикл читает строку пока не встретит не строчную английскую букву.пример ввода
searfsdjbfsdrkghvrf6


Скажем дружно- нафиг нужно!
 
SeqularДата: Суббота, 08.11.2008, 07:16 | Сообщение # 73
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Alexander, А, ясно... =)) В принципе, код у нас получился одинаковый... И одинаково неверный =))
Введи:
Code
kazakarozaupalanalapuazorasosaso!

Программа разделит его на палиндромы:
Code
kazak
arozaupalanalapuazora
sos
a
s
o
(непонятно почему у тебя последний символ игнорируется)
А должна бы разделить на:
Code

kazak
arozaupalanalapuazora
s
osaso

Т.е. наименьшее число палиндромов.. smile


Поддерживаю также проект сообщество молодых сисадминов
 
VictorisДата: Суббота, 08.11.2008, 07:43 | Сообщение # 74
Новичок
Группа: Пользователи
Сообщений: 9
Репутация: -1
Замечания: 20%
Статус: Offline
чё вы паритеся блин!

var l:array[1..2000,1..2000] of byte;

function bit(a,b:byte):byte;

begin

if(a>b) then bit:=a else bit:=b;

end;

function hek(a,b:byte):byte;

begin

if (a>b) then hek:=b else hek:=a;

end;

function hak(h,p:byte):byte;

var n,win1,q:byte;

begin

win1:=255;

for n:=p to h-1 do begin

q:=l[n,p]+l[h,n+1];

if q<win1 then win1:=q;

end;

hak:=win1;

end;

var s:string; n,m:text; v,x,y:byte;

begin

assign(n,'palindrome2.dat'); reset(n);

assign(m,'palindrome2.sol'); rewrite(m);

readln(n,s); v:=length(s);

for x:=1 to v do l[x,x]:=1;

for x:=2 to v do if(s[x]=s[x-1]) then l[x,x-1]:=1 else l[x,x-1]:=2;

for x:=3 to v do

for y:=v-x downto 0 do if(s[x+y]<>s[y+1]) then

l[x+y,y+1]:=hak(x+y,y+1)

else

l[x+y,y+1]:=hek(l[x+y-1,y+2],bit(l[x+y-1,y+1],l[x+y,y+2]));

writeln(m,l[v,1]);

close(n); close(m);

end.

 
snaper1993Дата: Суббота, 08.11.2008, 08:18 | Сообщение # 75
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
Alexander,
Quote
а snaper1993 всё равно не сможет подправить пару строк, чтоб не с клавы ввод был, а из файла

Ти не думай што я вобще уже тупой, главние функции вот:
Code
  
var f,f1:text;
assign(f,'palindrome1.dat'); reset(f);
assign(f1,'palindrome1.sol'); rewrite(f1);
readln(f,"считиваем переменную с файл");
close(f);
writeln(f1);
close(f1,"записуем переменную в файл");
end.

Добавлено (08.11.2008, 01:18)
---------------------------------------------
ой в конце не туда записал:
[code]
var f,f1:text;
assign(f,'palindrome1.dat'); reset(f);
assign(f1,'palindrome1.sol'); rewrite(f1);
readln(f,"считиваем переменную с файл");
close(f);
writeln(f1,"записуем переменную в файл");
close(f1);
end.

Добавлено (08.11.2008, 01:18)
---------------------------------------------
ой в конце не туда записал:

Code

var f,f1:text;  
assign(f,'palindrome1.dat'); reset(f);  
assign(f1,'palindrome1.sol'); rewrite(f1);  
readln(f,"считиваем переменную с файл");  
close(f);  
writeln(f1,"записуем переменную в файл");  
close(f1);  
end.


Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
  • Страница 5 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

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