Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ как читать с файла

Автор: maksimla 27.10.2008 18:41

как вот это прочитать правильно с файла
вот первые две цывры могу прочитать первая цыфра идет для того чтобы узнать сколько в строчке будет цыфр врорая для того чтобы длину определить на следущий строчке идет первые три цыфры которые надо сравнивать с остальными как мне это все хорошо прочитать все цыфры
3 6
7 4 4
1 8 2
5 5 5
3 2 1
7 4 5
1 1 7
6 3 2

Автор: Айра 27.10.2008 18:48

Покажи как читаешь то..

Автор: maksimla 27.10.2008 18:52

program staciakampis;
var n,b,i,c,a,d,z: integer;

pradDuom,
rezult: text;
begin
assign (pradDuom, 'duom.TXT');
assign (rezult, 'rez.TXT');
reset (pradDuom);
rewrite (rezult);
read (pradDuom, n,c);
b:=0 ;
read(pradduom,b,d,z);
writeln(b,' ',d,' ',z);
for i := 1 to c*n do
begin
read (pradDuom, a);
write(a,' ');
end;
Readln;
end.

Автор: samec 27.10.2008 19:35

А чего не нравится то? Вроде всё и читаешь, только вот файлы в конце программы надо закрывать:


close(pradDuom);
close(rezult);



ну и если вывод цифр тебе нужен так же как они в файле расположены, то можно цикл чтения цифр вот так подделать:

for j := 1 to c do
begin
for i := 1 to n do
begin
read (pradDuom,a);
write(a,' ');
end;
writeln;
end;



только нужно переменную-счетчик цикла "j" объявить в разделе объявления переменных.
А зачем ты делаешь:

b:=0;


??

Автор: maksimla 27.10.2008 19:40

а это там b:=0; до другого случая забыл убрать
вот как ты сказал так и написал кажется так но выбивает плахой формат цифр


program staciakampis;
var n,b,i,c,a,d,z: integer;

pradDuom,
rezult: text;
begin
assign (pradDuom, 'duom.TXT');
assign (rezult, 'rez.TXT');
reset (pradDuom);
rewrite (rezult);
read (pradDuom, n,c);
for i := 1 to c do
begin
for i := 1 to n do
begin
read (pradDuom,a);
write(a,' ');
end;
writeln;
end;
close(pradDuom);
close(rezult);
readln;
end.

Автор: samec 27.10.2008 19:43

Внимательнее прочти мой предыдущий пост.

Автор: maksimla 27.10.2008 23:12

program staciakampis;
type mas= array [1..100] of integer;
var n,i,c,j: integer;
pradDuom,rezult: text;
a,b:mas;
procedure sort( var m:mas; s:integer);
var k:integer;
begin
for i:= 1 to s - 1 do
for j:= i+1 to s do
if a[i]> a[j] then
begin
k:=m[i];
m[i]:=m[j];
m[j]:=k;
end;
end;

begin
assign (pradDuom, 'duom.TXT');
assign (rezult, 'rez.TXT');
reset (pradDuom);
rewrite (rezult);
read (pradDuom, n,c);
{for i:=1 to n do begin
read(pradduom,b[i]);
if i = 3 then
begin
sort(b,n);
for i:=1 to n do
writeln(b[i]);
end;
end; }

for j := 1 to c do
begin
for i := 1 to n do
begin
read (pradDuom,a[i] );
if i=3 then
begin
sort(a,n);
for i:=1 to n do
writeln(a[i]);
end;
end;
writeln;
end;
close(pradDuom);
close(rezult);
Readln;

end.

в чем ошибка у меня тут если тут мне нужно распредилить цифры по возвростания

Автор: samec 28.10.2008 2:19


for j := 1 to c do
begin
for i := 1 to n do {<-- вот тут счетчик цикла - i}
begin
read (pradDuom,a[i] );
if i=3 then
begin
sort(a,n);
for i:=1 to n do {<-- и здесь во вложенном цикле тоже используешь счетчик i - так делать не надо smile.gif}
writeln(a[i]);
end;
end;
writeln;
end;


с твоим кодом сортироваться у тебя будут вссегда только числа из первой считанной строки чисел, а на экран выводиться только последнее число из каждой строки чисел.
Как то это всё неправильно.
Предлагаю тебе вместо одномерного массива, воспользоваться двумерным массивом. Сначала считай в него из файла все числа, а затем сортируй их как хочешь smile.gif
примерно так:

