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

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

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

 
 Ответить  Открыть новую тему 
> Изменение кода
сообщение
Сообщение #1


Новичок
*

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

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


Задачка: Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами – запятая или не менее одного пробела, за последним словом - точка.
Напечатать те слова последовательности, которые отличны от последнего слова,
предварительно преобразовав каждое из них по следующему правилу:
- оставить в слове только первые вхождения каждой буквы.

Код:

Код
program q;

var
  s: string;
  i: integer;
  m: set of char;

  function posl(x: string): string;
  begin
    while (pos(' ', x) > 0) do
    begin
      Delete(x, 1, pos(' ', x));
    end;
    Delete(x, pos('.', x), 1);
    posl := x;
  end;

begin
  readln(s);
  while pos(' ', s) > 0 do
  begin
    m := [];
    if (copy(s, 1, pos(' ', s) - 1) <> posl(s)) and (pos(' ', s) > 1) then
      for i := 1 to pos(' ', s) do
      begin
        if not (s[i] in m) then
          Write(s[i]);
        include(m, s[i]);
      end;
    Delete(s, 1, pos(' ', s));
  end;
end.




Переделайте,пожалуйста код,чтобы в нём отсутствовали функции



.

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


Знаток
****

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

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


Я так понимаю, что ты бросаешь сообщения "на удачу"="мне повезёт".

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

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


Новичок
*

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

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


Я бросаю эти сообщения не "на удачу",а в надежде найти помощь,т.к. в этой сфере я совсем недавно и как работают функции не понимаю.Я понимаю отдельные участки кода,но полностью изменить этот код я не могу,кроме того у меня очень мало времени,поэтому я и обратился сюда за помощью.Что же касается "если трудно, если это не твоё" я вам скажу вот что:во-первых я не нуждаюсь в вашем,безусловно,глупом совете,а во-вторых "если трудно",то нужно идти до конца,а не сдаваться,как предлагаете вы.Всё начинается с малого.Далеко не у всех людей всё получается с самого начала.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

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

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


Ну вот и начни с малого.
Отформатируй текст исходников для облегчения понимания - я предлагаю форматтер исходного кода JCF - по этой и этой ссылкам. Очень удобно, да и преподавателю сдавать не стыдно (они обычно фыркают, если нет отступов).
После этого "проявится" структура программы:
program q;

var
s: string;
i: integer;
m: set of char;

function posl(x: string): string;
begin
while (pos(' ', x) > 0) do
begin
Delete(x, 1, pos(' ', x));
end;
Delete(x, pos('.', x), 1);
posl := x;
end;

begin
readln(s);
while pos(' ', s) > 0 do
begin
m := [];
if (copy(s, 1, pos(' ', s) - 1) <> posl(s)) and (pos(' ', s) > 1) then
for i := 1 to pos(' ', s) do
begin
if not (s[i] in m) then
Write(s[i]);
include(m, s[i]);
end;
Delete(s, 1, pos(' ', s));
end;
end.

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


Знаток
****

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

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


Я не пойму условие задачи. Что нужно:
1. сначала нужно найти преобразованное последнее слово, запомнить его в переменной. Потом выделять слова, преобразовывать, сравнивать с последним и в случае неравенства выодить на печать.
или
2. нужно выделять слова, сравнивать с последним, и если различны, то произвести преобразование и вывести на печать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


Второе: нужно вывести по одной(первой) букве каждого,различного с последним слова
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

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

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


Тогда изменения будут заключатся в ведении новой переменной LastWord: string
Перед основным циклом найдёшь последнее слово LastWord и в цикле будешь сравнивать не с posl, а с LastWord.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


Большое спасибо)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Знаток
****

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

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


Справился? Или это сарказм?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

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

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


Цитата(Федосеев Павел @ 29.12.2014 1:07) *

Справился? Или это сарказм?

Нет,не сарказм,справился.Ещё раз спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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