Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчёт№5_5

.doc
Скачиваний:
58
Добавлен:
02.04.2015
Размер:
1.83 Mб
Скачать

ГУАП

КАФЕДРА М-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) Применил возможности модульного принципа программирования.