Дана последовательность до 30 слов, в каждом из которых от 1 до 5 символов, между словами - пробел или запятая, в конце последовательности точка. Напечатать все различные слова, указав для каждого из них число его вхождений в последовательность. Использовать входной и выходной файл.
Как сделать эту задачу без использования подпрограмм (напр, GetWords)?
Пока составил программу, в которой все слова должны состоять из 5 символови (не меньше) и знаки препинания выводятся вместе со словами.
Помогите доделать задачу.
Прикрепленные файлы
STROKA.PAS ( 964 байт )
Кол-во скачиваний: 278
хм, интересный у тебя какой то код.... я вот набросал, но требуются доработки:
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.
Скажите, что не так в программе?
все слова вместе с числами вхождений стираются, но в введённом предложении присутствуют несколько повторяющихся слов.
И можно ли не создавать ещё дополнительный массив, а изменять исходный?
Хелп. это последняя задача в этом учебном году... Завтра сдавать (
Добавлено через 10 мин.