Перейти к содержанию

Помогите С Программированием


Рекомендуемые сообщения

Здравствуйте, ситуация моя очень грустна, висит зачет по практике( Нужно с рочно решить одну задачу иначе беда случится. Помогите плиз.

. ОБРАБОТКА СИМВОЛЬНЫХ И СТРОКОВЫХ ВЕЛИЧИН

Задание должно быть выполнено в средах программирования:

• PASCAL;

Для вводимой строки длиной до N символов (N ? 255), состоящей из слов разделенных одним или несколькими пробелами, реализовать ее обработку, как указано в варианте.

ЗАДАНИЕ: Подсчитать количество слов в предложении, повторяющихся более одного раза.

Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, ситуация моя очень грустна, висит зачет по практике( Нужно с рочно решить одну задачу иначе беда случится. Помогите плиз.

. ОБРАБОТКА СИМВОЛЬНЫХ И СТРОКОВЫХ ВЕЛИЧИН

Задание должно быть выполнено в средах программирования:

• PASCAL;

Для вводимой строки длиной до N символов (N ? 255), состоящей из слов разделенных одним или несколькими пробелами, реализовать ее обработку, как указано в варианте.

ЗАДАНИЕ: Подсчитать количество слов в предложении, повторяющихся более одного раза.

Раз никто не ответил, отвечу я ^101^

(пришлось вспомнить то, что делал лет 15-20 назад ^25^ и скачать паскаль)


{
PASCAL;
Для вводимой строки длиной до N символов (N ? 255), состоящей из слов
разделенных одним или несколькими пробелами, реализовать ее обработку,
как указано в варианте.
ЗАДАНИЕ: Подсчитать количество слов в предложении, повторяющихся
более одного раза.
}



var mass : array[1..250] of string; { объявляем переменную с массивом строк, для сохранения отдельных слов }
s,s_count : string[250]; { Переменная для ввода строки }
i,j : integer; { Переменные для циклов }
pos1 : integer; { Переменная для определения позиции пробела }
count,count_all : integer; { Переменные для счетчиков }

begin
writeln('Введите строку:'); { Просим пользователя ввести строку}
readln(s); { Запрашиваем строку }

s:=s+' '; { Добавляем пробел в конец строки }
{ чтобы иметь возможность определить последнее слово }

for i:=1 to 255 do { Цикл }
begin
pos1:=pos(' ', s); { Находим пробел }
mass[i]:=copy(s, 1, pos1-1); { Записываем найденное слово }
Delete(s,1,pos1); { Удаляем внесенное слово из введенной строки }
end;

count_all:=0; { Обнуляем переменную, куда будем вносить количество одинаковых слов }

for i:=1 to 255 do { Цикл, выбирает каждое слово и будет проверять на наличие одинакового слова }
begin
count:=1; { Обнуляем переменную, равняется 1, т.к. любое выбранное слово уже 1 шт. }

if mass[i]<>'' then { Если mass[i] не пустое значение, пытаемся найти похожее слово }
for j:=1 to 255 do { Цикл, который находит дубликаты }
begin
if i<>j then { Исключаем ту же ячейку, которую мы взяли в первом цикле }
if mass[i]=mass[j] then { Если есть совпадение, увеличиваем переменную count на +1 }
{ и удаляем дублирующее слово}
begin
count:=count+1;
mass[j]:=''; { Чтобы первый цикл опять его не анализировал }
end;
end;

Str(count,s_count); { Преобразуем числовое значение количество в текст для вывода [можно удалить]}
if count<>1 then { Если количество изменилось, значит есть дубликат }
begin
writeln('Слово: '+mass[i]+' встречается '+s_count+' раз'); { Выводим информацию }
{ по каждому слову, где есть дубль [можно удалить это]}
count_all:=count_all+1; { Добавляем в общий счетчик +1, т.к. есть слово с дублем, которое мы вывели}
end;
end;
s_count:='';
Str(count_all,s_count);
writeln('Всего слов в предложении, повторяющихся более одного раза: '+s_count+' шт.'); { Выводим общее число слов, }
{ которые встречаются более 1 раза }

end.


Сам код программы и exe файл прикрепить не могу из-за настроек безопасности на форуме. Могу выслать на емейл.

Возможно будут некоторые проблемы совместимости в разных версиях Паскаля - пиши, будем думать.

Постарался описать каждое действие.

Ссылка на сообщение
Поделиться на другие сайты

ты только что убил в ирке программиста(

Программистам часто приходится копаться в чужом коде ^21^ так что у нее все еще впереди.

Ссылка на сообщение
Поделиться на другие сайты

Программистам часто приходится копаться в чужом коде ^21^ так что у нее все еще впереди.

Спасибо тебе огромное, мыло сейчас в личку пришлю.

Какой во мне программист, я мамематик)Программист во мне навязанный второй специальностью,а так я просто продвинутый юзер)

Ссылка на сообщение
Поделиться на другие сайты

Раз никто не ответил, отвечу я ^101^

(пришлось вспомнить то, что делал лет 15-20 назад ^25^ и скачать паскаль)


{
PASCAL;
Для вводимой строки длиной до N символов (N ? 255), состоящей из слов
разделенных одним или несколькими пробелами, реализовать ее обработку,
как указано в варианте.
ЗАДАНИЕ: Подсчитать количество слов в предложении, повторяющихся
более одного раза.
}



var mass : array[1..250] of string; { объявляем переменную с массивом строк, для сохранения отдельных слов }
s,s_count : string[250]; { Переменная для ввода строки }
i,j : integer; { Переменные для циклов }
pos1 : integer; { Переменная для определения позиции пробела }
count,count_all : integer; { Переменные для счетчиков }

begin
writeln('Введите строку:'); { Просим пользователя ввести строку}
readln(s); { Запрашиваем строку }

s:=s+' '; { Добавляем пробел в конец строки }
{ чтобы иметь возможность определить последнее слово }

for i:=1 to 255 do { Цикл }
begin
pos1:=pos(' ', s); { Находим пробел }
mass[i]:=copy(s, 1, pos1-1); { Записываем найденное слово }
Delete(s,1,pos1); { Удаляем внесенное слово из введенной строки }
end;

count_all:=0; { Обнуляем переменную, куда будем вносить количество одинаковых слов }

for i:=1 to 255 do { Цикл, выбирает каждое слово и будет проверять на наличие одинакового слова }
begin
count:=1; { Обнуляем переменную, равняется 1, т.к. любое выбранное слово уже 1 шт. }

if mass[i]<>'' then { Если mass[i] не пустое значение, пытаемся найти похожее слово }
for j:=1 to 255 do { Цикл, который находит дубликаты }
begin
if i<>j then { Исключаем ту же ячейку, которую мы взяли в первом цикле }
if mass[i]=mass[j] then { Если есть совпадение, увеличиваем переменную count на +1 }
{ и удаляем дублирующее слово}
begin
count:=count+1;
mass[j]:=''; { Чтобы первый цикл опять его не анализировал }
end;
end;

Str(count,s_count); { Преобразуем числовое значение количество в текст для вывода [можно удалить]}
if count<>1 then { Если количество изменилось, значит есть дубликат }
begin
writeln('Слово: '+mass[i]+' встречается '+s_count+' раз'); { Выводим информацию }
{ по каждому слову, где есть дубль [можно удалить это]}
count_all:=count_all+1; { Добавляем в общий счетчик +1, т.к. есть слово с дублем, которое мы вывели}
end;
end;
s_count:='';
Str(count_all,s_count);
writeln('Всего слов в предложении, повторяющихся более одного раза: '+s_count+' шт.'); { Выводим общее число слов, }
{ которые встречаются более 1 раза }

end.


Сам код программы и exe файл прикрепить не могу из-за настроек безопасности на форуме. Могу выслать на емейл.

Возможно будут некоторые проблемы совместимости в разных версиях Паскаля - пиши, будем думать.

Постарался описать каждое действие.

ну может... это заслуживает уважения

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...