Отчёт№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. Текст программы на языке СИ.
# 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) Применил возможности модульного принципа программирования.