Как сделать эту задачу без использования подпрограмм (напр, GetWords)?
Пока составил программу, в которой все слова должны состоять из 5 символови (не меньше) и знаки препинания выводятся вместе со словами.
Помогите доделать задачу.

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Сталкер |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дана последовательность до 30 слов, в каждом из которых от 1 до 5 символов, между словами - пробел или запятая, в конце последовательности точка. Напечатать все различные слова, указав для каждого из них число его вхождений в последовательность. Использовать входной и выходной файл.
Как сделать эту задачу без использования подпрограмм (напр, GetWords)? Пока составил программу, в которой все слова должны состоять из 5 символови (не меньше) и знаки препинания выводятся вместе со словами. Помогите доделать задачу. ![]() Прикрепленные файлы ![]() |
samec |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Реальное имя: Юра Репутация: ![]() ![]() ![]() |
хм,
![]()
program strings;
uses crt;
const n=30;
name1='e:\BP\BIN\lab\s1.out';
name2='e:\BP\BIN\lab\s2.out';
var a:array[1..n] of string[6];
ch:char;
i,j,k:integer;
f,g:text;
kol:array[1..n] of integer;
begin
clrscr;
assign(g,name1);
reset(g);
assign(f,name2);
rewrite(f);
writeln(f,'Laboratornaya rabota 2. Simvilniye massivi i stroki');
writeln(f,'Posliedovatielnost slov');
i:=1;
j:=1;
while not Eof(g) and (i<=n) do
begin
read(g,ch);
if(ch=' ')or(ch=',') then
inc(i)
else
if (ch='.') then
break
else
a[i]:=a[i]+ch;
end;
for j:=1 to n do kol[j]:=0;
for j:=1 to i do
for k:=1 to i do
if a[j]=a[k] then
inc(kol[j]);
writeln(f,'Razlichniye slova v posliedovatielnosti i ij kolichestvo');
for j:=1 to i do
writeln(f,a[j],'-',kol[j]:2);
close(f);
close(g);
end.
во первых, заглавные и строчные буквы считаются разные, во вторых, будет читать из файла, сформированного строго по заданию (длина слов не более 5 символов, разделитель слов или пробел илизапятая (вместе стоять не должны)) в третих, выводит все имеющиеся слова и их количества, надобы дубликаты в конце программы убирать, одновременно подсчитыва количество. Так что есть над чем поработать и самому ![]() |
Сталкер |
![]() ![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
![]() Скажите, что не так в программе? все слова вместе с числами вхождений стираются, но в введённом предложении присутствуют несколько повторяющихся слов. Код program strings; uses crt; const n=30; name1='C:\BP\BIN\2semestr\s1.out'; name2='C:\BP\BIN\2semestr\s2.out'; var a:array[1..n] of string[5]; ch:char; i,j,k:byte; f,g:text; kol:array[1..n] of byte; label t; begin clrscr; assign(g,name1); reset(g); assign(f,name2); rewrite(f); writeln(f,'Laboratornaya rabota 2. Simvilniye massivi i stroki'); writeln(f,'Posliedovatielnost slov'); i:=1; j:=1; while not Eof(g) and (i<=n) do begin read(g,ch); if(ch=' ')or(ch=',') then inc(i) else if (ch='.') then break else a[i]:=a[i]+ch; end; writeln(f,'Razlichniye slova v posliedovatielnosti i ij kolichestvo'); for j:=1 to n do kol[j]:=0; for j:=1 to i+1 do begin for k:=1 to i+1 do if a[j]=a[k] then inc(kol[j]); if a[j]=a[k] then goto t; writeln(f,'<',a[j],'> -',kol[j]:2); t: end; close(f); close(g); end. Сообщение отредактировано: Сталкер - |
Сталкер |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
И можно ли не создавать ещё дополнительный массив, а изменять исходный?
|
Сталкер |
![]()
Сообщение
#5
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Мужской Репутация: ![]() ![]() ![]() |
Хелп. это последняя задача в этом учебном году... Завтра сдавать (
![]() Добавлено через 10 мин. Цитата for j:=1 to n do kol[j]:=0; - это не лишнее ? Сообщение отредактировано: Сталкер - |
![]() ![]() |
![]() |
Текстовая версия | 21.04.2025 21:34 |