Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C++ by marseleon ( 18 years ago )
// lab7 (5).cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include "windows.h"
#include "string"
#include "math.h"
using namespace std;
void _print(string f = "Putin", string n = "Vlad", int reit = 99)
{
cout <<f <<" " <<n <<" Рейтинг: " <<reit <<endl;
}
float _max(int k, ...)
//Ñвный параметр k задает количеÑтво чиÑел
{
int *p=&k;//наÑтроили указатель на параметр k
int max=*p;
for(int i = 1;k!=0;k--, i++)
if (i % 2 == 0)
if (*p > max)
max = *(++p);
return max;
}
float avg(const int * arr)
{
int avg = 0;
for(int i = 0; i<10; i++)
avg += arr[i];
return float(avg/10.0);
}
float avg(const float * arr)
{
int avg = 0;
for(int i = 0; i<10; i++)
avg += arr[i];
return float(avg/10.0);
}
//Ñравнение двух чиÑел любого типа
template<class T>
float avg2(const T * arr)
{
int avg = 0;
for(int i = 0; i<10; i++)
avg += arr[i];
return float(avg/10.0);
}
float f(float x)
{
//3x - 4lnx - 5 = 0
return 3*x - 4*log(x) - 5;
}
int _tmain(int argc, _TCHAR* argv[])
{
SetConsoleOutputCP(1251);//Ð”Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° руÑÑких букв
//____________
//Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ ÑƒÐ¼Ð°Ð»Ñ‡Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¼Ð¸ параметрами. Печать фамилии, имени и рейтинга
_print(); //вызов без параметров
_print("Medvedev", "Anatol", 73); //вызов Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸
_print("Medvedev"); //чаÑть параметров опущена
//____________
//Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ñ‹Ð¼ чиÑлом параметров. МакÑимальный из Ñлементов в ÑпиÑке параметров, ÑтоÑщих на четных меÑтах
cout <<"max(1,2,3,4,5,6): " <<_max(6,1,2,3,4,5,6) <<endl;
cout <<"max(3,7,9,1,0,5,8): " <<_max(7,3,7,9,1,0,5,8) <<endl;
//_____________
//Перегруженные функции и шаблон функции. Среднее арифметичеÑкое маÑÑива
int i_arr[10];
float f_arr[10];
//формирование маÑÑива
for (int i = 0; i<10; i++)
{
i_arr[i] = rand()%10;
f_arr[i] = rand()%10+(rand()%10/10.0);
}
cout <<"avg(";
for(int i = 0; i<10; i++)
cout <<i_arr[i] <<", ";
cout <<"): " <<avg(i_arr); //вызов перегруженной Ñ„-ии. маÑÑив целого типа
cout <<endl;
cout <<"avg(";
for(int i = 0; i<10; i++)
cout <<f_arr[i] <<", ";
cout <<"): " <<avg(f_arr); //вызов Ñ„-ии. маÑÑив вещеÑтвенного типа
cout <<endl;
cout <<"avg(";
for(int i = 0; i<10; i++)
cout <<i_arr[i] <<", ";
cout <<"): " <<avg2(i_arr); //вызов шаблона Ñ„-ии. маÑÑив целого типа
cout <<endl;
//______________
//Передача функции как параметра другой функции Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ указателÑ. Метод половинного делениÑ
//3x - 4lnx - 5 = 0
//Отрезок, Ñодержащий корень: [2;4]
//Точное значение: 3,2300
float (*ptr)(float);
ptr = f;
//((*ptr1)(s));
float a = 2; //начало отрезка
float b = 4; //конец отрезка
float eps = 0.01; //погрешноÑть
float FA = ((*ptr)(a)); //Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ + -
float y;
while ((b – a) > eps)
{
float x=(b+a)/2; //Ñ…
y = ((*ptr)(x));
if (abs(y)<=0.1*eps)
{ b=x; a=x;
}else if (FA*y<0) //выборка отрезков
b=x;
else
a=x;
}
cout <<"результат: " <<y <<endl;
return 0;
}
Revise this Paste