| 
	
		| 
	
	
	
		| Автор | Сообщение |  
		| [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 |     |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  
 
 |  |