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

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

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

 
 Ответить  Открыть новую тему 
> Операции над матрицами, Применение процедуры и функции
Earl_Ananiy
сообщение 28.01.2010 3:46
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.01.2010 6:16
Сообщение #2


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

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

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


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


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


Гость






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


Новичок
*

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

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


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

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


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


Гость






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


Новичок
*

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

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


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

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


Я исправил но все равно показывает такую же ошибку
Прикрепляю исправленный файл.Прикрепленный файл  KURS011.PAS ( 1.06 килобайт ) Кол-во скачиваний: 324
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.01.2010 14:43
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.01.2010 14:44
Сообщение #8


Гость






Цитата
Я исправил
Исправил, да не везде. У тебя X, Y, Z тоже описаны как Integer, а ты в них хочешь записать вещественные числа.
 К началу страницы 
+ Ответить 
Earl_Ananiy
сообщение 28.01.2010 16:06
Сообщение #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 килобайт ) Кол-во скачиваний: 315
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.01.2010 16:58
Сообщение #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 
 К началу страницы 
+ Ответить 
Earl_Ananiy
сообщение 28.01.2010 17:12
Сообщение #11


Новичок
*

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

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


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

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

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


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

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

 

- Текстовая версия 18.07.2025 0:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"