_ОП_ЛР6
.doc
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
-
Федеральное государственное автономное образовательное учреждение высшего образования
«Санкт-Петербургский государственный университет аэрокосмического приборостроения»
КАФЕДРА № 2
Преподаватель
доцент, к.т.н. Куртяник Д.В.
Отчёт
по лабораторной работе №6
по дисциплине Информатика
на тему: « Перегрузка функций»
Работу выполнил
студент гр. 4616 Павлов А.В.
Санкт-Петербург
Цель лабораторной работы: изучение концепции подпрограмм и способов передачи аргументов в функции, освоение методов процедурного программирования на языке C++ при решении типовых вычислительных задач.
Задание на программирование: используя технологию процедурного программирования, разработать программу, решающую поставленную задачу в соответствии с индивидуальным заданием.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные, их ограничения.
2) Разработать математическую модель.
3) Построить схему алгоритма.
4) Составить программу на языке С++.
5) Входные данные на этапах тестирования и демонстрации работы преподавателю должны вводиться с клавиатуры по запросу. Выходные данные должны выводиться на экран с пояснениями.
6) Использовать стандартные потоковые объекты ввода/вывода cin и cout.
7) Разработанная программа должна содержать функцию, выполняющую индивидуальное задание. При этом разработанная функция должна быть реализована 3 способами:
- как функция, возвращающая искомое значение;
- как функция, возвращающая искомое значение через дополнительный аргумент - указатель;
- как функция, возвращающая искомое значение через дополнительный аргумент - ссылку.
Эти три функции должны иметь одно и то же имя, т.е. должны быть перегружены.
Задача должна быть решена с использованием вызовов функций всех трех типов из функции main().
8) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, текст программы, контрольные примеры.
1-3)
Вариант 10
Разработать функцию, вычисляющую наибольший общий делитель двух натуральных чисел.
Ввести три натуральных числа. Найти их НОД.
Ввод чисел A,B => цикл знаменатель = 1 => знам. <=a и знам.<=b, знаменатель +1 (for(int znam=1;((znam<=a)&(znam<=b));znam++){
if((a%znam==0)&(b%znam==0)){c=znam;})
Текст программы.
//вычисление максимально большого общего знаменателя двух натуральных чисел
#include <iostream>
#include <locale.h>
using namespace std;
int znam(int,int);
void znam(int, int, int*);
void znam(int, int, int&);
int main(){
setlocale(LC_ALL,"Russian") ;
//изначальные данные
int a,b,var;
int rez; // результат
for(;;){
//Выбор
cout<<"\nВид действия:\n1 - вычисления предела произведения\n2 - завершения задачи\nвведите вид действия -> ";
cin>>var;
switch(var){
case 1:
//ввод натуральных чисел
cout<<"Для нахождения общего знаменателя введите два числа\nВведите первое число А: ";
cin>>a;
cout<<"Введите второе число В: ";
cin>>b;
cout << "\nФункция, возвращающая значение" << endl;
rez = znam(a,b);
cout<<"\nу этих чисел самый большой общий знаменатель равен: "<<rez<<endl;
cout << "\nФункция с дополнительным аргументом-указателем" << endl;
znam(a,b,&rez);
cout<<"\nу этих чисел самый большой общий знаменатель равен: "<<rez<<endl;
cout << "\nФункция с дополнительным аргументом-ссылкой" << endl;
znam(a,b,rez);
cout<<"\nу этих чисел самый большой общий знаменатель равен: "<<rez<<endl;
break;
case 2:return 0;
}//switch
}//for
}
//функция возвращающая значение
int znam(int a, int b){
int c;
//вычисление общего знаменателя
for(int znam=1;((znam<=a)&(znam<=b));znam++)
{
if((a%znam==0)&(b%znam==0)){c=znam;}
}
if(c==1){
cout<<"\nу этих чисел нет общего знаменателя";
return c;
}
return c;
}
//функция с указателем
void znam(int a, int b, int *rez)
{
int c;
//вычисление общего знаменателя
for(int znam=1;((znam<=a)&(znam<=b));znam++)
{
if((a%znam==0)&(b%znam==0)){c=znam;}
}
if(c==1){
cout<<"\nу этих чисел нет общего знаменателя";
*rez=c;
}
*rez=c ;
}
//функция с ссылкой
void znam(int a, int b, int &rez)
{
int c;
//вычисление общего знаменателя
for(int znam=1;((znam<=a)&(znam<=b));znam++)
{
if((a%znam==0)&(b%znam==0)){c=znam;}
}
if(c==1){
cout<<"\nу этих чисел нет общего знаменателя";
rez=c;
}
rez=c ;
}
Примеры.