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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2013, 07:55   #1
mr.Starosta
Новичок
Джуниор
 
Регистрация: 17.03.2013
Сообщений: 15
По умолчанию Вставить пробел перед последними 2-мя символами в слова, имеющие минимальную (заданную) длину

Помогите пожалуйста решить задачу
целую неделю пытаюсь но не получается
Вставить пробел перед последними 2-мя символами в слова, имеющие минимальную (заданную) длину
mr.Starosta вне форума Ответить с цитированием
Старый 15.04.2013, 08:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Показывай как пытался?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2013, 14:30   #3
mr.Starosta
Новичок
Джуниор
 
Регистрация: 17.03.2013
Сообщений: 15
Восклицание

Цитата:
Сообщение от Stilet Посмотреть сообщение
Показывай как пытался?
Вот что смог, но не работает, еще порылся по сайтам но там все глухо
Код:
PROGRAM kolpolog;
uses crt;
procedure InsChrToPosWords(var ds: string; vs: integer);
var
i: integer;
s1,s2: string;
begin
s1:='';
s2:='';
for i:= 1 to length(ds) do
begin
s1:= s1 + ds;
 if ds=' ' then
 begin
  if length(s1)-1 = vs then
  insert(' ', s1, length(s1)-2);
  s2:= s2 + s1;
  s1:= '';
 end;
end;
ds:= s2;
end;


var
s: string;
begin
s:='12 123 1234 12345 12345 12345 12345678 123456789';

InsChrToPosWords(s,5);

end.
Помоги решить эту задачу

Последний раз редактировалось Stilet; 05.05.2013 в 09:50.
mr.Starosta вне форума Ответить с цитированием
Старый 04.05.2013, 15:30   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
PROGRAM kolpolog;
 
 uses crt;
 
 procedure InsChrToPosWords(var ds: string; vs: integer);
 var
	i: integer;
	s1: string;
 begin
	s1:='';
	for i:= 1 to length(ds) do
	begin
		if ds[i]=' ' then
		begin
			if length(s1) = vs then
				insert(' ', ds, i);
			s1:= '';
		end
		else 
			s1 := s1 + ds[i]
		    
	end
	
end;


 var
	s: string;
	
 begin
 	s:='12 123 1234 12345 12345 12345 12345678 123456789';
	s := s + ' ';
	
	InsChrToPosWords(s,5);
	WriteLn (s)
 end.
Но в Вашем задании сказано вставить пробелы только после последних 2-ух. Так что выше представленный алгоритм требует некоторых преобразований..
Poma][a вне форума Ответить с цитированием
Старый 04.05.2013, 18:25   #5
mr.Starosta
Новичок
Джуниор
 
Регистрация: 17.03.2013
Сообщений: 15
По умолчанию

Не работает программа. Что надо исправить?
mr.Starosta вне форума Ответить с цитированием
Старый 04.05.2013, 21:00   #6
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Не работает программа.
Тоесть не работает? Выдает неверный ответ? Не компилируется? Или что-то еще?
Poma][a вне форума Ответить с цитированием
Старый 04.05.2013, 21:06   #7
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Тоесть не работает? Выдает неверный ответ? Не компилируется? Или что-то еще?
Наверное, нужно так
Код:
insert(' ', ds, i - 2);
Ведь пробел нужно вставить перед двумя последними символами слова.
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 04.05.2013, 21:18   #8
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Наверное, нужно так
Код:

insert(' ', ds, i - 2);

Ведь пробел нужно вставить перед двумя последними символами слова.
Точно.. Блин.. Я-то думал что нужно вставлять пробел после 2-ух последних слов, заданной длины.. Прошу простить.. Не правильно прочитал.. Каюсь.. Виновен..
Poma][a вне форума Ответить с цитированием
Старый 04.05.2013, 22:41   #9
mr.Starosta
Новичок
Джуниор
 
Регистрация: 17.03.2013
Сообщений: 15
По умолчанию

Цитата:
Сообщение от alexander13 Посмотреть сообщение
Наверное, нужно так
Код:
insert(' ', ds, i - 2);
Ведь пробел нужно вставить перед двумя последними символами слова.
Я пробовал такой код. пробел ставиться только в одном слове из строчки, а мне надо чтобы пробел стоял во всех словах
mr.Starosta вне форума Ответить с цитированием
Старый 05.05.2013, 09:53   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вставить пробел перед последними 2-мя символами в слова, имеющие минимальную (заданную) длину
Опять я со своим лезу:
Код:
var s:string; a:array[1..100] of string;
  mi,i,count:integer;
begin   {$o-}
 s:='Hello my world';
 count:=1;
 i:=1; while (i<=length(s)) do begin
   if s[i]=' ' then begin inc(count);inc(i);end;
   a[count]:=a[count]+s[i];
   inc(i);
 end;
 s:=''; 
 write('Минимальная длина: ');readln(mi);
 for i:=1 to count do begin
  if length(a[i])=mi then insert(' ',a[i],Length(a[i])-2);
  s:=s+a[i]+' ';
 end; write(s);
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив четырехбайтовых чисел, содержащий нулевые элементы. Определить минимальную длину последовательности ненулевых элементов smile741 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 03.04.2013 01:26
Дана строка символов - определить количество слов, имеющих заданную длину n. Неопытный Общие вопросы Delphi 5 17.05.2012 15:16
Удалить в предложении все слова, имеющие символы цифр In4ekk Общие вопросы C/C++ 0 19.10.2010 14:10