Автор | Сообщение |
|
Отправлено: 09.05.12 11:19. Заголовок: С4 задача 39 (последняя)
Хотелось бы узнать, является ли моё личное решение этой задачи верным. Program C4; Var Mic:real; i,j,l,f1,f2,m1,m2:integer; k,h:char; s1,s2:string; Begin Read(S1,S2); Mic:=0; m1:=length(S1); m2:=length(S2); f1:=0; f2:=0; For k:='a' to 'z' do begin f1:=0; f2:=0; For i:=1 to length(S1) do If (copy(S1,i,1)=k) or (copy(S1,i,1)=upcase(k)) then inc(f1); For j:=1 to length(S2) do If (copy(S2,j,1)=k) or (copy(S2,j,1)=upcase(k)) then inc(f2); Mic:=Mic+(f1*f2)/(m1*m2); end; Write(MIc:5:3); end.
|
|
|
Ответов - 1
[только новые]
|
|
|
| Администратор
|
Сообщение: 303
|
|
Отправлено: 09.05.12 11:45. Заголовок: Миша пишет: является..
Миша пишет: цитата: | является ли моё личное решение этой задачи верным. |
|
В целом - да. Зачем пишете copy(S1,j,1) вместо S1[j] - непонятно. Длины строк можно повторно не пересчитывать - они ведь есть в m1 и m2. Ввод строк лучше делать через readln: readln(S1); readln(S2); Деление на m1*m2 лучше вынести из цикла.
|
|
|