Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2010, 20:00   #1
fus1on
 
Регистрация: 07.10.2010
Сообщений: 1
Восклицание Числовая матрица

Числовая матрица задается в файле в следующем формате I и J, номера столбца и строки ненулевого элемента матрицы, и само значение элемента A(I,J). Количество нулевых элементов неизвестно. Вывести матрицу на экран в обычной форме в виде последовательностей строк и столбцов. Обеспечить преобразование матрицы перестановкой P и Q строк матрицы. Переписать преобразованную матрицу в файл. Размерносто матрицы M*N.
Все это должно быть в консольном режиме...

Матрица вида
1(2,4) 3(4,4) 5(4,3) 5(5,2) и т.д

Если нет элемента в матрице, то он равен 0.

В чем ошибка, не могу понять?

Код:
program Project6;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  M=5;
  N=5;
Type
mas1=array[1..M] of string;
mas2=array[1..N] of mas1;
var
         filex:textfile;
         s0,s1,s2,s:string;
         i,j,p,q,errorPos:integer;
         A:integer;
         mas:mas2;
begin
writeln('Enter file name');
readln(s);
Assignfile(filex,s);
Reset(filex);
While not(eof(filex)) do
  begin
    readln(filex,s);
    s:=' '+s;
    while pos(')',s)<>0 do
      begin
        s1:=copy(s,pos('(',s)+1,pos(',',s)-pos('(',s)-1);
        s2:=copy(s,pos(',',s)+1,pos(')',s)-pos(',',s)-1);
        s0:=copy(s,pos(' ',s)+1,pos(' ',s)-pos('(',s)-1);
        Val(s0,a,errorPos);
        val(s1,i,errorPos);

        val(s2,j,errorPos);

        mas[i,j]:=s0;
        delete(s,pos(' ',s),pos(')',s));
      end;
  end;
  closefile(filex);
  for i := 1 to M do
    begin
      for j := 1 to N-1 do
        write(mas[i,j]+' ');
        writeln(mas[i,N]);
    end;
   writeln('enter P');
   readln(p);
   writeln('enter Q');
   readln(q);
                for i := 1 to M do
                  begin
                    s:=mas[i,p];
                    mas[i,p]:=mas[i,q];
                    mas[i,q]:=s;
                  end;
  writeln('enter name new file');
  readln(s);
  assignfile(filex,s);
  rewrite(filex);
  for i := 1 to M do
    begin
      for j:=1 to N-1 do
      write(filex,mas[i,j]+' ');
      writeln(filex,mas[i,N]);
end;
closefile(filex);
end.

Последний раз редактировалось fus1on; 18.11.2010 в 21:31. Причина: ошибку исправил
fus1on вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
числовая последовательность Tata4ka Помощь студентам 5 01.11.2010 15:04
Введенная квадратная числовая матрица размера N*N Алекс К. Помощь студентам 2 10.03.2009 16:56
числовая последовательность pelsh Помощь студентам 1 15.02.2008 03:20