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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2010, 12:41   #11
mMAg
Форумчанин
 
Аватар для mMAg
 
Регистрация: 11.08.2009
Сообщений: 433
По умолчанию

Ну, у снежной есть ошибки. Её код можешь не пытаться использовать. Ругается, потому что массивы в качестве параметров передавать нельзя. Нужно переопределить тип и его передавать в качестве входного параметра в функцию, т.е. вместо
Код:
function summa_diag(n:integer, matr:array [1..20, 1..20] of real):real;
должно быть
Код:
type matrix = array [1..20,1..20] of real;
function summa_diag(n:integer, matr:matrix):real;
mMAg вне форума Ответить с цитированием
Старый 30.06.2010, 12:45   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Snejnaya
Поправлю твой коктейль Молотова, ато парнишка не сдаст.
Модуль:
Код:
unit Unit2;
interface
 type tmatr=array [1..20, 1..20] of real;
function summa_stolbca(n:integer; matr:tmatr; index:integer):real;
function summa_diag(n:integer; matr:tmatr):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.
Программа:
Код:
program Project1;

uses crt,
  Unit2;

var index_st,i,j:integer;
     matrica:tmatr;
    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(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');
 readln;
end.
Проверил - результ выдает справно.

Цитата:
Ругается, потому что массивы в качестве параметров передавать нельзя
И не только поэтому.
I'm learning to live...

Последний раз редактировалось Stilet; 30.06.2010 в 12:48.
Stilet вне форума Ответить с цитированием
Старый 30.06.2010, 12:46   #13
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

............
Программирование - это великое искусство... Такое же как например и живопись!

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

при запуске пишет exception EInOutError in module project2.exe
viper52rus вне форума Ответить с цитированием
Старый 30.06.2010, 13:19   #15
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

viper52rus
про flag тебе написали - это переменная булевского типа, которая проверяет, есть ли вообще в матрице такой столбец. Если столбца нет, то выводится соответствующее сообщение. Если таких столбцов несколько, выведется только первый из них.


По поводу ошибок:

1)[Pascal Error] Project1.dpr(21): E2029 ':=' expected but '=' found
[Pascal Error] Project1.dpr(25): E2029 ':=' expected but '=' found
Цитата:
flag=false;
Цитата:
sum_st=summa_stolbca(4, matrica, j);
здесь просто вместо = нужен оператор присваивания := (flag:=false), исправь опечатки.


Что касается ошибок

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


сдается мне, ты взял свой модуль, а мою программу оставил без исправлений. ищи, где у тебя идет обращение к функции модуля и проверяй, все ли параметры правильно передаются.

Цитата:
type matrix = array [1..20,1..20] of real;
ну по идее так и нужно, но я почему-то думала, что и без этого заведется.

Последний раз редактировалось Snejnaya; 30.06.2010 в 13:22.
Snejnaya вне форума Ответить с цитированием
Старый 30.06.2010, 13:20   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
EInOutError
а как ты запускаешь?
Оба файла должны лежать в одной папке
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2010, 13:35   #17
viper52rus
студент
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 13
По умолчанию

sum_d:=summa_diag(matrica , 4 );
пишет ошибку [Pascal Error] Project2.dpr(17): E2034 Too many actual parameters

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

Цитата:
sum_d:=summa_diag(4 , matrica);
надо просто поменять их местами. Чтобы в вызове функции параметры стояли в том же порядке, что и в модуле, где объявляется функция.
Snejnaya вне форума Ответить с цитированием
Старый 30.06.2010, 13:53   #19
viper52rus
студент
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 13
По умолчанию

всё исправил сдал...всем спасибо век не забуду!
viper52rus вне форума Ответить с цитированием
Старый 30.06.2010, 13:54   #20
viper52rus
студент
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 13
По умолчанию

всё сдал исправил спасибо..
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