Задание внизу на фотке!!!!!!!!!!
(Надо делать задание 2.3!!!)
Программа должна поменять 2 строки текста.Но она почему-то ничего не меняет!!!!!
Вот программа:
Program DP;
const
d=250;
n=10;
k=25;
type
st=string[d];
ptrstr=^st;
mytext=array [1..n] of ptrstr;
t2=^mytext;
var
i,j:integer;
t:t2;
t1:text;
Procedure Myswap(var t:t2;i,j:integer);
var
a:ptrstr;
Begin
a:=t^[i];
t^[i]:=t^[j];
t^[j]:=a;
End;
Begin
assign(t1,'G:\abc.txt');
reset(t1);
new(t);
writeln;
for i:=1 to n do t^[i]:=nil;
for i:=1 to n do
begin
writeln;
for j:=1 to k do
begin
read(t1,t^[i]^[j]);
write(t^[i]^[j]);
end;
close(t1);
end;
writeln;
writeln('Vvedite i-uyu stroky matrici:');
readln(i);
writeln('Vvedite j-uyu stroky matrici:');
readln(j);
reset(t1);
myswap(t,i,j);
writeln('Preobrazovanii tekst:');
for i:=1 to n do
begin
writeln;
for j:=1 to k do
begin
read(t1,t^[i]^[j]);
write(t^[i]^[j]);
end;
end;
close(t1);
dispose(t);
End.
М | Теги! мисс_граффити |
такие ошибки и компилятор прекрасно ловит:
Файл не открыт для чтения.
Сделал бы нормальное форматирование - увидел бы:
for i:=1 to n do
begin
writeln;
for j:=1 to k do
begin
read(t1,t^[i]^[j]);
write(t^[i]^[j]);
end;
close(t1);
end;
вот так на некоторых файлах работает:
Program DP;
const
d=250;
n=4;
k=10;
type
st=string[d];
ptrstr=^st;
mytext=array [1..n] of ptrstr;
t2=^mytext;
var
i,j:integer;
t:t2;
t1:text;
Procedure Myswap(var t_i,t_j:ptrstr);
var
a:ptrstr;
Begin
a:=t_i;
t_i:=t_j;
t_j:=a;
End;
Begin
assign(t1,'C:\abc.txt');
reset(t1);
new(t);
writeln;
for i:=1 to n do
begin
t^[i]^:='HereIsText';
for j:=1 to k do
read(t1,t^[i]^[j]);
writeln(t^[i]^);
end;
writeln;
writeln('Vvedite i-uyu stroky matrici:');
readln(i);
writeln('Vvedite j-uyu stroky matrici:');
readln(j);
myswap(t^[i],t^[j]);
writeln('Preobrazovanii tekst:');
for i:=1 to n do
writeln(t^[i]^);
close(t1);
dispose(t);
readln;
End.
Я изменил прогу а она опять не работает!!!!!
Вот прога:
Program DP;
const
d=250;
n=10;
k=25;
type
st=string[d];
ptrstr=^st;
mytext=array [1..n] of ptrstr;
t2=^mytext;
var
x,y:integer;
t:t2;
t1:text;
i,j:ptrstr;
Procedure Myswap(var t:t2;var i,j:ptrstr);
var
a:ptrstr;
Begin
a:=i;
i:=j;
j:=a;
End;
Begin
assign(t1,'G:\abc.txt');
reset(t1);
new(t);
writeln;
for x:=1 to n do t^[x]:=nil;
for x:=1 to n do
begin
writeln;
for y:=1 to k do
begin
read(t1,t^[x]^[y]);
write(t^[x]^[y]);
end;
end;
close(t1);
reset(t1);
writeln;
writeln('Vvedite i-uyu stroky matrici:');
readln(x);
writeln('Vvedite j-uyu stroky matrici:');
readln(y);
myswap(t,t^[i],t^[j]);
writeln('Preobrazovanii tekst:');
for x:=1 to n do
begin
writeln;
for y:=1 to k do
begin
read(t1,t^[x]^[y]);
write(t^[x]^[y]);
end;
end;
close(t1);
dispose(t);
End.
Во-первых,
var
x,y:integer;
t:t2;
t1:text;
i,j:integer; { <--- А не то, что было ... }
i и j я ввожу с клавиатуры!!!!!
Вот переделал, но всё равно не работает!!!
Program DP;
const
d=250;
n=10;
k=25;
type
st=string[d];
ptrstr=^st;
mytext=array [1..n] of ptrstr;
t2=^mytext;
var
x,y:integer;
t:t2;
t1:text;
i,j:integer;
Procedure Myswap(var t:t2;var i,j:ptrstr);
var
a:ptrstr;
Begin
a:=i;
i:=j;
j:=a;
End;
Begin
assign(t1,'G:\abc.txt');
reset(t1);
new(t);
writeln;
for x:=1 to n do t^[x]:=nil;
for x:=1 to n do
begin
writeln;
for y:=1 to k do
begin
read(t1,t^[x]^[y]);
write(t^[x]^[y]);
end;
end;
close(t1);
reset(t1);
writeln;
writeln('Vvedite i-uyu stroky matrici:');
readln(i);
writeln('Vvedite j-uyu stroky matrici:');
readln(j);
myswap(t,t^[x],t^[y]);
writeln('Preobrazovanii tekst:');
for x:=1 to n do
begin
writeln;
for y:=1 to k do
begin
read(t1,t^[x]^[y]);
write(t^[x]^[y]);
end;
end;
close(t1);
dispose(t);
End.
Извини, а чем тебя не устроил мой код?
Не спорю, простор для оптимизации есть. Но он хотя бы работает!
Здесь телепатов, чтобы разбираться, КАКОЙ у тебя входной файл - нету... Вот это работает на МОЕМ файле. Надо - бери и смотри, что я поменял, может, и переделаешь под то, что надо ТЕБЕ...
Program DP;
const
d = 250;
n = 10;
k = 25;
type
st = string[d];
ptrstr = ^st;
mytext = array[1 .. n] of ptrstr;
t2=^mytext;
var
x, y: integer;
t: t2;
t1: text;
i, j: integer;
Procedure Myswap(var t:t2;var i,j:ptrstr);
var a:ptrstr;
Begin
a:=i;
i:=j;
j:=a;
End;
Begin
assign(t1,'abc.txt');
reset(t1);
new(t);
writeln;
for x:=1 to n do t^[x]:=nil;
for x:=1 to n do begin
new(t^[x]);
writeln;
for y:=1 to k do begin
read(t1,t^[x]^[y]);
write(t^[x]^[y]);
end;
readln(t1);
end;
close(t1);
reset(t1);
writeln;
writeln('Vvedite i-uyu stroky matrici:');
readln(i);
writeln('Vvedite j-uyu stroky matrici:');
readln(j);
myswap(t,t^[i],t^[j]);
writeln('Preobrazovanii tekst:');
for x:=1 to n do begin
writeln;
for y:=1 to k do begin
{ read(t1,t^[x]^[y]); }
write(t^[x]^[y]);
end;
end;
close(t1);
dispose(t);
End.
Просто в задании надо передать параметры (t,i,j) и сделать так, чтобы,если в тексте менее N строк, последние элементы массива были равны nil. Но всё равно спасибо!!!
volvo, а можно вопрос?..
открывать сообщение или нет - на твое усмотрение.
Что тебе дает передача этого массива? Он же в процедуре не используется...
То есть что изменится, если мы напишем не так, а
Procedure Myswap(var i,j:ptrstr);?
М | Я просто не обратил внимание на эту процедуру... Как она была, так и оставил. Можно и убрать, конечно... volvo |
Я файл разделил на строки и прога стала работать! Но в задании наверно надо не обрезать строки а разделить текст на строки равной длины!! Такое возможно?????
Прога теперь работает. Всем большое спасибо за помощь!!!!!
Добавлено через 4 мин.