Страница 1 из 7
Задача по Turbo Pascal
Добавлено: 05 мар 2008, 18:50
assis2007
смысл задачи заключается в том что вводится текст потом выводится слово которое повторяется наибольшее число раз. Например: ва ма ка ма. Ответ ма
Re: Задача по Turbo Pascal
Добавлено: 05 мар 2008, 19:41
MOTOCoder
Вроде так:
[syntax='Delphi']
const
N=100;
var
words:array[1..N]of string;
s:string;
wd:string;
i,j:integer;
index:integer;
count:integer;
cnt:integer;
max:integer;
function ParceText(txt:string):integer;
var l,c:integer;
begin
c:=0;
l:=length(txt);
for i:=1 to l+1 do
begin
if ((txt<>' ')and(i<>l+1)) then
wd:=wd+txt
else
begin
inc(c);
words[c]:=wd;
wd:='';
end;
end;
ParceText:=c;
end;
begin
writeln('Введите текст:');
readln(s);
count:=ParceText(s);
for i:=1 to count do
begin
cnt:=0;
for j:=1 to count do
if words[j]=words then inc(cnt);
if cnt>max then
begin
max:=cnt;
index:=i;
end;
end;
writeln('Чаще всего встречается слово "',words[index],'"');
readln;
end.
[/syntax]
Re: Задача по Turbo Pascal
Добавлено: 05 мар 2008, 19:50
assis2007
Пасиб большое сейчас буду вводить всевозможные тесты
Re: Задача по Turbo Pascal
Добавлено: 05 мар 2008, 21:19
assis2007
Нашёл ошибочку при вводе : v d e g j i программа выводит v т.е первый символ. И ещё что значит в выводе ответа вот это '"' если я убираю это то прога отказывается компилироваться
Re: Задача по Turbo Pascal
Добавлено: 05 мар 2008, 21:33
C_O_D_E
assis2007 писал(а): И ещё что значит в выводе ответа вот это '"' если я убираю это то прога отказывается компилироваться
'"' можно заменить на ' '
Это вводиться для того, чтобы при выводе все слова не сливались в обно целое (т.е. используется, как разделитель.)
Re: Задача по Turbo Pascal
Добавлено: 05 мар 2008, 22:46
MOTOCoder
2 assis2007
Это не ошибка.
Если задача формируется так как указали вы, то предполагается, что есть слово, которое встречается более одного раза, в противном случае, раз не оговорено иное, вполне допустимо вывести первое слово.
2 C_O_D_E
В данном случае
'"' это кавычка, чтобы результат имел вид
Если это не подходит, можно просто заменить всю строку на
[syntax='Delphi']
Writeln(words[index]);
[/syntax]
Re: Задача по Turbo Pascal
Добавлено: 05 мар 2008, 22:50
C_O_D_E
MOTOCoder. доброй ночи. Честно признаться, я даж внимания не обратила на кавычки, просто по коду посмотрела, что вроде можно вывести несколько слов, а потом прочитала условие!! так что прошу прощения за инкорректную информацию.
Re: Задача по Turbo Pascal
Добавлено: 06 мар 2008, 20:03
assis2007
Хорошо вопрос ставится по другому вводится текст потом выводятся слова которые повторяются наибольшее число раз
Re: Задача по Turbo Pascal
Добавлено: 06 мар 2008, 21:17
MOTOCoder
Тогда так:
[syntax='Delphi']
const
N=100;
var
words:array[1..N]of string;
w:array[1..N]of string;
cn,k:integer;
s:string;
wd:string;
i,j:integer;
index:integer;
count:integer;
cnt:integer;
max:integer;
wc:integer;
b:boolean;
function ParceText(txt:string):integer;
var l,c:integer;
begin
c:=0;
l:=length(txt);
for i:=1 to l+1 do
begin
if ((txt<>' ')and(i<>l+1)) then
wd:=wd+txt
else
begin
inc(c);
words[c]:=wd;
wd:='';
end;
end;
ParceText:=c;
end;
begin
writeln('Введите текст:');
readln(s);
count:=ParceText(s);
for i:=1 to count do
begin
cnt:=0;
for j:=1 to count do
if words[j]=words then inc(cnt);
if cnt>max then
begin
max:=cnt;
index:=i;
end;
end;
writeln;
writeln('Чаще всего встречаются слова:');
for i:=1 to count do
begin
wc:=0;
for j:=1 to count do
if words=words[j] then
inc(wc);
if wc=max then
begin
b:=true;
for k:=1 to cn do
if w[k]=words then
b:=false;
if b then
begin
writeln(words);
inc(cn);
w[cn]:=words;
end;
end;
end;
readln;
end.
[/syntax]
Re: Задача по Turbo Pascal
Добавлено: 06 мар 2008, 21:27
assis2007
О пасиб у меня вопрос ещё функцция ParceText что она считает? количество слов в тексте?