Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2012, 21:44   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Наверное, просто описка
Угадал. Описка.
Цитата:
И зачем последний цикл восстанавливает длину строки?
Ну это не восстановление, я бы это выравниванием назвал. Я то по факту, сжав строку, мусор не выкидывал - функции то запрещены, так что пришлось просто занопить его пробелами.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2012, 22:21   #12
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Наконец-то понял! Этим Вы выбрасываете остатки от 1 строки (затираете их пробелами)
Poma][a вне форума Ответить с цитированием
Старый 31.10.2012, 16:53   #13
NinaSSS
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 34
По умолчанию

А вы запустите эту прогу и поймете, что она работает
NinaSSS вне форума Ответить с цитированием
Старый 31.10.2012, 19:42   #14
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
А вы запустите эту прогу и поймете, что она работает
Придите в ресторан закажите блюдо - лосось приготовленный на медленном огне с использованием вегетарианской технологии для .....
Какова будет Ваша реакция если Вам кинут на тарелку живую кильку со словами : "Её тоже есть можно"
Poma][a вне форума Ответить с цитированием
Старый 31.10.2012, 22:35   #15
Владан
Пользователь
 
Аватар для Владан
 
Регистрация: 24.09.2012
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Предлагаю такое сжатие строки:
Код:
k:=1;
for i:=1 to Length(a) do  if c[i]<>'a' then begin c[k]:=c[i];inc(k);end;
for i:=k to Length(a) do c[i]:=' ';
спасибо , а что такое с ?
с:char; ????
Владан вне форума Ответить с цитированием
Старый 31.10.2012, 22:38   #16
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
спасибо , а что такое с ?
там
Цитата:
Угадал. Описка.
Код:
k:=1;
for i:=1 to Length(С) do  if С[i]<>'a' then begin c[k]:=c[i];inc(k);end;
for i:=k to Length(С) do c[i]:=' ';
вот так должно быть И
Код:
c:string;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 31.10.2012, 22:43   #17
Владан
Пользователь
 
Аватар для Владан
 
Регистрация: 24.09.2012
Сообщений: 51
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
там

Код:
k:=1;
for i:=1 to Length(С) do  if С[i]<>'a' then begin c[k]:=c[i];inc(k);end;
for i:=k to Length(С) do c[i]:=' ';
вот так должно быть И
Код:
c:string;
спасибо , это получается у нас две строки 'a' и 'c' ?
Владан вне форума Ответить с цитированием
Старый 31.10.2012, 23:01   #18
Владан
Пользователь
 
Аватар для Владан
 
Регистрация: 24.09.2012
Сообщений: 51
По умолчанию

Код:
uses
  SysUtils,
  math,
  windows;

var
  a:string;
  c:string;
  k,i,b:integer;

begin
  setconsoleCP(1251);
  setconsoleoutputCP(1251);
  Writeln('Введите строку');
  readln(a);
  b:=length(a);
  k:=1;
  for i:=1 to Length(c) do
  if c[i]<>'a' then
  begin c[k]:=c[i];inc(k);
  end;
  for i:=k to Length(C) do c[i]:=' ';
  b:=length(a);
  i:=i+1;
  Writeln(b);
end.
вот я вписую строку(после нажатия F9) и окно пропадает.
Владан вне форума Ответить с цитированием
Старый 01.11.2012, 05:44   #19
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
//........
Writeln(b);
Readln;
end.
Цитата:
Код:
b:=length(a);
эт зачем?
Цитата:
Код:
 i:=i+1;
и это?
и зачем вам вторая строка?
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 01.11.2012 в 05:48.
Mad_Cat вне форума Ответить с цитированием
Старый 01.11.2012, 08:43   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от NinaSSS Посмотреть сообщение
А вы запустите эту прогу и поймете, что она работает
Да Вы что?! Правда, работает?
Ну проверьте для строки aa1aa2aaaa:
Код:
var l:string; i,ll:integer;
begin
  { readln(l); }
  l := 'aa1aa2aaaa';
  ll:=length(l);
  for i:=1 to ll do begin
    if l[i]='a' then delete(l,i,1);
  end;
  writeln('novaa stroka ',l);
  readln
end.
выделил цветом, чтобы ни у кого не возникло желание пользоваться этим некорректным кодом.

Но то, что программа некорректно обрабатывает строку, это ещё полбеды.
В программе есть более существенный баг. Только он не так явно проявляется. Если Вы запустите программу под нормальным компилятором (например, в Delphi) то получите ошибку ERangeError! Смотрите, у Вас в ll длина строки (ну, пусть будет, например, 10), если в строке есть буквы, то Вы их из строки удаляете. так? значит длина строки что делает? Правильно, уменьшается. А переменная ll - не изменяется! Поэтому, когда удали одну букву, l[10] - это обращение к НЕСУЩЕСТВУЮЩЕМУ символу строки. (ТурбоПаскаль, в силу того, что строка без указания длины == array[0..255] of char - соответственно игнорирует выход за длину строки - ему важно, чтобы не было написано l[256] или больше...
Поэтому, Вы свою ошибку и не видите.. Но она там есть!

NinaSSS, успехов в программировании!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки(pascal) - удалить все гласные русские буквы wormiks40 Помощь студентам 3 20.04.2012 09:39
Как удалить все буквы их ячеек и оставить № телефонов. Ppaa Microsoft Office Excel 14 05.07.2011 13:49
из заданной строки текста вывести в алфавитном порядке все содержащиеся гласные буквы (Паскаль) zzz6 Помощь студентам 4 30.06.2011 13:46
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
СИ. Удалить слова, которые содержат все повторяющиеся буквы первого слова nick23 Помощь студентам 7 01.11.2009 14:47