Задача по Turbo Pascal
смысл задачи заключается в том что вводится текст потом выводится слово которое повторяется наибольшее число раз. Например: ва ма ка ма. Ответ ма
Вроде так:
[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]
[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]
Ни что так не ограничивает фантазию программиста, как компилятор...
Пасиб большое сейчас буду вводить всевозможные тесты
Нашёл ошибочку при вводе : v d e g j i программа выводит v т.е первый символ. И ещё что значит в выводе ответа вот это '"' если я убираю это то прога отказывается компилироваться
-
- Сообщения: 296
- Зарегистрирован: 13 фев 2008, 20:10
- Откуда: Беларусь. Орша
- Контактная информация:
'"' можно заменить на ' 'assis2007 писал(а): И ещё что значит в выводе ответа вот это '"' если я убираю это то прога отказывается компилироваться
Это вводиться для того, чтобы при выводе все слова не сливались в обно целое (т.е. используется, как разделитель.)
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
2 assis2007
Это не ошибка.
Если задача формируется так как указали вы, то предполагается, что есть слово, которое встречается более одного раза, в противном случае, раз не оговорено иное, вполне допустимо вывести первое слово.
2 C_O_D_E
В данном случае '"' это кавычка, чтобы результат имел вид
Если это не подходит, можно просто заменить всю строку на
[syntax='Delphi']
Writeln(words[index]);
[/syntax]
Это не ошибка.
Если задача формируется так как указали вы, то предполагается, что есть слово, которое встречается более одного раза, в противном случае, раз не оговорено иное, вполне допустимо вывести первое слово.
2 C_O_D_E
В данном случае '"' это кавычка, чтобы результат имел вид
Код: Выделить всё
Чаще всего встречается слово "слово"
[syntax='Delphi']
Writeln(words[index]);
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
-
- Сообщения: 296
- Зарегистрирован: 13 фев 2008, 20:10
- Откуда: Беларусь. Орша
- Контактная информация:
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]
[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]
Ни что так не ограничивает фантазию программиста, как компилятор...
О пасиб у меня вопрос ещё функцция ParceText что она считает? количество слов в тексте?