Страница 1 из 1

Паскаль, паралеллепипеды

Добавлено: 02 ноя 2008, 12:36
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.


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

Re: помогите исправить ошибку даписать программу на паскале

Добавлено: 02 ноя 2008, 13:23
maksimla
начальные данные
3 6
7 4 4
1 8 2
5 5 5
3 2 1
7 4 5
1 1 7
6 3 2
ответ 3

Re: помогите исправить ошибку даписать программу на паскале

Добавлено: 02 ноя 2008, 14:13
Serge_Bliznykov
исходные условия задачи приведите, пожалуйста.

Re: помогите исправить ошибку даписать программу на паскале

Добавлено: 02 ноя 2008, 14:22
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
вот неправильно выводит

Re: помогите исправить ошибку даписать программу на паскале

Добавлено: 02 ноя 2008, 16:16
Хыиуду
Гм... заведите себе переводчика с ваших мыслей на русский язык. Что значит, к примеру "первые три цифры это куба цифры остольные цифры это кубы тоже".
Насколько я понял, задача стоит примерно так: задано несколько паралеллепипедов (раз у них разные стороны, кубами они быть точно не могут), надо вывести те, которые могут вместиться в первый из них и могут быть там развернуты вдоль любой ортогональной оси. Я прав?
В таком случае пусть a,b,c - стороны внешнего паралеллепипеда, ai, bi, ci - стороны внутреннего. В таком случае внешний вмещает внутренний, если min(a,b,c)>=max(ai,bi,ci).
Функции min и max для нахождения минимального и максимального из трех чисел пишутся за минуту или находятся в инете.

Re: Паскаль, паралеллепипеды

Добавлено: 02 ноя 2008, 23:26
Naeel Maqsudov
[syntax=Delphi]
program staciakampis;
type
mas = array [1..100,1..100] of integer;
var
pradDuom,rezult: text;
n,c,m,d,i,j,k,t,p:integer;
a:mas;
begin
assign(pradDuom, 'c:\duom.TXT');
assign(rezult, 'c:\rez.TXT');
reset(pradDuom);
rewrite(rezult);
read(pradDuom, n,c);
c:=c+1;
for j := 1 to c do begin
read(pradDuom,a[j,1]);
for i := 2 to n do begin
read(pradDuom,t);
for k:=1 to i-1 do begin
if t<a[j,k] then begin
p:=a[j,k]; a[j,k]:=t; t:=p;
end;
end;
a[j,i]:=t;
end;
writeln(a[j,1],a[j,2],a[j,3])
end;
for j:=2 to c do begin
m:=0;
for i:=1 to n do if a[1,i]>=a[j,i] then begin
write(a[1,i],'>=',a[j,i],' ');
inc(m);
end;
writeln(m);
if m=n then inc(d);
end;
writeln(rezult,d);
writeln('Ответ: ',d);
readln;
end.

[/syntax]