Помощь - Поиск - Пользователи - Календарь
Полная версия: найти среднюю длину слов в массиве строк и заменить нею слова последней строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
INZA
найти среднюю длину слов в массиве строк и заменить нею слова последней строки (размерность массива 12)
среднюю длину вроде нахожу а как замену сделать ? как не введу постоянно не правильно помогите пожалуйста

Var S : string;
NumWords,
NumLetters,
k1,k2,
l : byte;
MiddleLet : real;
Cond : boolean;
Begin
Readln(S);
Writeln('S=',S);
NumWords:=0;
NumLetters:=0;
MiddleLet:=0;
k2:=0; Cond:=true;
While Cond do
Begin
k1:=NotSpace(S,k2+1);
If k1=0 then
Cond:=false
Else
Begin
k2:=Space(S,k1+1);
If k2=0 then
Begin
k2:=length(S)+1;
Cond:=false;
End;
l:=k2-k1;
Inc(NumWords);
Inc(NumLetters,l);
End;
End;
Writeln('кол-во слов=',NumWords,' кол-во букв=',
NumLetters);
If NumWords>0 then
MiddleLet:=NumLetters/NumWords;
Writeln('средняя длина=',MiddleLet:6:1);
End.
Lapp
Цитата(INZA @ 19.12.2010 21:42) *
заменить нею слова последней строки
А что это значит?.. blink.gif
INZA
Цитата(Lapp @ 20.12.2010 5:23) *

А что это значит?.. blink.gif

цифрой ну например ср.длина слов 5 букв
Lapp
Цитата(INZA @ 20.12.2010 18:36) *
цифрой ну например ср.длина слов 5 букв
Мне все равно непонятно. В таких случаях лучше всего привести пример.

Исходный файл text.txt:
Цитата
Hark how the bells,
sweet silver bells,
all seem to say,
throw cares away
Christmas is here,
bringing good cheer,
to young and old,
meek and the bold.
Ding dong ding dong
that is their song
with joyful ring
all caroling.

На нем вот эта моя программа:
const
m=12;
fName='text.txt';
Letters=['A'..'Z']+['a'..'z'];

var
s: array [1..m] of string;
l,n: LongInt;
i,j: integer;
w: string;
f: text;

begin
Assign(f,fName);
Reset(f);
for i:=1 to m do ReadLn(f,s[i]);
Close(f);
l:=0;
n:=0;
for i:=1 to m do begin
w:='';
for j:=1 to Length(s[i]) do begin
if s[i][j] in Letters then w:=w+s[i][j];
if not (s[i][j] in Letters) or (i=Length(s[i])) then
if w<>'' then begin
l:=l+Length(w);
Inc(n);
w:=''
end
end
end;
WriteLn('Average word length is ',l/n:0:3);
ReadLn
end.

- дает такой результат:
Average word length is 4.200


И что теперь делать? Вот так что ли:
Цитата
Hark how the bells,
sweet silver bells,
all seem to say,
throw cares away
Christmas is here,
bringing good cheer,
to young and old,
meek and the bold.
Ding dong ding dong
that is their song
with joyful ring
4.2 4.2.
- ? blink.gif
Я как-то сомневаюсь, что такое могло прийти в голову составителю этой задачи. Но - всякое бывает..
Пояснишь?
INZA
получается что так.я сам в недоумениях от таких задач но какая есть такая есть wacko.gif
Lapp
Цитата(INZA @ 21.12.2010 9:45) *
получается что так.я сам в недоумениях от таких задач но какая есть такая есть wacko.gif
Ну, тогда вот - средняя длина у тебя есть. С заменой справишься? Для
получения записи числа используй процедуру Str.
INZA
Цитата(Lapp @ 21.12.2010 11:33) *

Ну, тогда вот - средняя длина у тебя есть. С заменой справишься? Для
получения записи числа используй процедуру Str.

