Помощь - Поиск - Пользователи - Календарь
Полная версия: Процедуры и функции в паскале
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Novichok92
Это решение задачи через процедуры и функции: "Даны натуральное число n, действительное число x и действительная матрица размера nx2n. Получить последовательность b1,..., bn из нулей и единиц, где bi =1, если элементы i-ой строки матрицы не превосходят x и bi =0 в противном случае"

	 
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
type
 matr=array[1..100,1..200] of real;
 mas=array[1..100] of integer;
var i,j, n:integer;
    x:real;
    a:matr;
    b:mas;
 
procedure vivod(n:integer;var ain:matr);
var iin,jin:integer;
begin
Randomize;
for iin:=1 to n do
 for jin:=1 to 2*n do
a[iin,jin] := Random;
for iin:=1 to n do begin
for jin:=1 to 2*n do
 Write('  ' ,ain[iin,jin]:4);
 WriteLn;
 end;
end;
 
procedure decide(x:real;n:integer;ain:matr;var bin:mas);
var iin,jin:integer;
begin
for iin:=1 to n do
   for jin:=1 to 2*n do
    if ain[iin,jin]<=x then bin[iin]:=1
                          else
                           begin
                            bin[iin]:=0;
                            break;
                           end;
end;
 
begin
write('n=');
readln(n);
write('x=');
readln(x);
vivod(n,a);
 decide(x,n,a,b);
 writeln;
 writeln('Result:');
 for i:=1 to n do
  write(b[i]:2);
 readln;
end.




Подскажите,правильно ли решена задача???Если не верно,то помогите пожалуйста исправить!!!! give_rose.gif
Lapp
Цитата(Novichok92 @ 6.11.2009 10:45) *
Подскажите,правильно ли решена задача???Если не верно,то помогите пожалуйста исправить!!!!

Верно, в том смысле, что ответ верный выдает. Но есть одно замечание: не нужно присваивать единицу во внутреннем цикле, нужно один раз перед ним. Вот так:
procedure decide(x:real;n:integer;ain:matr;var bin:mas);
var
  iin,jin:integer;
begin
  for iin:=1 to n do begin
    bin[iin]:=1;
    for jin:=1 to 2*n do
      if ain[iin,jin]>x then begin
        bin[iin]:=0;
        break;
      end;
  end
end;

И Randomize нужно делать только один раз в главной программе.
Про рациональность разбиения на процедуры я пока промолчу.
volvo
Novichok92, если вдруг ты будешь сдавать эту программу, и тестировать ее надо будет на Турбо-Паскале, а не в Дельфи, то она у тебя не откомпилируется: вещественная матрица 100*200 имеет недопустимо большой размер для этого компилятора. Это так, на всякий случай, информация к размышлению...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.