IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Матрицы, Помогите доделать программу. Нужно срочно к среде!
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


unsure.gif
Цитата

Сформировать матрицу 7х7 с помощью функции Random. Из неё получить две матрицы. Первая получится перестановкой строк в порядке возрастания средних арифметических элементов в каждой строке. Вторая получится перестановой столбцов в порядке возрастания средних арифметических элементов в каждом столбце. Результат получить в текстовом файле. Проблема в том, что вторая матрица получается перестановкой столбцов первой матрицы (с переставленными строками), а не исходной. Что нужно добавить или исправить в программе? Заранее благодарю.


Код

program matrix;
uses crt;
const n=7;
      name='C:\neo.out';
      lin='*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*';
var fiogr:string[50];
    neo:text;
    sumstr,sumst:integer;
    srsumstr,srsumst:real;
    i,j:byte;
    t,f:boolean;
    v,u:real;
    c,d:shortint;
    a,b:array[1..n] of real;
    matr:array[1..n,1..n] of shortint;
    begin
    clrscr;
    assign(neo,name);
    rewrite(neo);
    writeln('Laboratornaya rabota 7');
    writeln('Vvedite FIO, gruppu');
    readln(fiogr);
    writeln('Zadacha na dvujmerniy massiv');
    writeln(neo,' Rezultat vichisleniy sojraneni v failie ', name);
    writeln(neo,'     Laboratornaya rabota 7');
    writeln(neo,'  Zadacha na dvujmerniy massiv');
    writeln(neo,lin);
    writeln(neo,fiogr);
    writeln(neo,lin);
    randomize;
    writeln(neo,'       Isjodnaya matritsa');
    for i:=1 to n do
    for j:=1 to n do
    matr[i,j]:=random(99)-49;
    for i:=1 to n do begin
    for j:=1 to n do begin
    write(neo,'  ',matr[i,j]:3);
    end;
    writeln(neo);
    end;
    writeln(neo,lin);
    writeln(neo,'  Sriedniye arifmieticheskiye strok');
    for i:=1 to n do begin
    sumstr:=0;
    for j:=1 to n do
    sumstr:=sumstr+matr[i,j];
    srsumstr:=sumstr/n;
    a[i]:=srsumstr;
    write(neo,'  a[',i,']=',a[i]:6:2);
    if i mod 4 =0 then writeln(neo);
    end;
    writeln(neo);
    writeln(neo,lin);
    writeln(neo,' Orsortirovanniy massiv iz srednij arifmeticheskij');
    writeln(neo,'             eliemientov strok');
    repeat
    t:=true;
    for i:=1 to n-1 do
    if a[i]>a[i+1] then
    begin
    for j:=1 to n do begin
    c:=matr[i,j];
    matr[i,j]:=matr[i+1,j];
    matr[i+1,j]:=c;
    end;
    u:=a[i];
    a[i]:=a[i+1];
    a[i+1]:=u;
    t:=false;
    end;
    until t;
    for i:=1 to n do
    begin
    write(neo,'  a[',i,']=',a[i]:6:2);
    if i mod 4 =0 then  writeln(neo);
    end;
    writeln(neo);
    writeln(neo,lin);
    writeln(neo,'  Otsortirovannaya matritsa po strokam');
    for i:=1 to n do begin
    for j:=1 to n do begin
    write(neo,'  ',matr[i,j]:3);
    end;
    writeln(neo);
    end;
    writeln(neo,lin);
    writeln(neo,'  Sriedniye arifmieticheskiye stolbtsov');
    for j:=1 to n do begin
    sumst:=0;
    for i:=1 to n do
    sumst:=sumst+matr[i,j];
    srsumst:=sumst/n;
    b[j]:=srsumst;
    write(neo,'  ','b[',j,']=',b[j]:6:2);
    if j mod 4 =0 then writeln(neo);
    end;
    writeln(neo);
    writeln(neo,lin);
    writeln(neo,'  Orsortirovanniy massiv iz srednij arifmeticheskij');
    writeln(neo,'             eliemientov stolbtsov');
    repeat
    f:=true;
    for j:=1 to n-1 do
    if b[j]>b[j+1] then
    begin
    for i:=1 to n do begin
    d:=matr[i,j];
    matr[i,j]:=matr[i,j+1];
    matr[i,j+1]:=d;
    end;
    v:=b[j];
    b[j]:=b[j+1];
    b[j+1]:=v;
    f:=false;
    end;
    until f;
    for j:=1 to n do
    begin
    write(neo,'  ','b[',j,']=',b[j]:6:2);
    if j mod 4 =0 then writeln(neo);
    end;
    writeln(neo);
    writeln(neo,lin);
    writeln(neo,'  Otsortirovannaya matritsa po stolbtsam');
    for i:=1 to n do begin
    for j:=1 to n do begin
    write(neo,'  ',matr[i,j]:3);
    end;
    writeln(neo);
    end;
    close(neo);
    readln;
    end.


Сообщение отредактировано: Mr. Anderson -


Прикрепленные файлы
Прикрепленный файл  MATRIXX.PAS ( 3.27 килобайт ) Кол-во скачиваний: 135


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


создать еще одну матрицу (есть matr, сделай matr1)
и, например, в ней получать вторую... а matr переделать в третью.
или изначально записать в них одинаковые значения, потом из одной получить вторую, из другой третью.
а еще можно через подпрограммы... не создавая доп. матрицу.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Цитата
А как можно через подпрограмму. blink.gif
Я попытался составить. Выдаёт ошибку.