for j := 1 to c do
begin
for i := 1 to n do
begin
read (pradDuom,a[j,i] );
writeln(a[j,i]);
end;
writeln;
end;
sort(a,c,n);


процедуру сортировки и описание типа "mas" видоизмени сам.

Автор: maksimla 31.10.2008 18:44

получилось там чют чють но я признаюсь что у меня небыло двоичного массива некогда

 program staciakampis;
type mas= array [1..100,1..100] of integer;
var n,i,c,j,z,k: integer;
pradDuom,rezult: text;
a:mas;
begin
assign (pradDuom, 'duom.TXT');
assign (rezult, 'rez.TXT');
reset (pradDuom);
rewrite (rezult);
read (pradDuom, n,c);
c:=c+1 ;
for j := 1 to c do
begin
for i := 1 to n do
begin
read (pradDuom,a[j,i] );
end;
end;
for j:=1 to c do
for i:= 1 to n do
for z:=i+1 to n do
if a[j,i]>a[j,z] then
begin
k:=a[j,i];
a[j,i]:=a[j,z];
a[j,z]:=k;
{writeln(a[j,i]:9);
writeln(a[j,z]); }
end;
for j:=1 to c do
for i:=1 to n do
writeln(a[j,i]);
close(pradDuom);
close(rezult);
Readln;
end.

Автор: maksimla 31.10.2008 23:40

вот написал но ошибка есть неправильно выводит пока что на экран цифры должно выводит только те цифры которые меньши и равны этим цифрам 4,4,7 и если в массиве втором цифры 1,2,8 то они не должны выводится

program staciakampis;
type mas = array [1..100,1..100] of integer;
var n,i,c,j,z,k,d,m: integer;
pradDuom,rezult: text;
a:mas;
begin
assign (pradDuom, 'duom.TXT');
assign (rezult, 'rez.TXT');
reset (pradDuom);
rewrite (rezult);
read (pradDuom, n,c);
c:=c+1 ;
for j := 1 to c do
begin
for i := 1 to n do
begin
read (pradDuom,a[j,i] );
end;
end;
for j:=1 to c do
for i:= 1 to n do
for z:=i+1 to n do
if a[j,i]>a[j,z] then
begin
k:=a[j,i];
a[j,i]:=a[j,z];
a[j,z]:=k;
{writeln(a[j,i]:9);
writeln(a[j,z]); }
end;
d:=0;
m:=0;
for j:=2 to c do
for i:=1 to n do
{ ****************** ошибка в if***********}
if a[1,i] >= a[j,i] then

{d:=d+1; }
{writeln(d);}
writeln(a[1,i],'>=',a[j,i]);

{writeln(a[j,i]>=a[j,i]);}

{ end;

end; }
close(pradDuom);
close(rezult);
Readln;
end.

вот так тут три первых цифры это куб а все другие числа кубы и должно так идти в первый куб вместится второй куб или другие в первый куб и их вот можно поворачивать кубы

Автор: maksimla 2.11.2008 19:29

условия такие первая цифра это длина страки ну сколько цифр будет второе число это сколько столбцов будет потом первые три цифры это куба цифры остольные цифры это кубы тоже. В первый куб вместится все остальные кубы и их можно по разному переворачивать.
3 6
7 4 4
1 8 2
5 5 5
3 2 1
7 4 5
1 1 7
6 3 2
сперва я их всех записал в двойной массив потом упорядочил по возрастанию так
4 4 7
1 2 8
5 5 5
1 2 3
4 5 7
1 1 7
2 3 6
потом вот сравнивать неполучается так
4>=1
4>=2
7>=8
и если хоть одна цифра больше то этот ненадо писать массив
4>=5
4>=5
7>=5
и этот тоже самое
4>=1
4>=2
7>=8
а вот этот уже надо написать потомучто все правильно
а у меня выводит так
4>=1
4>=2
7>=5
4>=1
4>=2
7>=3
вот неправильно выводит

Автор: Lapp 3.11.2008 8:48

maksimla, не в обиду тебе будь сказано, я просто не понимаю, что ты пишешь. Я честно пытался понять условие, но так и не понял. Извини, но твой уровень владения русским языком представляет большую проблему. Я не упрекаю, я просто констатирую факт.
Что там у тебя за "куба" такие, что тебе с ними нужно делать - я так и не врубился. Извиняй.