Другие языки программирования и технологии

Помогите решить задачку.

Откорректировать данный текстовый файл Т, вставляя в конец каждой его строки число N, равное количеству слов в строке. Под N отводится 6 позиций.
Arif Seifullaev
Arif Seifullaev
2 052
na iazike PASCAL: napisano v Delphi 7

program Mail_Ru;

{$APPTYPE CONSOLE}
{$ O-}

uses
SysUtils;
type
TLines = record
S: string;
Count: Integer;
end;

var
T: Text;
Lines: array[1..32000] of TLines;
i, k: Integer;

function Compute(S: string): Integer;
var
j, n: Integer;
begin
n := 0;
j := Pos(' ', S);
while j <> 0 do
begin
Inc(n);
Delete(S, 1, j);
j := Pos(' ', S);
end;

if S <> '' then
Inc(n);

Result := n;
end;

begin
Assign(T, 'Temp.txt'); Reset(T);

i := 0;
while not Eof(T) do
begin
Inc(i);
ReadLn(T, Lines.S);
end;

Close(T);

Assign(T, 'Temp.txt'); Rewrite(T);

for k := 1 to i do
begin
Lines[k].Count := Compute(Lines[k].S);
WriteLn(T, Lines[k].S);
Writeln(T, Lines[k].Count);
end;

Close(T);
end.
Црб Куртамыш
Црб Куртамыш
126
Лучший ответ
Црб Куртамыш ia uje testiroval i rabotaet na +5. esli chto nibud neponiatno mojesh sprosit' :)
Что конкретно вам не понятно? Как прочитать строку из файла? Как определить число слов? Как записать строку в выходной файл? Или предлагается сделать за вас всю работу?

Алгоритм решения следующий. Открываем файл. Пока не конец файла, читаем строку в строковую переменную. Считая, что слова разделены одним пробелом, подсчитываем число пробелов. Число слов будет на единицу больше. Если нет уверенности в том, что между словами по одному пробелу, предварительно удаляем "лишние"пробелы. Строковую переименную пишем в файл и дописываем число слов.

Write(OutF, S);
WriteLn(OutF, N:6);
Павел Токарев
Павел Токарев
59 613
function convert(k:integer):string;
begin
str:string;
i:=6;
while i>=1 do begin
temp:=k mod 10;
if temp = 1 str[ i ]:='1';
if temp = 2 str[ i ]:='2';
if temp = 3 str[ i ]:='3';
if temp = 4 str[ i ]:='4';
if temp = 5 str[ i ]:='5';
if temp = 6 str[ i ]:='6';
if temp = 7 str[ i ]:='7';
if temp = 8 str[ i ]:='8';
if temp = 9 str[ i ]:='9';
if temp = 0 str[ i ]:='0';
k:= k div 10;
i:=i-1; end;
convert:=str;
end;

Assign(f, 'c:\data.dat');
Assign(t,'c:\newfile.dat')
s: CHAR;
chislo:string;
k:integer;
while not eof(f) do begin
read(f, s);
if ord(s)=32 then k:=k+1 else begin chislo := cnvert(k); write(f,chislo);
end;
rename('c:\newfile.dat', 'c:\data.dat')

вот. помог чем мог. забыл как case пишется, ты это в функции подправь.
Sergey Kostikov
Sergey Kostikov
19 740
Вопрос не совсем конкретный, отвечаю неконкретно. Необходимо считать строку из текстового файла (на разных языках делается по-разному) . Измерить её длину (в байтах) . Вывести саму строку и преобразованную в текст длину в текстовый файл. Конкретнее?
Arif Seifullaev так дана задачка
Arif Seifullaev о да забыла это надо в Pascal
Василий Классен program test;
Var
s1 : string;
input ,output: text;
Begin
Assign( input ,'text.txt');
Assign( output ,'final.txt');
reset( input );
rewrite( output );
while not Eof( input ) do begin
s1 := Readln( input );
writeln(output, s1, Length(s1));
end;
Close(i nput );
Close( output );
End.
Скорее всего так, Паскаля нет, возможны ошибки, но мысль понятна?