1.Создать текстовый файл file1.txt и записать в него несколько строк. Создать текстовый файл file2txt и записать в него строки из файла file1 в обратном порядке.
2.Создать файл file1.txt и записать десятичные числа,на каждой строке число. Создать файл file2.txt который будет содержать эти же числа только в двоичной системе счисления.
3.Создать файл file1.txt и записать двоичные числа,на каждой строке число. Создать файл file2.txt который будет содержать эти же числа только в десятичной системе счисления.
Есть все задачи,но они не работают. Выложу их может помогут.
Вот первая задача,но там что-то неправильно, так как она не работает.
[syntax='Delphi']
Program n1;
const n=2;
var f,g: text;
i:integer;
s:string;
begin
assign(f,'file1.txt');
assign(g,'file2.txt');
rewrite(f);
for i:=1 to n do
begin
readln (s);
writeln(f,s);
end;
close(f);
reset(f);
rewrite(g);
while not (eof(f)) do
for i:=n downto 1 do
begin
readln(f,s);
writeln(g,s);
end;
close(f);
close(g);
end.[/syntax]
Вторая задача разбита на 2 части, 1 часть - это создание файла F, а 2 часть - это создание файла G и перевод из 2 системы счисления в 10. Тоже не работает.
1 часть:
[syntax='Delphi']
Program n1;
const n=5;
var f:text;
s:string;
i:integer;
begin
assign(f, 'input.txt');
rewrite(f);
for i:=1 to n do
begin
readln (s);
writeln(f,s);
end;
close(f);
end.
2 часть
Program n2;
var f,g:text;
s,s1:string;
o,n:integer;
begin
assign(g,'out.txt');
assign(f,'input.txt');
reset (f);
rewrite(g);
while not eof(f) do
begin
readln(f,s);
n:=StrToInt(s);
while n<>0 do
begin
o:=n mod 2;
n:=n div 2;
s1:=IntToStr(o)+s1;
end;
writeln(g,s1);
end;
close(f);
close(g);
end.
[/syntax]
Третья задача тоже разбита так же как и вторая. И эта не работает.
1 часть:
[syntax='Delphi']
Program n1;
const n=5;
var f:text;
s:string;
i:integer;
begin
assign(f, 'input.txt');
rewrite(f);
for i:=1 to n do
begin
readln (s);
writeln(f,s);
end;
close(f);
end.
2 часть:
Program n2;
var f,g:text;
s,s1:string;
i,j,n,otv,dva:integer;
begin
assign(g,'out.txt');
assign(f,'input.txt');
reset (f);
rewrite(g);
while not eof(f) do
begin
readln(f,s);
for i:=1 to length(s) do
if StrToInt(s)>0 then
begin
dva:=1;
for j:=1 to length(s)-i do
dva:=dva*2;
otv:=otv+dva;
end;
writeln(otv);
writeln(g,s1);
end;
close(f);
close(g);
end.
[/syntax]
Помогите с текстовыми задачами в Паскале АВС.ПОЖАЛУЙСТА!ЗАРАНЕЕ СПАСИБО!
1. Правильно, что не работает. Вы фактически переписываете один файл в другой. Создайте массив строк
var arr = array[1..n] of string;
А во втором цикле не надо открывать первый файл для чтения, просто написать
for i:= n downto 1 do
writeln(g, arr);
2. По коду вроде все верно. Что именно у вас "не работает"? Не компилируется? Или выводит не то? У меня вот, например, нет под рукой компилятора Паскаля, чтобы проверить.
3. У вас какой-то странный перевод из двоичной в десятичную. Я бы сделал так:
Ну, и выводить в файл надо otv, а не s1, в которую ничего не записывается
var arr = array[1..n] of string;
А во втором цикле не надо открывать первый файл для чтения, просто написать
for i:= n downto 1 do
writeln(g, arr);
2. По коду вроде все верно. Что именно у вас "не работает"? Не компилируется? Или выводит не то? У меня вот, например, нет под рукой компилятора Паскаля, чтобы проверить.
3. У вас какой-то странный перевод из двоичной в десятичную. Я бы сделал так:
Код: Выделить всё
dva:=1;
for i:=length(s) downto 1 do begin
if (s[i]='1') then inc(otv, dva);
dva:=dva*2;
end;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.