объектно ориентированное программирование / лабы / lab7
.docxУчреждение «Университет Туран»
Факультет АКТ
Кафедра компьютерная и программная инженерия
Отчёт по лабораторной работе №7
по дисциплине «ООП»
Выполнил
ст. гр. ВТПО-12-1у
Цой А. С.
Проверила
Койшыбаева Ж.Б.
Алматы, 2013
1 ПОСТАНОВКА ЗАДАЧИ
Выполнить задания третьей и четвертой лабораторной работы, оформив каждый пункт задания в виде шаблона функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных не допускается.
2 АНАЛИЗ ПОСТАНОВКИ ЗАДАЧИ
Для выполнения данной работы необходимо описать основную работу программы в виде шаблона функции.
3 ФОРМАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ
1) Дано 6 элементов массива.
Требуется найти индекс минимального элемента и подсчитать сумму модулей элементов массива, находящихся после.
После выше описанных операций задаем интервал и сжимаем массив, заменяя элементы не входящие в интервал, «0».
2) Дана матрица типа 3х4.
Требуется найти все элементы в данной матрице, значение которых равно «3». Ввод элементов в матрицу производится вручную.
4 ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ
Некорректный ввод исходных данных. Данные вводятся формата «int», т.е. вводиться могут только цифры. При вводе неправильного значения программа даст сбой.
5 РЕЗУЛЬТАТЫ
5.1.1 Листинг программы
#include "stdafx.h"
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define N 6
template <typename Type, int size>
Type min( Type (&r_array)[size] )
{
Type min_val = abs(r_array[0]);
int b;
for ( int i = 1; i < size; ++i )
if ( abs(r_array[i]) < min_val )
{min_val = abs(r_array[i]);
b=i+1;
}
min_val=b;
return min_val;
}
int _tmain(int argc, _TCHAR* argv[])
{int a[N], b, y,x,sum=0;
printf (" Vvedite v odnoi stroke elementi massiva, \n");
printf (" % i celih chisel, i najmite <Enter> \n" ,N);
printf ("->");
for ( int i=0;i<N;i++)
scanf( "%i",&a[i]);
b = 2147483647;
int itr = min( a );
for (int i=0;i<N;i++)
{
if (a[i]<0)
{ for (int j=i+1;j<N;j++)
sum=sum+abs(a[j]);
i=N;
}
}
printf ("Vvedite interval \n");
scanf( "%i", &x);
scanf( "%i",&y);
for (int i=0;i<N;i++)
{
if ((a[i]<x)||(a[i]>y))
a[i]=0;
}
printf("nomer min chisla %i \n", itr);
printf("summa posle otricat %i \n", sum);
for (int i=0;i<N;i++)
printf("%i ", a[i]);
printf ("\n");
getch();
return 0;
}
5.1.2 Листинг программы
// Шаблон функциий.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
#include <conio.h>
#include<iostream>
#include<math.h>
using namespace std;
template <typename Type, int size,int size1>
Type nomer3( Type (&r_array)[size][size1] )
{
Type sum = 0;
for (int i=0;i<size;i++)
for(int j=0;j<size1;j++)
if (r_array[i][j]==3)
sum=sum+1;
return sum;
}
int main()
{
setlocale (LC_ALL,"Russian");
int i,j,sum;
int a[3][4];
sum=0;
for (i=0;i<3;i++)
for(j=0;j<4;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
for (int i=0; i<3; i++) {
for (int j=0; j<4; j++)
std::cout << " " << a[i][j];
std::cout << std::endl; }
int itr=nomer3(a);
cout << itr;
printf ("\n");
system("pause");
return 0;
}
5.2.1 Контрольный пример
5.2.2 Контрольный пример