Помощь - Поиск - Пользователи - Календарь
Полная версия: как читать с файла
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
maksimla
как вот это прочитать правильно с файла
вот первые две цывры могу прочитать первая цыфра идет для того чтобы узнать сколько в строчке будет цыфр врорая для того чтобы длину определить на следущий строчке идет первые три цыфры которые надо сравнивать с остальными как мне это все хорошо прочитать все цыфры
3 6
7 4 4
1 8 2
5 5 5
3 2 1
7 4 5
1 1 7
6 3 2
Айра
Покажи как читаешь то..
maksimla
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
А чего не нравится то? Вроде всё и читаешь, только вот файлы в конце программы надо закрывать:

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
а это там 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
Внимательнее прочти мой предыдущий пост.
maksimla
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

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
получилось там чют чють но я признаюсь что у меня небыло двоичного массива некогда
 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
вот написал но ошибка есть неправильно выводит пока что на экран цифры должно выводит только те цифры которые меньши и равны этим цифрам 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
условия такие первая цифра это длина страки ну сколько цифр будет второе число это сколько столбцов будет потом первые три цифры это куба цифры остольные цифры это кубы тоже. В первый куб вместится все остальные кубы и их можно по разному переворачивать.
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
maksimla, не в обиду тебе будь сказано, я просто не понимаю, что ты пишешь. Я честно пытался понять условие, но так и не понял. Извини, но твой уровень владения русским языком представляет большую проблему. Я не упрекаю, я просто констатирую факт.
Что там у тебя за "куба" такие, что тебе с ними нужно делать - я так и не врубился. Извиняй.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.