program matrixa;
uses crt;
const n=7;
name='C:\neo.out';
lin='*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*';
var fiogr:string[50];
neo:text;
sumstr,sumst:integer;
srsumstr,srsumst:real;
i,j:byte;
t,f:boolean;
v,u:real;
c,d:shortint;
a,b:array[1..n] of real;
type
matr=array[1..n,1..n] of shortint;

procedure creatematrix(var matrix:matr; const n:byte);
var i,j:byte;

begin
randomize;
for i:=1 to n do
for j:=1 to n do
matrix[i,j]:=random(99)-49;
end;

procedure printmatrix(matrix:matr; const n:byte);
var i,j:byte;

begin
for i:=1 to n do begin
for j:=1 to n do begin
write(neo,' ',matrix[i,j]:3);
end;
writeln(neo);
end;
end;

begin
clrscr;
assign(neo,name);
rewrite(neo);
writeln('Laboratornaya rabota 7');
writeln('Vvedite FIO, gruppu');
readln(fiogr);
writeln('Zadacha na dvujmerniy massiv');
writeln(neo,' Rezultat vichisleniy sojraneni v failie ', name);
writeln(neo,' Laboratornaya rabota 7');
writeln(neo,' Zadacha na dvujmerniy massiv');
writeln(neo,lin);
writeln(neo,fiogr);
writeln(neo,lin);
writeln(neo,' Isjodnaya matritsa');

creatematrix(matrix,n);
printmatrix(matrix,n);

writeln(neo,lin);
writeln(neo,' Sriedniye arifmieticheskiye strok');
for i:=1 to n do begin
sumstr:=0;
for j:=1 to n do
sumstr:=sumstr+matr[i,j];
srsumstr:=sumstr/n;
a[i]:=srsumstr;
write(neo,' a[',i,']=',a[i]:6:2);
if i mod 4 =0 then writeln(neo);
end;
writeln(neo);
writeln(neo,lin);
writeln(neo,' Orsortirovanniy massiv iz srednij arifmeticheskij');
writeln(neo,' eliemientov strok');
repeat
t:=true;
for i:=1 to n-1 do
if a[i]>a[i+1] then
begin
for j:=1 to n do begin
c:=matr[i,j];
matr[i,j]:=matr[i+1,j];
matr[i+1,j]:=c;
end;
u:=a[i];
a[i]:=a[i+1];
a[i+1]:=u;
t:=false;
end;
until t;
for i:=1 to n do
begin
write(neo,' a[',i,']=',a[i]:6:2);
if i mod 4 =0 then writeln(neo);
end;
writeln(neo);
writeln(neo,lin);
writeln(neo,' Otsortirovannaya matritsa po strokam');
for i:=1 to n do begin
for j:=1 to n do begin
write(neo,' ',matr[i,j]:3);
end;
writeln(neo);
end;
writeln(neo,lin);

for i:=1 to n do begin
for j:=1 to n do begin
write(neo,' ',matr1[i,j]:3);
end;
writeln(neo);
end;

writeln(neo,' Sriedniye arifmieticheskiye stolbtsov');
for j:=1 to n do begin
sumst:=0;
for i:=1 to n do
sumst:=sumst+matr[i,j];
srsumst:=sumst/n;
b[j]:=srsumst;
write(neo,' ','b[',j,']=',b[j]:6:2);
if j mod 4 =0 then writeln(neo);
end;
writeln(neo);
writeln(neo,lin);
writeln(neo,' Orsortirovanniy massiv iz srednij arifmeticheskij');
writeln(neo,' eliemientov stolbtsov');
repeat
f:=true;
for j:=1 to n-1 do
if b[j]>b[j+1] then
begin
for i:=1 to n do begin
d:=matr[i,j];
matr[i,j]:=matr[i,j+1];
matr[i,j+1]:=d;
end;
v:=b[j];
b[j]:=b[j+1];
b[j+1]:=v;
f:=false;
end;
until f;
for j:=1 to n do
begin
write(neo,' ','b[',j,']=',b[j]:6:2);
if j mod 4 =0 then writeln(neo);
end;
writeln(neo);
writeln(neo,lin);

printmatrix(matrix,n);

writeln(neo,' Otsortirovannaya matritsa po stolbtsam');
for i:=1 to n do begin
for j:=1 to n do begin
write(neo,' ',matr[i,j]:3);
end;
writeln(neo);
end;
close(neo);
readln;
end.


Прикрепленные файлы
Прикрепленный файл  matrixa.pas ( 3.71 килобайт ) Кол-во скачиваний: 150


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


а прочитать, что за ошибка - не судьба?
Unknown Identifier, то есть компилятор не знает, что такое (выделено жирным)
printmatrix(matrix,n);
ты же должен вызывать процедуру для конкретной матрицы!

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Исправил, но всё равно выдаёт ошибку. Error 88: "(" expected. после matr в строчке printmatrix(matr,n);

Сообщение отредактировано: Mr. Anderson -


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


так, как у тебя сейчас написано, matr - это тип.
А где переменная такого типа, с которой ты работаешь?
Тебе ведь не приходит в голову требовать, чтобы посчитался sin(real)? вот и здесь то же самое.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


wacko.gif Обьясните, пожалуйста, попроще
huh.gif


--------------------
Каждое начало имеет свой конец
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Попроще?

Ну, вот тебе попроще... Что будет, если я напишу:
var
a: integer;
begin
A := byte + integer;
end.

?
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.09.2020 20:01
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name