IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> СТРАННАЯ ЗАДАЧА, помогите упростить плз
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


Вобщем задачу то я решил ... всё вроде работает... но вот чёто преподу не понравилось что то типа упростить !!(((
дана непустая последовательность слов из строчных латинских букв; слова разделяются запятыми,
за последним словом точка Среди всех пар аi и bi(где ai первая и bi последние буквы итого слова последовательности)
определить наиболее часто встречающуюся пару

program Project1;

{$APPTYPE CONSOLE}





var
s,max : string;
dl,n,dlk,dln: integer;
i,j,M: integer;
kk: array[1..100] of char;
nn: array[1..100] of char;
z: array[1..100] of integer;

begin

writeln('BBedite ctroky');
readln(s);

dlk:=-1;
dln:=0;
s:=','+s+',';

j:=2;





for i:=1 to Length(s) do
if (s[i]=',') then begin
kk[j-1]:=s[i-1];
nn[j]:=s[i+1];
j:=j+1;

end;
for i:=1 to Length(s) do begin
if s[i]=',' then dlk:=dlk+1;
end;
writeln(dlk);
// for i:=2 to dlk+1 do
// begin writeln(nn[i],kk[i]);
// end;



for j:=2 to dlk+1 do

for i:=2 to dlk+1 do
begin
if kk[j]=kk[i] then if nn[j]=nn[i] then
z[j]:=z[j]+1;
// writeln ('proxodi');
// writeln(z[2],z[3]);
end;
M:=z[2];
for i:=2 to dlk+1 do
begin
if z[i]>M then M:=z[i]
end;
Writeln(M);
for i:=2 to dlk+1 do
begin
if z[i]=M then writeln('4awe povtoraetc9 ',nn[i],kk[i],' kol-vo povtorenii ',M);
end;
readln


end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Во-первых, пользуйся тегами...

А во-вторых... Работает, говоришь? Введи строку
aga,ugu,ege,agaga,wow,egege,ehe.
и посмотри, КАК оно у тебя работает... Тема о разбиении строк на слова уже была - в поиск, ссылка - у меня в подписи...

в частности - тебе сюда: Разбиение на слова. Все способы.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +



program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

var

max: integer;
s: string;
i: integer;
j: integer;
z: integer;
n: string; //
k: string; //
begin

Writeln('Vvedite stroky');
readln(s);
n:=n+s[1];
z:=0;
max:=0;
for i:=1 to Length(s) do
begin
if s[i]='.' then
begin
k:=k+s[i-1];
break;
end;
if s[i]=',' then
begin
n:=n+s[i+1];
k:=k+s[i-1];
end;
end; writeln(n,k);
//вот до сюда вроде всё работает нормально
for i:=1 to length(n) do
begin
writeln(n[i],i);
writeln(k[i],i);
for j:=i+1 to length(n) do
begin
if n[i]+k[i]=n[j]+k[j] then
begin
z:=z+1;
writeln(z);
end;
end;
if z>=max then
begin
max:=z;
end;
end;

writeln(max);
readln


подскажите почему он ведёт неправильный подсчёт максимального количества повторений
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 19
Пол: Мужской

Репутация: -  0  +


разобрался ) надо было z обнулять)

Добавлено через 13 мин.
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

var

max: integer;
s: string;
i: integer;
j: integer;
z: integer;
itog: string;
n: string; // ñòðîêà ñîñòîÿùàÿ èç ïåðâûõ áóêâ ñëîâ ñòðîêè ñ
k: string; // ñòðîêà ñîñòîÿùàÿ èç ïîñëåäíèõ áóêâ ñëîâ ñòðîêè ñ
begin

Writeln('Vvedite stroky'); //ââîäè ñòðîêó
readln(s); //ñ÷èòûâàíèå ñòðîêè
n:=n+s[1];
z:=0;
max:=0;
for i:=1 to Length(s) do
begin
if s[i]='.' then
begin
k:=k+s[i-1];
break;
end;
if s[i]=',' then //i-íîìåð ýëåìåíòà çàïÿòîé â ñòðîêå
begin
n:=n+s[i+1];
k:=k+s[i-1];
end;
end;
// íà÷èíàåì ïðîâåðÿòü íà ïîâòîðû â ñòðîêàõ
for i:=1 to length(n) do
begin
z:=1;

for j:=i+1 to length(n) do
begin
if n[i]+k[i]=n[j]+k[j] then
begin
z:=z+1;
end;
end;
if z>=max then
begin
max:=z;
itog:=n[i]+' '+k[i];
end;
end;

writeln('4awe bcego povtoraetc9 ',itog, ' koli4ectvo povtorov ',max);
readln
end.


Кому интересно помоему итоговый правильный текст решения задачи
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.11.2020 3:50
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name