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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2010, 11:15   #1
viper52rus
студент
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 13
Восклицание задача..сижу на экзамене ..спасайте

Создать модуль ,содержащий подпрограммы:
1.Определение суммы элементов каждого столбца квадратной матрицы.
2.Определение суммы элементов главной диаганали квадратной матрицы.

Написать программу в которой требуется сформировать двумерный массив размерности 4*4.Определить номер столбца массива,в котором сумма элементов будет меньше суммы главной диаганали.Использовать созданный модуль.
viper52rus вне форума Ответить с цитированием
Старый 30.06.2010, 11:26   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

язык какой
NiCola999 вне форума Ответить с цитированием
Старый 30.06.2010, 11:30   #3
viper52rus
студент
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 13
По умолчанию

я зык программирования делфи(консолька)
viper52rus вне форума Ответить с цитированием
Старый 30.06.2010, 11:31   #4
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

код модуля
Код:
Unit1;
interface 
function summa_stolbca(n:integer, matr:array [1..20, 1..20] of real, index:integer):real;
function summa_diag(n:integer, matr:array [1..20, 1..20] of real):real;

implementation 

function summa_stolbca
var i:integer;
     s:real;
begin
s:=0;
for i:=1 to n do s:=s+matr[i,index];
result:=s;
end;

function summa_diag
var i:integer;
     s:real;
begin
s:=0;
for i:=1 to n do s:=s+matr[i,i];
result:=s;
end;
end.
Цитата:
Написать программу в которой требуется сформировать двумерный массив размерности 4*4.Определить номер столбца массива,в котором сумма элементов будет меньше суммы главной диаганали.Использовать созданный модуль
программа
Код:
Uses crt, Unit1;

var index_st,i,j:integer;
     matrica:array [1..4,1..4] of real;
    sum_st,sum_d:real;
    flag:boolean;
begin
randomize;
for i:=1 to 4 do
for j:=1 to 4 do
matrica[i,j]:=random(10);//случайное число в диапазоне 0-10

sum_d:=summa_diag(4, matrica);

flag=false;
j:=1;
while(!flag)and(j<=4) do
begin
sum_st=summa_stolbca(4, matrica, j);
if sum_st<sum_d then
        begin 
        flag:=true;
        index_st:=j;
        end;
j:=j+1;
end;
if flag then writeln ('v stolbce', index_st,'summa elementov menshe')
else writeln('net takih stolbcov');

end.

Последний раз редактировалось Stilet; 30.06.2010 в 12:31.
Snejnaya вне форума Ответить с цитированием
Старый 30.06.2010, 11:49   #5
viper52rus
студент
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 13
По умолчанию

всё я тоже модуль создал но прогу так и немогу..помогите либо с первым модулем либо с этим

Код:
unit wet_cunt; 

interface 

cоnst cMatrixSize=4; 

Type TMatrixType=integer; 
TSquareMatrix=array[1..cMatrixSize, 1..cMatrixSize] of TMatrixType; 

function SumColumn(a:TSquareMatrix; Column:integer):TMatrixType; 
function SumDiagonal(a:TSquareMatrix):TMatrixType; 

implementation 

function SumColumn(a:TSquareMatrix; Column:integer):TMatrixType; 
var j:integer; 
//result:TMatrixType; 
begin 
result:=0; 
for j:=1 to cMatrixSize do 
result:=result+a[Column,j]; 
//SumColumn:=result; 
end; 

function SumDiagonal(a:TSquareMatrix):TMatrixType; 
var j:integer; 
//result:TMatrixType; 
begin 
result:=0; 
for j:=1 to cMatrixSize do 
result:=result+a[j,j]; 
//SumDiagonal:=result; 
end; 

end.
viper52rus вне форума Ответить с цитированием
Старый 30.06.2010, 12:04   #6
viper52rus
студент
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 13
По умолчанию

flag:boolean;

ЧТО ЭТО ТАКОЕ??И ЧТО ОН ДЕЛАЕТ?
viper52rus вне форума Ответить с цитированием
Старый 30.06.2010, 12:04   #7
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

модули по смыслу идентичны.Разница лишь в том, что размер матрицы(4) я передаю в модуль, как параметр, а ты определяешь размер матрицы в модуле. Код программы есть выше. Если захочешь использовать свой модуль, просто поменяешь вызов функции.
т.е. вместо предложенной мной
sum_st:=summa_stolbca(4, matrica, j);
нужно будет
sum_st:=SumColumn(matrica, j)

и вместо
sum_d:=summa_diag(4, matrica);
просто
sum_d:=SumDiagonal(matrica);

Я склоняюсь к варианту, что размер матрицы (4) нужно передавать в модуль, как параметр, так как в задаче сказано, что именно программа формирует матрицу 4*4 - есть повод думать, что модуль должен уметь работать и с матрицами других размеров.
Snejnaya вне форума Ответить с цитированием
Старый 30.06.2010, 12:12   #8
viper52rus
студент
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Snejnaya Посмотреть сообщение
программа
[CODE]Uses crt, Unit1;



sum_d:=summa_diag(4, matrica);

flag=false;
j:=1;
while(!flag)and(j<=4) do
begin
sum_st=summa_stolbca(4, matrica, j);
i/CODE]
вот этот отрезок мне не понятен..поясни плиз,а то препод докапается
viper52rus вне форума Ответить с цитированием
Старый 30.06.2010, 12:29   #9
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

while(!flag)and(j<=4) do

здесь
while (not flag) and (j<=4) do

Код:
while(not flag)and(j<=4) do
begin
sum_st=summa_stolbca(4, matrica, j);
if sum_st<sum_d then
        begin 
        flag:=true;
        index_st:=j;
        end;
j:=j+1;
end;
if flag then writeln ('v stolbce', index_st,'summa elementov menshe')
else writeln('net takih stolbcov');

end.
в данном цикле вызывается подпрограмма из Unit1
и если сумма столбца < сумма диагонали - то флажок меняем и выходим из цикла и печатаем в каком столбце, иначе выходим из цикла когда j станет 5 и выведем, что нет таких столбцов!
Программирование - это великое искусство... Такое же как например и живопись!

Последний раз редактировалось Stilet; 30.06.2010 в 12:40.
Rusl92 вне форума Ответить с цитированием
Старый 30.06.2010, 12:32   #10
viper52rus
студент
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 13
По умолчанию

sum_d:=summa_d(4, matrica);

вот эту строку подчеркивает

[Pascal Error] Project1.dpr(19): E2034 Too many actual parameters
[Pascal Error] Project1.dpr(21): E2029 ':=' expected but '=' found
[Pascal Error] Project1.dpr(25): E2029 ':=' expected but '=' found
[Pascal Error] Project1.dpr(25): E2010 Incompatible types: 'Integer' and 'Array'

Последний раз редактировалось viper52rus; 30.06.2010 в 12:34. Причина: код ошибки
viper52rus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сижу на экзамене. Нужна помощь Grisha248 Помощь студентам 0 23.06.2009 09:08
Срочно нужна помощь в написание задачи Сижу на экзамене gector Помощь студентам 2 26.05.2009 15:41
Срочно нужна помощь в написании программы,сижу на экзамене) KirillG Паскаль, Turbo Pascal, PascalABC.NET 2 26.05.2009 14:42
Помогите, пожалуйста, решить задачу на Паскале! Сижу на экзамене Олькавка Помощь студентам 1 25.10.2008 14:23