найти среднюю длину слов в массиве строк и заменить нею слова последней строки (размерность массива 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
20.12.2010 8:23
Цитата(INZA @ 19.12.2010 21:42)
заменить нею слова последней строки
А что это значит?..
INZA
20.12.2010 22:36
Цитата(Lapp @ 20.12.2010 5:23)
А что это значит?..
цифрой ну например ср.длина слов 5 букв
Lapp
21.12.2010 10:33
Цитата(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.
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.
- ? Я как-то сомневаюсь, что такое могло прийти в голову составителю этой задачи. Но - всякое бывает.. Пояснишь?
INZA
21.12.2010 13:45
получается что так.я сам в недоумениях от таких задач но какая есть такая есть
Lapp
21.12.2010 14:33
Цитата(INZA @ 21.12.2010 9:45)
получается что так.я сам в недоумениях от таких задач но какая есть такая есть
Ну, тогда вот - средняя длина у тебя есть. С заменой справишься? Для получения записи числа используй процедуру Str.
INZA
21.12.2010 15:19
Цитата(Lapp @ 21.12.2010 11:33)
Ну, тогда вот - средняя длина у тебя есть. С заменой справишься? Для получения записи числа используй процедуру Str.
да справлюсь. Спасибо большое
INZA
21.01.2011 16:47
нужно найти среднюю длину и заменить нею слова последней строки. выходит ошибка скажите что я делаю не правильно
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.
мисс_граффити
21.01.2011 18:49
ошибка выскакивает из-за порядка операций... поставь скобочки:
if (x[12]='all') or (x[12]='caroling')
дальше, правда, у тебя идет неправильный вызов insert. посмотри в хелпе, какие у него аргументы должны быть. и смысл этого условия я не поняла. а если текст другой дадут? все, не будет программа работать?