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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2011, 14:12   #1
zmey1
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 30
По умолчанию Матрицы. Паскаль.

Привет всем.

Помогите решать задачку на паскале.
Я не просто не понимаю как написать код, но и вообще что программа должны делать=)))

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

Подскажите как быть с такой задачей, пожалуйста=)
zmey1 вне форума Ответить с цитированием
Старый 30.11.2011, 16:01   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

нужно:
1) заполнить матрицу нулевыми значениями
2) открыть текстовый файл на чтение.
в цикле, пока не конец файла читать из файла три числа I, J, KKK
записывать полученное значение в матрицу:
Код:
if (I>=1) and (I<=N) and (J>=1) and (J<=M) then A[J, I] := KKK;
3) закрыть исходный текстовый файл
4) вывести матрицу (обычный цикл):
Код:
for j:=1 to M do begin
  for  i:=1 to N do
    Write(A[j, i],' ');
  WriteLn;
end;
всё. задача решена.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.12.2011, 12:01   #3
zmey1
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 30
По умолчанию

Могу попросить, что вы написали код?
Отрывки я понимаю, а вот со всем остальным возникнут проблемы по любому.
zmey1 вне форума Ответить с цитированием
Старый 01.12.2011, 16:06   #4
zmey1
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 30
По умолчанию

Мне объяснили, что эта прога не должна использовать файлы...
То есть матрица выводится просто на экран без связи с каким либо файлом.
zmey1 вне форума Ответить с цитированием
Старый 01.12.2011, 16:10   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Сообщение от zmey1 Посмотреть сообщение
Мне объяснили, что эта прога не должна использовать файлы...
То есть матрица выводится просто на экран без связи с каким либо файлом.
У вас же в задании
Цитата:
Числовая матрица задается в файле
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 01.12.2011, 17:26   #6
zmey1
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 30
По умолчанию

А ну значит я не правильно понял.
Работы просто много и сессия уже на носу, а я не успеваю вникнуть в работу с файлами на паскале.
I need help guys.
В долгу не останусь=)
zmey1 вне форума Ответить с цитированием
Старый 01.12.2011, 18:14   #7
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
const fn='data.txt';
var m,n,i,j,e:integer;
 Mt:array[1..100,1..100] of real;
 f:text;
 s,buf:string;
 p,q:integer;
 function Trim(const S: string): string;
var
  I, L: Integer;
begin
  L := Length(S);
  I := 1;
  while (I <= L) and (S[I] <= ' ') do Inc(I);
  if I > L then Trim := '' else
  begin
    while S[L] <= ' ' do Dec(L);
    Trim := Copy(S, I, L - I + 1);
  end;
end;
begin
write('n=');readln(n);
write('m=');readln(m);
for i:=1 to n do
for j:=1 to m do
Mt[i,j]:=0;
assign(f,fn);
reset(f);
while not eof(f) do begin
readln(f,s);
buf:=copy(s,1,pos(' ',s));
buf:=trim(buf);val(buf,i,e);
delete(s,1,pos(' ',s));
s:=trim(s);
buf:=copy(s,1,pos(' ',s));
buf:=trim(buf);val(buf,j,e);
s:=trim(s);
val(s,mt[i,j],e);
end;
close(f);
for i:=1 to n do begin
for j:=1 to m do
write(Mt[i,j]:6:3);
writeln;
end;
writeln('================================');
write('p=');readln(p);
write('q=');readln(q);
For i:=1 to m do
begin
Mt[100,i]:=mt[p,i];
mt[p,i]:=mt[q,i];
mt[q,i]:=mt[100,i];
end;
writeln('================================');
assign(f,'output.txt');
rewrite(f);
for i:=1 to n do begin
for j:=1 to m do begin
write(f,Mt[i,j]:6:3);
write(Mt[i,j]:6:3); end;
writeln;
writeln(f);
end;
close(f);
readln;
end.
в Pascal Abc
Цитата:
n=4
m=4
1.000 0.000 3.000 0.000
0.000 2.000 0.000 0.000
0.000 0.000 3.000 0.000
0.000 0.000 0.000 0.000
================================
p=1
q=3
================================
0.000 0.000 3.000 0.000
0.000 2.000 0.000 0.000
1.000 0.000 3.000 0.000
0.000 0.000 0.000 0.000
Вложения
Тип файла: txt output.txt (104 байт, 125 просмотров)
Тип файла: txt data.txt (26 байт, 128 просмотров)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 05.12.2011, 11:32   #8
zmey1
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 30
По умолчанию

Цитата:
n=4
m=4
1.000 0.000 3.000 0.000
0.000 2.000 0.000 0.000
0.000 0.000 3.000 0.000
0.000 0.000 0.000 0.000
================================
p=1
q=3
================================
0.000 0.000 3.000 0.000
0.000 2.000 0.000 0.000
1.000 0.000 3.000 0.000
0.000 0.000 0.000 0.000
У меня Турбо Паскаль. И когда ввожу размерность матрицы, то прога выводит все нули и записывает в файл все нули.
zmey1 вне форума Ответить с цитированием
Старый 05.12.2011, 22:44   #9
zmey1
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 30
По умолчанию

Ну подскажите в чем проблема ??? Люди
zmey1 вне форума Ответить с цитированием
Старый 06.12.2011, 15:52   #10
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
const fn='data.txt';
var m,n,i,j,e:integer;
 Mt:array[1..100,1..100] of real;
 f:text;
 s,buf:string
 p,q:integer;
begin
write('n=');readln(n);
write('m=');readln(m);
for i:=1 to n do
for j:=1 to m do
Mt[i,j]:=0;
assign(f,fn);
reset(f);
while not eof(f) do begin
readln(f,s);
buf:=copy(s,1,pos(' ',s)-1);
val(buf,i,e);
delete(s,1,pos(' ',s));
buf:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));{вот это пропустил}
val(buf,j,e);
val(s,mt[i,j],e);
end;
close(f);
for i:=1 to n do begin
for j:=1 to m do
write(Mt[i,j]:6:3);
writeln;
end;
writeln('================================');
write('p=');readln(p);
write('q=');readln(q);
For i:=1 to m do
begin
Mt[100,i]:=mt[p,i];
mt[p,i]:=mt[q,i];
mt[q,i]:=mt[100,i];
end;
writeln('================================');
assign(f,'output.txt');
rewrite(f);
for i:=1 to n do begin
for j:=1 to m do begin
write(f,Mt[i,j]:6:3);
write(Mt[i,j]:6:3); end;
writeln;
writeln(f);
end;
close(f);
readln;
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, матрицы Liam_ Помощь студентам 2 28.04.2011 13:40
матрицы. паскаль Dean Помощь студентам 11 21.02.2011 17:48
матрицы(Паскаль) mig44 Помощь студентам 3 04.06.2010 07:36
Матрицы паскаль Анжелика1988 Помощь студентам 2 02.11.2009 15:37
Паскаль. МАТРИЦЫ Азарт Помощь студентам 8 04.04.2009 21:08