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

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

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

 
 Ответить  Открыть новую тему 
> СТРАННАЯ ЗАДАЧА, помогите упростить плз
Element
сообщение 22.01.2007 14:13
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.01.2007 14:21
Сообщение #2


Гость






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

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

в частности - тебе сюда: Разбиение на слова. Все способы.
 К началу страницы 
+ Ответить 
Element
сообщение 13.06.2007 10:16
Сообщение #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 
 К началу страницы 
+ Ответить 
Element
сообщение 13.06.2007 12:09
Сообщение #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

 



- Текстовая версия 22.09.2024 17:46
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"