Матрицы, Помогите доделать программу. Нужно срочно к среде! |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Матрицы, Помогите доделать программу. Нужно срочно к среде! |
Mr. Anderson |
18.12.2006 0:46
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: Александр Репутация: 0 |
Цитата Сформировать матрицу 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 - 18.12.2006 12:56 Прикрепленные файлы MATRIXX.PAS ( 3.27 килобайт ) Кол-во скачиваний: 141 -------------------- Каждое начало имеет свой конец
|
мисс_граффити |
18.12.2006 15:00
Сообщение
#2
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
создать еще одну матрицу (есть matr, сделай matr1)
и, например, в ней получать вторую... а matr переделать в третью. или изначально записать в них одинаковые значения, потом из одной получить вторую, из другой третью. а еще можно через подпрограммы... не создавая доп. матрицу. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Mr. Anderson |
18.12.2006 19:59
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: Александр Репутация: 0 |
Цитата А как можно через подпрограмму. Я попытался составить. Выдаёт ошибку. program matrixa; Прикрепленные файлы matrixa.pas ( 3.71 килобайт ) Кол-во скачиваний: 133 -------------------- Каждое начало имеет свой конец
|
мисс_граффити |
18.12.2006 20:19
Сообщение
#4
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
а прочитать, что за ошибка - не судьба?
Unknown Identifier, то есть компилятор не знает, что такое (выделено жирным) printmatrix(matrix,n); ты же должен вызывать процедуру для конкретной матрицы! Сообщение отредактировано: мисс_граффити - 18.12.2006 21:03 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Mr. Anderson |
18.12.2006 20:35
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: Александр Репутация: 0 |
Исправил, но всё равно выдаёт ошибку. Error 88: "(" expected. после matr в строчке printmatrix(matr,n);
Сообщение отредактировано: Mr. Anderson - 18.12.2006 20:40 -------------------- Каждое начало имеет свой конец
|
мисс_граффити |
18.12.2006 21:02
Сообщение
#6
|
просто человек Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
так, как у тебя сейчас написано, matr - это тип.
А где переменная такого типа, с которой ты работаешь? Тебе ведь не приходит в голову требовать, чтобы посчитался sin(real)? вот и здесь то же самое. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Mr. Anderson |
18.12.2006 22:23
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 21 Пол: Мужской Реальное имя: Александр Репутация: 0 |
Обьясните, пожалуйста, попроще
-------------------- Каждое начало имеет свой конец
|
volvo |
18.12.2006 22:31
Сообщение
#8
|
Гость |
Попроще?
Ну, вот тебе попроще... Что будет, если я напишу: var? |
Текстовая версия | 23.04.2024 20:32 |