Другие языки программирования и технологии
Помогите решить задачку.
Откорректировать данный текстовый файл Т, вставляя в конец каждой его строки число N, равное количеству слов в строке. Под N отводится 6 позиций.
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.
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.
Црб Куртамыш
ia uje testiroval i rabotaet na +5. esli chto nibud neponiatno mojesh sprosit' :)
Что конкретно вам не понятно? Как прочитать строку из файла? Как определить число слов? Как записать строку в выходной файл? Или предлагается сделать за вас всю работу?
Алгоритм решения следующий. Открываем файл. Пока не конец файла, читаем строку в строковую переменную. Считая, что слова разделены одним пробелом, подсчитываем число пробелов. Число слов будет на единицу больше. Если нет уверенности в том, что между словами по одному пробелу, предварительно удаляем "лишние"пробелы. Строковую переименную пишем в файл и дописываем число слов.
Write(OutF, S);
WriteLn(OutF, N:6);
Алгоритм решения следующий. Открываем файл. Пока не конец файла, читаем строку в строковую переменную. Считая, что слова разделены одним пробелом, подсчитываем число пробелов. Число слов будет на единицу больше. Если нет уверенности в том, что между словами по одному пробелу, предварительно удаляем "лишние"пробелы. Строковую переименную пишем в файл и дописываем число слов.
Write(OutF, S);
WriteLn(OutF, N:6);
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 пишется, ты это в функции подправь.
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 пишется, ты это в функции подправь.
Вопрос не совсем конкретный, отвечаю неконкретно. Необходимо считать строку из текстового файла (на разных языках делается по-разному) . Измерить её длину (в байтах) . Вывести саму строку и преобразованную в текст длину в текстовый файл. Конкретнее?
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.
Скорее всего так, Паскаля нет, возможны ошибки, но мысль понятна?
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.
Скорее всего так, Паскаля нет, возможны ошибки, но мысль понятна?
Похожие вопросы
- Помогите решить задачку простенькую.
- помогите решить задачку, на VBA для Excel
- Кто разбирается в программировании? помогите решить задачку!
- Пожалуйста, помогите решить задачку по информатике...
- Помогите решить задачку
- Люди помогите решить задачку!!!на паскале
- Знатоки Турбо Паскаля, помогите решить задачки для 7-го класса. Дочке очень нужно.
- помогите решить задачку по информатике
- Помогите решить задачку по информатике!
- Господа программеры. Я знаю что вы добрые люди. Не поможете решить задачку?