Другие языки программирования и технологии
паскаль... строки...функция delete. не подскажете, почему в этой программе она не выполняется,что опять не так тут?(((
program Strings; var razd:set of char; kol_sl, i, kol_pal,dl_sl, beg_wrd : integer; st,wrd, inv_wrd : string; begin razd:=[' ',',','.',':','!']; writeln('введите строку'); Readln (st); kol_sl:=0; kol_pal := 0; i:=1; while (i <= length(st)) do begin dl_sl:=0; wrd := ''; inv_wrd := ''; beg_wrd :=i; while (i<=length(st)) and (not (st in razd)) do begin dl_sl:= dl_sl+1; wrd := wrd + st; inv_wrd := st + inv_wrd; i:=i+1; end; if dl_sl > 0 then begin kol_sl:= kol_sl+1; inv_wrd:= st+wrd; if wrd = inv_wrd then begin kol_pal := kol_pal + 1; if wrd=inv_wrd then delete(inv_wrd,kol_sl,kol_pal); end; writeln('это строка без палиндрома: '); writeln(st); readln; end; writeln('пока'); readln; end; end.
if wrd = inv_wrd
then begin
kol_pal := kol_pal + 1;
if wrd=inv_wrd then delete(inv_wrd,kol_sl,kol_pal);
end;
Что у тебя делает 2-ой иф?
Я забыл значение оператора delete (ещё же есть Del), но если ты ответишь, тебе и самой станет понятнее.
1ый аргумент - это строка? почему инвертированная?
2ой аргумент - это позиция в строке? не надо ли увеличить указатель на 1?
then begin
kol_pal := kol_pal + 1;
if wrd=inv_wrd then delete(inv_wrd,kol_sl,kol_pal);
end;
Что у тебя делает 2-ой иф?
Я забыл значение оператора delete (ещё же есть Del), но если ты ответишь, тебе и самой станет понятнее.
1ый аргумент - это строка? почему инвертированная?
2ой аргумент - это позиция в строке? не надо ли увеличить указатель на 1?
Vpzhuk Pet
второй иф потому что с ним прога работае нормально
Женя, не пренебрегай привести и условие задачи, а не только код. А то напоминает игру, когда одна размахивает руками, а другие стараются угадать, кого она изображает ;) Да еще через испорченный телевизор движка "Ответов" ;)
var s:string; i,n:integer; b:boolean;
begin
readln(s); i:=1;
repeat if s[ i]<'A' then delete(s,i,1) else inc(i); until i>length(s);
b:=true; n:=length(s); for i:=1 to n div 2 do if s[ i] <> s[n-i+1] then b:=false;
if b then writeln('It is a palinrom') else writeln('It is not a palindrom'); readln
end.
P.S. Сравнение я сделал без множеств, просто исходя из того, что все твои специальные знаки в алфавите имеют коды меньше, чем коды букв. Лучше делать более просто, чем более сложно ;)
Однако если вам нужны именно множества, то замени s[ i]<'A' на s[ i] in [' ',',','.',':','!'] , а еще лучше на s[ i] in [' '..'?'] , и не надо никакого специального объявления множества rasd.
var s:string; i,n:integer; b:boolean;
begin
readln(s); i:=1;
repeat if s[ i]<'A' then delete(s,i,1) else inc(i); until i>length(s);
b:=true; n:=length(s); for i:=1 to n div 2 do if s[ i] <> s[n-i+1] then b:=false;
if b then writeln('It is a palinrom') else writeln('It is not a palindrom'); readln
end.
P.S. Сравнение я сделал без множеств, просто исходя из того, что все твои специальные знаки в алфавите имеют коды меньше, чем коды букв. Лучше делать более просто, чем более сложно ;)
Однако если вам нужны именно множества, то замени s[ i]<'A' на s[ i] in [' ',',','.',':','!'] , а еще лучше на s[ i] in [' '..'?'] , и не надо никакого специального объявления множества rasd.
Vpzhuk Pet
я замучила тут всех)))))))))))) у меня получилось, удаляет слова-палиндромы,как надо! Но удаляет почему - то тока ОДНО а не все имеющиесяааа(((((( вот код...
program Strings;
var
razd:set of char;
kol_sl, i, kol_pal,dl_sl, beg_wrd : integer;
st,wrd, inv_wrd : string;
begin
razd:=[' ',',','.',':','!'];
writeln('‚ўҐ¤ЁвҐ бва®Єг ¤«п ®Ўа Ў®вЄЁ');
Readln (st);
kol_sl:=0;
kol_pal := 0;
i:=1;
while (i
program Strings;
var
razd:set of char;
kol_sl, i, kol_pal,dl_sl, beg_wrd : integer;
st,wrd, inv_wrd : string;
begin
razd:=[' ',',','.',':','!'];
writeln('‚ўҐ¤ЁвҐ бва®Єг ¤«п ®Ўа Ў®вЄЁ');
Readln (st);
kol_sl:=0;
kol_pal := 0;
i:=1;
while (i
Vpzhuk Pet
then begin
kol_sl:= kol_sl+1;
inv_wrd:= st+wrd;
if wrd = inv_wrd
then begin
kol_pal := kol_pal + 1;
if wrd=inv_wrd then delete(inv_wrd,kol_sl,kol_pal);
end;
writeln('бва®Є ЎҐ§ Ї «Ё¤а®¬®ў: ');
writeln(inv_wrd);
readln;
end;
writeln(' ¦¬ЁвҐ Enter ¤«п ўл室 ');
readln;
end;
end.
kol_sl:= kol_sl+1;
inv_wrd:= st+wrd;
if wrd = inv_wrd
then begin
kol_pal := kol_pal + 1;
if wrd=inv_wrd then delete(inv_wrd,kol_sl,kol_pal);
end;
writeln('бва®Є ЎҐ§ Ї «Ё¤а®¬®ў: ');
writeln(inv_wrd);
readln;
end;
writeln(' ¦¬ЁвҐ Enter ¤«п ўл室 ');
readln;
end;
end.
Vpzhuk Pet
я делала все по алгоритму который в вузе дали! пусть все буит как требуют они....
Похожие вопросы
- Паскаль строки
- Имеется 1500 строк с названиями файлов в формате txt, какой программой можно определить строки где символов больше?
- Подскажите почему Паскаль не делает нужного расчета и выводит на экран просто S вместо его значения? Как это исправить?
- паскаль(строки)
- Delphi. Строки. Почему не срабатывает программа.
- Подскажите, как можно проверить программу составленную в Паскале в excel
- Я делаю мини игру на паскале, и у меня выбор из двух действий но почему то всегда выбирается первое. Подскажите почему
- Для чего язык паскаль??? Для чего язык паскаль??? Его в школах изучают, а почему не c++ или тот же php(html изучают!)?
- Функции и указатели подскажите
- Мастера фотошопа , подскажите почему программа не сохряняет файл для WEB? возникает проблема закрывающая программу