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

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

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

 
 Ответить  Открыть новую тему 
> Изменение кода
ds2207
сообщение 28.12.2014 19:21
Сообщение #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 - 28.12.2014 23:02
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 28.12.2014 22:15
Сообщение #2


Бывалый
***

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

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


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

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

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


Новичок
*

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

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


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


Бывалый
***

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

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


Ну вот и начни с малого.
Отформатируй текст исходников для облегчения понимания - я предлагаю форматтер исходного кода 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 
 К началу страницы 
+ Ответить 
Федосеев Павел
сообщение 28.12.2014 23:34
Сообщение #5


Бывалый
***

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

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


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


Новичок
*

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

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


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


Бывалый
***

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

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


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


Новичок
*

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

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


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


Бывалый
***

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

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


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


Новичок
*

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

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


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

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

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

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

 



- Текстовая версия 28.04.2024 2:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"