IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Язык Паскаль, Тип данных - строки
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Женский
Реальное имя: Ольга

Репутация: -  2  +


Прошу помочь в написании программы для задачи:
"В заданном предложении в каждом слове удалить все последующие вхождения первой буквы предложения. Новый текст вывести на печать".
Альтруисты, откликнитесь! wub.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


lol.gif эгоисты молчат..

Какие мысли по поводу задачи?smile.gif


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Женский
Реальное имя: Ольга

Репутация: -  2  +


Мыслей много всяких. Одна из них - понять смысл задачи
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Тебе нужно взять первую букву, а потом идти по строке и удалять остальные такие. Интересное уточнение "в каждом слове" - будто буквы могут быть не в слове)


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> а потом идти по строке и удалять остальные такие

Неправильно.
Правильно так:

> а потом идти по строке-источнику и писать в строку-приёмник всё, кроме остальных таких.

А то, что ты сказал, будет работать за O(n^2). Хотя хоть как-то работать будет.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Разве? По-моему, в первом варианте будет меньше действий, и тоже один проход по строке..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Удаление элемента из строки - за сколько, по-твоему, работает?
Оно, между прочим, весь хвост сдвигает.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Цитата
Удаление элемента из строки - за сколько, по-твоему, работает?
Оно, между прочим, весь хвост сдвигает.

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

Но новичка оптимизации только запутают.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> А добавление в строку - создает новую.

Реаллокации весьма редки, у дельфей менеджер памяти хороший, можно наращивать по единице, и не париться.

> Тогда уж на первом проходе посчитать удаляемые символы, создать строку нужного размера и только потом копировать в нее символы.

Ну вообще да, лучше заранее создать буфер нужной длины.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Спасибо всем кто откликнулся на мою мольбу. Попробую написать программу, хотя очень сомневаюсь что мне - первокурснице, это по зубам! (Слишком бестолковый у нас преподаватель по программированию языка высокого уровня). А надо бы к среде.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Покажи, что написала, а мы подскажем что не так.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


а почему нельзя просто:
k:=0;
осуществлять проход по строке и при встрече нужного символа увеличивать значение k на 1,
а иначе а[i-k]:=a[i];
Обрезать строку.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> а почему нельзя просто:

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Женский
Реальное имя: Ольга

Репутация: -  2  +


Вроде так, но программа не работает! (Или это ахинея?)

Program stroka1;
uses crt;
var s,s1,s2,s3:string;
i,j,k:byte;
c:char;
begin
clrscr;
writeln('Введите 1 предложение:');
readln(s);
s:=' '+s;
i:=1;
s2:='';
while i<=length(s) do
if (s[i]<>' ')and(s[i-1]=' ') then
begin
j:=i;
s1:='';
while(j<=length(s))and(s[j]<>' ') do
begin
s1:=s1+s[j];
j:=j+1;
end;
c:=s1[1];
s3:=copy(s1,2,length(s1)-1);
for k:=length(s3)downto 1 do
if s3[k]=c then delete(s3,k,1);
s2:=s2+s1[1]+s3;
i:=i+length(s1);
end
else
begin
s2:=s2+s[i];
i:=i+1;
end;
delete(s2,1,1);
write(s2);
readln
end.

wacko.gif

Сообщение отредактировано: Lapp -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Ты выделяешь в предложении слова и удаляешь из каждого слова повторы первой буквы этого слова, а надо первой буквы предложения. Вообще, для решения задачи выделять слова не нужно. Достаточно, как сказали выше, взять первую букву предложения и удалить её из всей оставшейся части строки. Одного цикла достаточно.

PS Добавь тег [code] вокруг текста программы, а то его сложно читать.


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Женский
Реальное имя: Ольга

Репутация: -  2  +


Уважаемый Archon! Позвольте задать вам глупый вопрос: Что означает "Добавь тег [code] вокруг текста программы"?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Провинциалка @ 1.11.2010 23:40) *
Что означает "Добавь тег [code] вокруг текста программы"?

1. пометь программный код блоком;
2. кликни меню CODE над формой ввода;
3. выбери нужный пункт (Pascal/Delphi);
4. увидишь, что вставились теги перед и после кода;
5. то же самое можно делать "вручную" (просто набрать с клавы);
6. читай Правила! Там все есть.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Женский
Реальное имя: Ольга

Репутация: -  2  +


Видимо я должна была писать программу на Pascal в среде Delphi. Если так, то к сожалению у меня установлен только Turbo Pascal.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Нет, Б**! Надо написать вот так:
Цитата
[.code=pas]вот здесь твой код[./code]
Только БЕЗ точек! БЕЗ! Похфиг на чем ты писала! это на форуме, когда вводишь сообщение написать надо. А в данный момент нажми "изменить" свое уже написаное сообщение, и вставь туда теги [code]

Добавлено через 10 мин.
Хотя Lapp это уже сделал smile.gif , поэтому, если хочешь, посмотри, пожалуйста, как, нажав на "изменить сообщение". НО ничего менять не надо!

Сообщение отредактировано: sheka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Женский
Реальное имя: Ольга

Репутация: -  2  +


А программу подредактировать поможешь?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 19:11
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name