Автор |
Сообщение |
[K.M.P.]-Sh1ft

Зарегистрирован: 18.04.2010 Сообщения: 734 Откуда: Россия, Кемерово |
|
Паскаль |
|
Есть проблема, нужно написать програмку, которая бы выщитывала сумму элементов двумерного массива, не попавших в интервал [a,b];
 |
 |
program massive;
uses CRT;
type mas2 = array [1..10, 1..10] of real;
var x:mas2;
s:real;
a,b,i,j,n,m:byte;
procedure input (var x:mas2; var n:byte; var m:byte);
Begin
writeln ('Введите размерность массива :');
write ('Количество строк= ');
readln (n);
write ('Количество столбцов= ');
readln(m);
for i:=1 to n do
begin
for j:=1 to m do
Begin
write ('x[',i,',',j,']=');
readln (x[i,j]);
End;
end;
End;
procedure output (x:mas2; n:byte; m:byte);
var i,j:byte;
Begin
writeln ('Размерность массива :',n,'x',m);
for i:=1 to n do
for j:=1 to m do
writeln ('X [',i,',',j,']=',x[i,j]:6:0);
End;
procedure sum (x:mas2; n:byte; m:byte; var s:real);
Begin
s:=0;
for i:=1 to n do
for j:=1 to m do
if (x[i,j]<a) and (x[i,j]>b) then
s:=s+x[i,j];
End;
BEGIN
clrscr;
input (x,n,m);
output (x,n,m);
writeln ('Ввелите границы интервала: ');
writeln ('OT a= ');
readln (a);
writeln ('До b= ');
readln (b);
sum (x,n,m,s);
writeln ('Сумма = ',s:6:0);
readln;
END.
|
Проблема в том, что сумму уперто выщитывает нулевую
В чем косяк? 
|
|
Пн Май 30, 2011 3:00 pm |
|
 |
John Rambo

Зарегистрирован: 10.10.2009 Сообщения: 3303 Откуда: Красноярск |
|
|
Пн Май 30, 2011 3:38 pm |
|
 |
silencer
Зарегистрирован: 27.01.2010 Сообщения: 1296
|
|
|
|
а почему сумма имеет тип real? с обычными числами не пробовал?
|
|
Пн Май 30, 2011 3:43 pm |
|
 |
silencer
Зарегистрирован: 27.01.2010 Сообщения: 1296
|
|
|
|
и вобще каким хреном у тебя параметры а и б попадают в процедуру суммы? разве их передавать не надо?
(смутно вспоминая трубо паскаль на фоне алкогольного бреда первых курсов...)
|
|
Пн Май 30, 2011 3:53 pm |
|
 |
[K.M.P.]-Sh1ft

Зарегистрирован: 18.04.2010 Сообщения: 734 Откуда: Россия, Кемерово |
|
|
|
Поскольку массив вещественного типа, то и сумма будет вещественного типа real)
а и б - это границы интервала, будь они в процедуре или в самом теле программы - сути не имеет =/
|
|
Пн Май 30, 2011 4:20 pm |
|
 |
Lays

Зарегистрирован: 02.07.2009 Сообщения: 1060
|
|
|
|
Создать чтоле тему с вопросами по моему курсачу, по механике =D
_________________ *** Siras killed Lays with a headshot from Zombie Infection **
Lays : mi ved' no kill?!
Siras : tochno, sorry
AHDEP : a ya Admiral
 |
|
Пн Май 30, 2011 4:21 pm |
 |
 |
[K.M.P.]-Sh1ft

Зарегистрирован: 18.04.2010 Сообщения: 734 Откуда: Россия, Кемерово |
|
|
|
У меня такое чувство, что косяк в объявлении условия не принадлежности к интервалу, так как если его убрать, то выщитывает общую сумму и выводит результат, а вот с ним сумма нулевая =/ хотя объявление условия я так обычно и использовал, и всё до этих пор работало на ура 
|
|
Пн Май 30, 2011 4:24 pm |
|
 |
[K.M.P.]-Sh1ft

Зарегистрирован: 18.04.2010 Сообщения: 734 Откуда: Россия, Кемерово |
|
|
|
 |
 |
Создать чтоле тему с вопросами по моему курсачу, по механике =D |
я б не создавал, если бы сроки не поджимали Как обычно, дотянешь до последнего...)
|
|
Пн Май 30, 2011 4:27 pm |
|
 |
Lays

Зарегистрирован: 02.07.2009 Сообщения: 1060
|
|
|
|
 |
 |
 |
 |
Создать чтоле тему с вопросами по моему курсачу, по механике =D |
я б не создавал, если бы сроки не поджимали Как обычно, дотянешь до последнего...) |
Да я ничего против не имею, считаю что это вполне нормально возвать к адекватной стороне форума с просьбой о помощи, сам так много раз делал, правд не по учебе
_________________ *** Siras killed Lays with a headshot from Zombie Infection **
Lays : mi ved' no kill?!
Siras : tochno, sorry
AHDEP : a ya Admiral
 |
|
Пн Май 30, 2011 4:39 pm |
 |
 |
silencer
Зарегистрирован: 27.01.2010 Сообщения: 1296
|
|
|
|
 |
 |
Поскольку массив вещественного типа, то и сумма будет вещественного типа real)
а и б - это границы интервала, будь они в процедуре или в самом теле программы - сути не имеет =/ |
ну так я и говорю - поставь и размер, и сумму типа Int. это на всякий случай, потом переставишь если так нужно.
потом вот эта строчка мне не нравится:
 |
 |
sum (x,n,m,s); |
Нахрен в вызове s?? убери его, добавь эти а и б и посмотрим шо будет.
|
|
Пн Май 30, 2011 9:09 pm |
|
 |
[K.M.P.]-Sh1ft

Зарегистрирован: 18.04.2010 Сообщения: 734 Откуда: Россия, Кемерово |
|
|
|
если интервал будет в процедуре, суть будет та же самая)
а в строчке : sum (x,n,m,s); s учавствует не в роле вызова, а этой строчкой (x,n,m,s); как бы адаптирует переменные из процедуры, непосредственно к самой программе =/
Но я кажется понял в чем косяк....
 |
 |
if (x[i,j]<a) and (x[i,j]>b) then |
Ток ща доперло, что таком условию ни одно число удовлетворять не может) Получается, если берем за границы интервала 3 и 4, то условие получается x<3 u x>4...
Спасибо всем, отдельное спасибо silencer`у 
|
|
Вт Май 31, 2011 4:42 am |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|
|