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

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

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

 
 Ответить  Открыть новую тему 
> Операции над матрицами, Применение процедуры и функции
сообщение
Сообщение #1


Новичок
*

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

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


Разработать блок-схему алгоритма и составить программу для решения задачи с использованием подпрограмм. Условия, ‴Заданы три матрицы A(M,M), B(N,N), C(M,M). Найти минимальное из трех чисел X, Y, Z, которые равны сумме элементов неглавной диагонали матриц A, B, C соответственно‴. Определить операции, которые необходимо оформить в виде подпрограммы и выбрать тип подпрограммы – процедуру или функцию. Обосновать свой выбор. Определить входные и выходные параметры подпрограмм.

Добавлено через 7 мин.
Пожалуйста проверьте мою программу, а то не могу найти ошибки.

program Kurs1;
uses crt;
type Mat=array[1..50,1..50] of real;
var A,B,C:Mat;
x,y,z:integer;
i,j:integer;
m,n:integer;

procedure F(D:Mat;R:integer);
begin
for i:=1 to R do
for j:=1 to R do
D[i,j]:=random(50);
end;

procedure G(D:Mat;R:integer);
begin
for i:=1 to R do
begin
for j:=1 to R do
write(D[i,j]:5);
writeln;
end;
end;

function H(D:Mat;R:integer):real;
var S:integer;
begin
S:=0;
for i:=1 to R do
for j:=1 to R do begin
if i+j-1=R then S:=S+D[i,j];
end;
H:=S;
end;

function Min(x,y:integer):integer;
begin
if x>y then Min:=y else Min:=x
end;

begin
clrscr;
randomize;
writeln('m=');
readln(m);
writeln('n=');
readln(n);

writeln;

F(A,m);
F(B,n);
F(C,m);

writeln('Matrica A');
G(A,m);
writeln;

writeln('Matrica B');
G(B,n);
writeln;

writeln('Matrica C');
G(C,m);
writeln;

x:=H(A,m);
y:=H(B,n);
z:=H(C,m);

writeln('x= ',x,' ','y= ',y,' ','z= ',z);

writeln;

writeln('min= ',Min(Min(x,y),z));
readln;

end.

Тэги!.. Lapp
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

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

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


Цитата(Earl_Ananiy @ 28.01.2010 3:46) *
Пожалуйста проверьте мою программу, а то не могу найти ошибки.
Не раньше, чем ты потрудишься назвать сами ошибки..
Что не так?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
Пожалуйста проверьте мою программу, а то не могу найти ошибки.
Компилятор покажет твои ошибки. Нажми F9, и увидишь их... Хинт: нельзя присваивать значение Integer <- Real... Обратно, Real <- Integer, можно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


Цитата(Lapp @ 28.01.2010 6:16) *

Не раньше, чем ты потрудишься назвать сами ошибки..
Что не так?


Выдает ошибку Error 26: Type mismatch.Прикрепленный файл  KURS01.PAS ( 1.07 килобайт ) Кол-во скачиваний: 442
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Я тебе сказал, в чем ошибка. Исправляй...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


Цитата(volvo @ 28.01.2010 14:02) *

Я тебе сказал, в чем ошибка. Исправляй...


Я исправил но все равно показывает такую же ошибку
Прикрепляю исправленный файл.Прикрепленный файл  KURS011.PAS ( 1.06 килобайт ) Кол-во скачиваний: 442
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Уникум
*******

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

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


Цитата(Earl_Ananiy @ 28.01.2010 14:34) *
Я исправил но все равно показывает такую же ошибку
Ты не все исправил. Вот тут еще:
 x:=H(A,m);
y:=H(B,n);
z:=H(C,m);
- функции типа Real, их нужно как-то привести к целым: либо округлить (Round), либо отсечь (Trunc).
А ты не можешь сам найти строку, в которой ошибка? Компилятор тебе не показывает ее? Так было бы намного быстрее.. Какой у тебя компилятор?



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


Гость






Цитата
Я исправил
Исправил, да не везде. У тебя X, Y, Z тоже описаны как Integer, а ты в них хочешь записать вещественные числа.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


Цитата(Lapp @ 28.01.2010 14:43) *

Ты не все исправил. Вот тут еще:
 x:=H(A,m);
y:=H(B,n);
z:=H(C,m);
- функции типа Real, их нужно как-то привести к целым: либо округлить (Round), либо отсечь (Trunc).
А ты не можешь сам найти строку, в которой ошибка? Компилятор тебе не показывает ее? Так было бы намного быстрее.. Какой у тебя компилятор?

Turbo Pascal 7.0

Добавлено через 15 мин.
Цитата(volvo @ 28.01.2010 14:44) *

Исправил, да не везде. У тебя X, Y, Z тоже описаны как Integer, а ты в них хочешь записать вещественные числа.

Заработал. Только выдает нулевую матрицу все 0Прикрепленный файл  KURS011.PAS ( 1.08 килобайт ) Кол-во скачиваний: 453
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Уникум
*******

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

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


Цитата(Earl_Ananiy @ 28.01.2010 16:06) *
Turbo Pascal 7.0
Так он прекрасно ставит курсор прямо на то место, где ошибка..

Цитата
Заработал. Только выдает нулевую матрицу все 0
Естественно )). Ты же не передаешь заполненную матрицу из процедуры назад. Используй var в процедуре F. Вот так:
procedure F(var D:Mat;R:integer);




--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


Цитата(Lapp @ 28.01.2010 16:58) *

Так он прекрасно ставит курсор прямо на то место, где ошибка..

Естественно )). Ты же не передаешь заполненную матрицу из процедуры назад. Используй var в процедуре F. Вот так:
procedure F(var D:Mat;R:integer);


Спасибо огромное!!! Все заработало!!! Ур-р-ра!!!Прикрепленный файл  KURS010.PAS ( 1.08 килобайт ) Кол-во скачиваний: 461
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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