 
        
        Отчёт№5_5
.doc
ГУАП
КАФЕДРА М-2
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
| Доц., к.т.н. | 
 | 
 | 
 | С.Л.Козенко | 
| должность, уч. степень, звание | 
 | подпись, дата | 
 | инициалы, фамилия | 
| ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №4 | 
| ОБРАБОТКА МАССИВОВ ДАННЫХпо дисциплине «Информатика» | 
| 
 | 
РАБОТУ ВЫПОЛНИЛ
| СТУДЕНТ ГР. | 2220 | 
 | 
 | 
 | М.Степанов | 
| 
 | 
 | 
 | подпись, дата | 
 | инициалы, фамилия | 
Санкт-Петербург
2012
1. Цель работы:
1) Ознакомление с правилами и приёмами обработки массивов данных;
2) Освоение приёмов алгоритмизации типовых вычислительных задач;
3) Приобретение навыков программирования задач на языке СИ;
4) Применение возможностей модульного принципа программирования.
2. Условие:
| № варианта ЛР 4 | Обработка массивов данных с использованием модульного принципа программирования | |
| Процедура | Процедура | |
| 5 | Вычисление значений суммы положительных и суммы отрицательных элементов матрицы. | Вычисление значения следа матрицы. | 
3

 .
Схема алгоритма:
.
Схема алгоритма:


 
	 
	Sotr
	=
	0 
	   SpU
	= U11 
	SP1
	= 0
	 
	        i
	= 0…4 
 
 
 
 
 
	 
	        i
	= 0…4 
	        i
	= 1…4 
 
	 
	 
	SpU
	= SpU + Uij 
	
	 
	         j
	= 0…4 
	         j
	= 0…4 
 
 
	Нет 
	
	 
	              i 
	 
	 
 
 
	Нет 
	
	 
	Да 
	
	 
	 
 
 
	 
	Sotr1=Sotr1
	+ Uij 
	Да 
	
	 
 
	 
 
 
 
 
	 
	 SP1
	= SP1 + Uij 
 
	 
	              j
	
	 
	              j 
 
	 
	              i 
 
 
	 
	              i 
 
 
 
	Рис.1
	Схема
	алгоритма функции Sled(U)

 
	
	 
	Рис.2
	Схема
	алгоритма функции SummaP(U) 
	Рис.3
	Схема
	алгоритма функции SummaOtr(U)
  
	Начало 
	
	 
	        j
	= 0…4 
	        i
	= 0…4 
	         j
	= 0…4 
	        i
	= 0…4 
	              j 
	Bij
	=
	1 - i 
	Bij
	= 1 + 2j 
	              i
	
	 
	              j 
	              i
	
	 
	 
 
	 
 
 
 
 
 
 
 
	 
	 
 
 
 
 
 
 
	 
 
 
 
 
 
	 
 
	 
 
                                                     
 
	    SpB
	= Sled(B) 
	 
 
 
 
 
	Нет 
	
	 
	 

 
 
	Да 
	
	 
	a=2 
	
	 
	a=1 
 
	SP
	= SummaP(B) 
	 
 
 
	SP
	= SummaP(A) 
	Sotr=SummaOtr(A) 
	 
 
 
 
 
	Sotr=SummaOtr(A)
 
	 
 
 
 
 
	 
	Нет 
	
	 
 
	 
	Да 
	
	 
	SpA
	= Sled(A) 
 

 
 
 Рис.4
 Схема
алгоритма основного блока.
                                                                     
                         Рис.4
 Схема
алгоритма основного блока.
4. Текст программы на языке СИ.
# include <stdio.h>
# include <math.h>
# include <conio.h>
# define m 5
# define n 5
int main ()
{ extern
float Sled( float U[m][n] );
extern
float SummaP( float U[m][n] );
extern
float SummaOtr( float U[m][n] );
float A[m][n], B[m][n];
int i,j,a;
float SpA , SpB, Sotr, SP;
printf("Wwedite matricu A \n");
for (i=0; i<m; i++)
{for (j=0; j<n; j++)
{ scanf("%f",&A[i][j]); }}
printf("Massiv B:\n");
for (i=0; i<m; i++)
{ for (j=0; j<n; j++)
{ if (i != j) B[i][j] = 1 + 2*j;
else B[i][j] = 1 - j;
printf(" %5.1f",B[i][j]);}
printf("\n");}
SpA = Sled(A);
printf("\n SpA= %10.4f",SpA);
SpB = Sled(B);
printf("\n SpB= %5.1f",SpB);
Sotr=0;
SP=0;
a=0;
if (SpA > SpB)
{ SP = SummaP(A);
Sotr = SummaOtr(A);
a=1;}
else
{a=2;
SP = SummaP(B);
Sotr = SummaOtr(B);}
if (a==1) printf ("\n V massive A");
else printf ("\n V massive B");
printf("\n Sotr= %10.4f",Sotr);
printf("\n SP= %10.4f",SP);
getch(); }
float Sled( float U[m][n])
{ int i; float SpU;
SpU = U[0][0];
for (i=1; i<m; i++)
{ SpU = SpU + U[i][i];}
return (float) SpU;
}
float SummaP( float U[m][n])
{ int i, j; float SP1;
SP1=0;
for (i=0; i<m; i++)
{ for (j=0; j<n; j++)
{ if (U[i][j]>0) SP1 = SP1 + U[i][j] ;}}
return(float) SP1;
}
float SummaOtr( float U[m][n])
{ int i, j; float Sotr1;
Sotr1=0;
for (i=0; i<m; i++)
{ for (j=0; j<n; j++)
{ if (U[i][j]<0) //SP = SP + U[i][j] ;
Sotr1 = Sotr1 + U[i][j]; }}
return(float) Sotr1; }
5. Скриншот результатов.


6. Выводы:
1) Ознакомился с правилами и приёмами обработки массивов данных;
2) Освоил приёмы алгоритмизации типовых вычислительных задач;
3) Приобрёл навыки программирования задач на языке СИ;
4) Применил возможности модульного принципа программирования.