да справлюсь. Спасибо большое yes2.gif
INZA
нужно найти среднюю длину и заменить нею слова последней строки.
выходит ошибка скажите что я делаю не правильно
program h7V4Z7;
Uses crt;
type str=array [1..40] of string;
const
m=12;
Letters=['A'..'Z']+['a'..'z'];
procedure VVod_klav(var x:str;var n:integer);
var i:integer;
begin
writeln ('koli4ectBo strok',n);
for i:=1 to n do
begin
writeln('vvedite s[',i,']');
readln(x[i]);
end;
writeln ('text cformipovovan');
readkey;
end;
procedure VVod_avt(var X:str; var n:integer);
var i:integer;
begin
X[1]:='Hark how the bells';
X[2]:='sweet silver bells';
X[3]:='all seem to say';
X[4]:='throw cares away';
X[5]:='Christmas is here';
X[6]:='bringing good cheer';
X[7]:='to young and old';
X[8]:='meek and the bold';
X[9]:='Ding dong ding dong ';
X[10]:='that is their song ';
X[11]:='with joyful ring ';
X[12]:='all caroling';
N:=12;
writeln;
writeln('text cformiroBoBaH');
end;
procedure Vivod(var X:str; size:integer);
var i:integer;
begin
for i:=1 to size do
writeln (X[i])
end;
Var
s: str;
l: LongInt;
i,j,n: integer;
x,w: string;
f: text;
y:byte;
old_color:byte;
ch,regim:char;
result,VVod:boolean;
res:real;
Begin
Old_Color:=Textattr;vvod:=false;
Repeat
window(1,1,80,25);
textattr:=black shl 4+yellow;
clrscr;
gotoxy(5,1); write(' labopatopHa9 Pabota #7');
window(20,8,60,18);
textattr:=black shl 4+yellow;
clrscr;
gotoxy(11,4); write(' F1 - BBod ctpok');
gotoxy(11,5); write(' F2 - BuBod ctpok');
gotoxy(11,6); write(' F3 - obpabotka ctrok');
gotoxy(11,7); write(' F4 - o nporpamme ');
gotoxy(11,8); write(' Esc - Exit ');
textcolor(yellow); gotoxy(12,2);write(' Baw Bubop? ');
ch:=Readkey;
if ch=#0 then
Begin
ch:=Readkey;
window(5,2,75,24);
textattr:=black shl 4+yellow;
clrscr;
case ch of
#59:Begin
write ('regim BBoda (1-s klabuatypi/2-abtomatu4eckoe fopmupoBaHue)');
regim:=readkey;
case regim of
'1':begin
writeln;
writeln('VVedute kolu4ectBo ctpok,N= ');readln(n);
vvod_klav(s,n);
VVod:=true;
readkey;
end;
'2':begin
begin
clrscr;
VVod_avt(s,n);
VVod:=true;
readkey;
end;
if vvod then writeln ('ctpoku bbedehu' )
else writeln ('ctpoku He BBedeHu');
readkey;
End;
#60:Begin
if vvod then
vivod(s,n)
else writeln('text ne vveden');
readkey;
end;
#61:Begin
vivod(s,n);
writeln;
if VVod then writeln ('ctpoku bbedehu' )
else writeln ('ctpoku He BBedeHu');
readkey;
l:=0;
n:=0;
for i:=1 to m do
begin
w:='';
for j:=1 to Length(s[i]) do
begin
if s[i][j] in Letters then w:=w+s[i][j];
if not (s[i][j] in Letters) or (i=Length(s[i])) then
if w<>'' then
begin
l:=l+Length(w);
Inc(n);
w:='';
end;
end;
end;
WriteLn('srednaia dlina ',l/n:0:3);
ReadLn;
begin
for i:=length(X) downto 1 do
if x[12]='all' or x[12]='caroling'
then insert(l/n,x[1],1);
begin
write('rezyltat');
readkey;
end;
end;
end;
#62:Begin
writeln('Onepacuu c massiBamu ctpok');
writeln('Haxo}|{deHue cpedheu dluHHu ctpok');
writeln('zameHa dluHHou cloBa nocledhei ctpoku');
Readkey;
End;
end;
end;
until(ch=#27);
window(1,1,80,25);
textattr:=Old_Color;
clrscr;
END.
мисс_граффити
ошибка выскакивает из-за порядка операций... поставь скобочки:
if (x[12]='all') or (x[12]='caroling')


дальше, правда, у тебя идет неправильный вызов insert. посмотри в хелпе, какие у него аргументы должны быть. и смысл этого условия я не поняла. а если текст другой дадут? все, не будет программа работать?
Lapp
Эта тема, на самом деле, есть продолжение вот этой: найти среднюю длину слов в массиве строк и заменить нею слова последней строки . Оттуда и ноги растут, как я понимаю..

Юль, объедини их, пожалуй, пожалуйста.. ))
INZA
эту просто как дополнительно дали сделать а первую я уже сделал
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.