Показать сообщение отдельно
  #6  
Старый 24.05.2010, 13:08
devians devians вне форума
Прохожий
 
Регистрация: 23.05.2010
Сообщения: 5
Репутация: 10
По умолчанию

friz спасибо большое!
На счет второй: вот похожая, но мне нужно без файлов и процедур

Код:
Сформировать массив К из положительных отношений элементов n-го и s-го столбцов массива.

program Lab_6;
{$APPTYPE CONSOLE}
uses
  SysUtils;
 
const
    s = 1; //s и n столбцы, которые нужно переместить
    n = 4;
    MaxDim = 5;  // максимальный размер матрицы
type
        arr=array[1.. MaxDim,1.. MaxDim] of integer; // тип arr для массива А
           arr2=array[1..MaxDim] of real;
var
        A:arr;                  // массив А
           K:arr2;                //массив K, тобишь куда будем записывать положительное часное от деления
        i,j:integer;            // счетчики по строкам, столбцам
        m:integer;              // размер квадратной матрицы
        fi,fo:text;             // файловые переменные
//-------------------------------------------------------------
//      Описание процедуры чтения массива из файла
//      f, a1, MaxD, m1 - формальные параметры
//
//      Исходные данные:
//      f  - файл исходных данных,
//         MaxD  - максимальная размерность массива a1
//
//      Результат:
//      заполненный массив a1 и его реальный размер - m1
//-------------------------------------------------------------
Procedure ReadFromFile(var f:text;var A1:arr;MaxD:integer; var m1:integer);
Var
    i,j:integer; // счетчики по строкам, столбцам - локальные переменные
begin
        Readln(f,m1);       // чтение размера матрицы из первой строки файла
        if m1>MaxD then  // проверка размера матрицы
begin
                m1:=MaxD;
                Writeln('Матрица из файла урезана до размера массива');
        end;
 
        for i:=1 to m1 do       // чтение из файла матрицы А
        begin
                for j:=1 to m1 do Read(f,A1[i,j]);
                        Readln(f);      // перевод указателя файла на новую строку
        end;
end;
//-------------------------------------------------------------
//  заполнение массива K
//
//  Исходные данные: массив a1 и его реальный размер - m1.
//-------------------------------------------------------------
Procedure Schet(Var a1:arr; m1:word; s1,n1:integer; var k: arr2);
Var
        i: word;// счетчик по строкам
begin
    For i:=1 to m1 do       //проверка условия и заполнение массива k
       if (a1[s1,i]/a1[n1,i])>0 then k[i]:=(a1[s1,i]/a1[n1,i]);
end;
//-------------------------------------------------------------
//  описание процедуры вывода результата в файл и на экран
//
//  Исходные данные:
//  f - файл для сохранения результата,
//  Результат  - вывод результатов программы в файл и на экран
//-------------------------------------------------------------
Procedure SaveToFile(var f:text; var m1:integer; var k:arr2);
    Var i:integer;
begin
    For i:=1 to m1 do begin
     Writeln(f,'k[',k[i],']=') end;
    For i:=1 to m1 do begin
     Writeln('k[',k[i],']=') end;
end;
begin
        AssignFile(fi,'matr.txt');      // Файловой переменной fi назначается файл matr.txt
           Reset(fi);          // Текстовый файл открывается для чтения
        // чтение данных из файла fi;
        //  A, MaxDim, m - фактические параметры
        ReadFromFile(fi,A,MaxDim,m);
        CloseFile(fi);          // Закрывается прочитанный файл fi
        // вызов процедуры решения основной задачи
        Schet(A,m,s,n,k);
        // Файловой переменной fo назначается файл matr.out
        AssignFile(fo,'matr.out');
        Rewrite(fo);            // Текстовый файл fo открывается для записи
        // вызов процедуры вывода результатов в файл
        SaveToFile(fo,m,k);
        CloseFile(fo);                  // Закрывается файл fo,созданный программой
        WriteLn('***** Press <ENTER> to finish *****');
        Readln;                 // задержка экрана
end.
Ответить с цитированием