К основному контенту

Немножечко бредятины

В универе нам дали под сотню задач. авось, кому и пригодится. написано часто коряво, часто встречаются костыли, препод по программированию был жутко недоволен, но, чисто концептуально можно посмотреть) где стоят значки ---------- значит или не работает код или работает но неверно





//1. Разработать программу, которая для двух це¬лых чисел вводимых с клавиатуры вычисляет сумму, произведение, разность и частное и результат выводит на экран  в виде: a + b = c
//a * b = c
//a - b = c
//a / b = c
 #include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int a, b, c;
cout << "Enter 1-st number" << endl;
cin >> a;
cout << "Enter 2-nd number" << endl;
cin >> b;
cout << "a + b  = " << a+b << endl;
cout << "a - b  = " << a-b << endl;
cout << "a * b  = " << a*b << endl;
cout << "a / b  = " << a/b << endl;
system("pause");
return 0;
}



/* 2. Разработать программу, которая вычисляет периметр и площадь треугольника по трем заданным сторонам. Для вычисления площади использовать формулу Герона:
 , где  - полупериметр,   - стороны треугольника. */


 #include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
unsigned int p, a, b, c;
cout << "Enter semiperimeter" << endl;
cin >> p;
cout << "Enter side of the triangle a" << endl;
cin >> a;
cout << "Enter side of the triangle b" << endl;
cin >> b;
cout << "Enter side of the triangle c" << endl;
cin >> c;
cout << "perimetr of triangle: " << a+b+c << endl;
cout << "area of triangle: " << sqrt(p*(p-a)*(p-b)*(p-c)) << endl;

system("pause");
return 0;
}



3.



#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
double vklad, let, proz, s, sum;
setlocale (0, "");
cout << "введите начальный вклад: ";
cin >> vklad;
cout << " \nВведите число лет: ";
cin >> let;
cout << "\nВведите процентную ставку: ";
cin >> proz;
sum=vklad;
for (int j = let; j>0; j--)
{
s = sum/100*proz;
sum = s + sum;
}
cout << "Через " << let << " лет вы получите " << sum << " долларов" << endl;
system ("pause");
return 0;
}





/* 4. Разработать программу, которая будет вычислять по формуле:  ,
сумму n членов арифметической прогрессии  . Входными данными программы являются:
первый член прогрессии a1, разность d и число членов прогрессии n. */


 #include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
int d, a1, n;
cout << "Enter first term progression " << endl;
cin >> a1;
cout << "Enter difference" << endl;
cin >> d;
cout << "Enter the number of members of the progression" << endl;
cin >> n;
cout << "the sum of n terms of an arithmetic progression: " << ((2*a1 + d*(n-1)) * n) / 2  << endl;

system("pause");
return 0;
}


#include <iostream>
using namespace std;
int main()
{
setlocale (0, "");
int a;
cout«"Ввести a:";
cin»a;

int temp = a«1;
int temp1 = a«2;
int temp2 = a«4;
int temp3 = a»1;
cout«"Умнож. на 2: "«temp«endl;
cout«"Умнож. на 4: "«temp1«endl;
cout«"Умнож. на 16: "«temp2«endl;
cout«"Делить на 2: "«temp3«endl;
return 0;
}




/*
5. Разработать программу, которая, используя операции сдвига,  введенное с клавиатуры четное целое число:
а) умножает  на 2, 4 и на 16;
б) делит на 2.
Объяснить результат работы программы при вводе нечетного числа.
*/


#include "stdafx.h"
#include<iostream>
using namespace std;
int main()
{
float num;
cout << "Enter num" << endl;
cin >> num;
cout << "num * 2 = " << num * 2 << endl << "num * 4 = " << num * 4 << endl << "num * 16 = " << num * 16 << endl << "num / 2 = " << num / 2 << endl;
return 0;
}

6.

#include <iostream>
#include <climits>            
int main()
{
    using namespace std;
    int n_int = INT_MAX;      
    short n_short = SHRT_MAX;
    long n_long = LONG_MAX;
long long n_llong = LLONG_MAX;

    cout << "int is " << sizeof (int) << " bytes." << endl;
    cout << "short is " << sizeof n_short << " bytes." << endl;
    cout << "long is " << sizeof n_long << " bytes." << endl;
    cout << "long long is " << sizeof n_llong << " bytes." << endl;
    cout << endl;

    cout << "Maximum values:" << endl;
    cout << "int: " << n_int << endl;
    cout << "short: " << n_short << endl;
    cout << "long: " << n_long << endl;
    cout << "long long: " << n_llong << endl << endl;

    cout << "Minimum int value = " << INT_MIN << endl;
    cout << "Bits per byte = " << CHAR_BIT << endl;
cin.get();
    return 0;
}




/* 7. Вычислить значение логического выражения:
а)   при x=1, y=-1
б) (х ? 0) или ( ) при х = 1, у = 2
в) (х ? 0) и ( ) при х = 1, у = 2
Сформировать соответствующие логические выражения на языке С/С++.
 */


 #include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int x = 1, y = -1;
bool z;
if ((x*x + y*y) <= 4)
z = true;
else
z = false;
cout << "a) " << z << endl;
y = 2;
if (x>=0 || y*y != 4)
z = true;
else
z = false;
cout << "b) " << z << endl;
if (x>=0 && y*y != 4)
z = true;
else
z = false;
cout << "c) " << z << endl;
system("pause");
return 0;
}



/* 8. Разработать программу вычисления  значения у при заданном х:
 */


 #include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
double x, y;
cout << "Enter x" << endl;
cin >> x;
if (x>0)
y = pow(sin(x),2);
else
y = 1 - 2*pow(sin(x),2);
cout << "y = " << y << endl;

system("pause");
return 0;
}





/* 9. С клавиатуры вводятся  два   расстояния:   одно   в   километрах,  другое ¬ – в футах (1 фут = 0.45 м).
Необходимо разработать программу, которая будет вычислять какое из расстояний меньше?
 */


 #include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
unsigned int km1, ft;
unsigned float const k = 0.45, km2;
cout << "Enter km" << endl;
cin >> km1;
cout << "Enter ft" << endl;
cin >> ft;
km2 = ft * k;
if (km1 > km2)
cout << "km > ft" << endl;
else if (km1 < km2)
cout << "km < ft" << endl;

system("pause");
return 0;
}





/*10. Даны три различных целых числа. Определить, какое из них (первое, второе или третье):
а) самое большое;
б) самое маленькое;
в) является средним (средним назовем число, которое больше наимень¬шего из данных чисел, но меньше наибольшего).

 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int a, b, c, small, big;
void display_big (int);
void display_small (int);
void display_mean(int);
cout << "Enter a" << endl;
cin >> a;
cout << "Enter b" << endl;
cin >> b;
cout << "Enter c" << endl;
cin >> c;
if (a > b && a > c)
{
display_big(a);
big = a;
}
if (b > a && b > c)
{
display_big(b);
big = b;
}
if (c > b && c > a)
{
display_big(c);
big = c;
}

if (a < b && a < c)
{
display_small(a);
small = a;
}
if (b < a && b < c)
{
display_small(b);
small = b;
}
if (c < b && c < a)
{
display_small(c);
small = c;
}

if (a > small && a < big)
display_mean(a);
if (b > small && b < big)
display_mean(b);
if (c > small && c < big)
display_mean(c);

system("pause");
return 0;
}

void display_big (int i)
{
cout << "the largest number: " << i << endl;
}
void display_small (int i)
{
cout << "the smallest number: " << i << endl;
}
void display_mean(int i)
{
cout << "the mean number: " << i << endl;
}




/*11. Известны год и номер месяца рождения человека, а также год и номер месяца сегодняшнего дня (январь — 1 и т. д.).
Определить возраст чело¬века (число полных лет). В случае совпадения указанных номеров меся¬цев считать, что прошел полный год.
 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
unsigned int year_man, month_man, year_td, month_td, age;
cout << "enter year of birth: " << endl;
cin >> year_man;
cout << "enter month of birth: " << endl;
cin >> month_man;
cout << "enter current year: " << endl;
cin >> year_td;
cout << "enter current month: " << endl;
cin >> month_td;
if (month_td < month_man)
age = year_td - year_man - 1;
if (month_td >= month_man)
age = year_td - year_man;
cout << "Age: " << age << endl;
system("pause");
return 0;
}





/* 12. Известны площади круга и квадрата. Определить:
а) уместится ли круг в квадрате?
б) уместится ли квадрат в круге?

 */

 #include "stdafx.h"
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
double s_circle, s_square, diam_circle, side_square;
const double PI = 3.1415926535897932384626433832795028841971693993;
cout << "Enter area circle: " << endl;
cin >> s_circle;
cout << "Enter area square: " << endl;
cin >> s_square;
diam_circle = sqrt(s_circle/(PI/4));
side_square = sqrt(s_square);
if (diam_circle < side_square)
cout << "circle in a square fit" << endl
<< "square in the circle will not fit" << endl;
if (diam_circle > side_square)
cout << "circle in a square will not fit" << endl
<< "square in the circle fit" << endl;

system("pause");
return 0;
}






/* 13. Дано натуральное число. Определить:
а) является ли оно четным;
б) оканчивается ли оно цифрой 7.


 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int x;
cout << "Enter num: " << endl;
cin >> x;
(x % 2) ? cout << "odd num" << endl : cout << "even num" << endl;
((x -7) % 10) ? cout << "The number doesn't end with the number 7" << endl : cout << "The number end with the number 7" << endl;

system("pause");
return 0;
}







/*14. Разработать программу, которая проверяет, попадает ли точка с заданными координатами в заштрихованную область:
 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
int x, y;
cout << "enter x" << endl;
cin >> x;
cout << "enter y" << endl;
cin >> y;

if ((y >= -2) && (y <= 1.5))
cout << "a) point falls in the shaded area" << endl;
else
cout << "a) point fall within the shaded area" << endl;

if (((x <= -1) || (x >= 2)) && (y >= 1))
cout << "b) point falls in the shaded area" << endl;
else
cout << "b) point fall within the shaded area" << endl;

if (x <= 2)
if ((y >= 1/2) && (y <= 3/2))
cout << "c) point falls in the shaded area" << endl;
if (x >= 2)
cout << "c) point falls in the shaded area" << endl;
if (x <= 2)
if ((y <= 1/2) && (y >= 3/2))
cout << "c) point fall witin the shaded area" << endl;

system("pause");
return 0;
}






/*15. Разработать программу, которая в зависимости от порядкового номера месяца (1, 2,.... 12), вводимого с клавиатуры, выводит на экран количество дней в этом месяце. Рассмотреть два случая:
а) год не является високосным;
б) год может быть високосным (информация об этом вводится с кла¬виатуры).
 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
char ch;
short num;
short day_per_month [12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
short day_per_month_v [12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
cout << "Is leap year (y/n)?" << endl;
cin >> ch;
cout << "Enter ref month" << endl;
cin >> num;
num--;
(ch = 'y') ? cout << "In this month " << day_per_month_v[num] << " day" << endl :
cout << "In this month " << day_per_month[num] << " day" << endl;

system("pause");
return 0;
}







/*16. Написать программу вывода на экран "столбиком" всех целых чисел от  а до b (значения а и b вводятся с клавиатуры; b > 0).
Найти среднее арифметическое всех выведенных целых чисел. Реализовать программу тремя способами, используя:
а) оператор цикла с предусловием,
б) оператор цикла с постусловием.
в) оператор цикла for++++++


 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
float a, b, sum=0;
float sr_arif;
cout << "enter a" << endl;
cin >> a;
cout << "enter b (>0)" << endl;
cin >> b;
for (int i = a; i <= b; i++)
{
sum = i + sum;
cout << i << endl;
}
sr_arif = sum / (b-a+1);
cout << "arithmetic mean: " << sr_arif << endl;

system("pause");
}



/*16. Написать программу вывода на экран "столбиком" всех целых чисел от  а до b (значения а и b вводятся с клавиатуры; b > 0).
Найти среднее арифметическое всех выведенных целых чисел. Реализовать программу тремя способами, используя:
а) оператор цикла с предусловием,+++++++
б) оператор цикла с постусловием.
в) оператор цикла for


 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
float a, b, sum=0;
float sr_arif, i;
cout << "enter a" << endl;
cin >> a;
i = a;
cout << "enter b (>0)" << endl;
cin >> b;
while (i != b+1)
{
sum = i + sum;
cout << i << endl;
i++;
}
sr_arif = sum / (b-a+1);
cout << "arithmetic mean: " << sr_arif << endl;

system("pause");
}

/*16. Написать программу вывода на экран "столбиком" всех целых чисел от  а до b (значения а и b вводятся с клавиатуры; b > 0).
Найти среднее арифметическое всех выведенных целых чисел. Реализовать программу тремя способами, используя:
а) оператор цикла с предусловием,
б) оператор цикла с постусловием.++++++++++
в) оператор цикла for


 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
float a, b, sum=0;
float sr_arif, i;
cout << "enter a" << endl;
cin >> a;
i = a;
cout << "enter b (>0)" << endl;
cin >> b;
cout << "___________________________________________" << endl;
do
{
sum = i + sum;
cout << i << endl;
i++;
}
while (i != b+1);
sr_arif = sum / (b-a+1);
cout << "arithmetic mean: " << sr_arif << endl;

system("pause");
}





/*17. Напечатать таблицу умножения на число n в следующем виде:
1 х n = …
2 х n = …

9 х n = …

Значение n вводится с клавиатуры. Организовать проверку на корректность вводимого значения – оно должно быть в диапазоне от 1 до 9 включительно.

 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int m=1, n;
cout << "Enter number (<=9)" << endl;
cin >> n;
if (n > 9)
{
cout << "error" << endl;
system("pause");
exit(1);
}
else
{
for (int i = 0; i<n; i++)
{
cout << m << " * " << n << " = " << m*n << endl;
m++;
}
}
system("pause");
}






/*
18. Рассчитать значения х для значений а равных 2, 3, …17:
Вывод программы оформить в виде  таблицы, в которой выводить значения a, t, x, при изменении значений a от 2 до 17.

 */

 #include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;

void main()
{
double x, t, a=2;
do
{
t = 4 * a;
x = 3.5 * t*t - 7 * t + 16;
cout << setw(2) << a << setw(10) << t << setw(10) << x << endl;
a++;
}
while (a < 18);
system("pause");
}







/*
19. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы пре¬дыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней?

 */

 #include "stdafx.h"
#include <iostream>

using namespace std;

void main()
{
float sum_km = 10;
for (int i = 0; i < 7; i++)
sum_km += sum_km*0.1;

cout << sum_km << "km" << endl;

system("pause");
}




/*
20. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить, сколько амеб будет через 3, 6, 9, 12,..., 24 часа.

 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int amoeba = 2, hour = 3;
do
{
cout << "after " << hour << " is " << amoeba << " amoeba" << endl;
amoeba++;
hour += 3;
}
while (hour < 25);
system("pause");
}



/*
/*
21. Составить программу для проверки утверждения: Результатами вычислений по формуле   при   являются простые числа.
 */------------------------------------------------

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int x=0, y;
int Prime(unsigned long);
for (int i = 1; i<=40; i++)
{
y = i*i + i + 41;
x = Prime (y);
if (x = 0)
cout << "with the number " << i << " y not prime" << endl;
else
cout << "with the number " << i << " y prime" << endl;
}
system("pause");
}

int Prime(unsigned long a)
{
   unsigned long i;
   if (a == 2)
      return 1;
   if (a == 0 || a == 1 || a % 2 == 0)
      return 0;
   for(i = 3; i*i <= a && a % i; i += 2)
      ;
   return i*i > a;
}
















/*----------------------------------------------------------
22. Разработать программу, которая переводит число из десятичной системы исчисления в шестнадцатеричную.
В шестнадцатеричной системе счисления число 16 является основанием системы счисления,
а коэффициенты разложения имеют вид: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
При этом A  = 10, B = 11, C = 12 и т.д. Например, 16310 = A316.
 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int num, i=0;
char sys16 [16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F'};
char string16 [30];
cout << "Enter num" << endl;
cin >> num;

do
{
int temp = num % 16; //получили остаток от деления, он и есть символ в 16 системе
char temp1 = sys16 [temp]; //записали символ
string16[i] = temp1; //поместили на первое место в строке 16 кода
i++;
num = (int)(num/ 16); //поделили число на 16
}
while (num>16);
string16[i++] = '\0';

for (int j = 0; j<30; j++)
cout << string16[j];
cout << endl;

system("pause");
}





/*
24. Напечатать числа в виде следующей таблицы:
1 5 5 5 5 5
2 2 6 6 6 6
3 3 3 7 7 7
4 4 4 4 8 8
5 5 5 5 5 9
а) б)

 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int x = 1, i=0;
do
{
int i = x;
do
{
cout << x << " " ;
i--;
}
while(i > 0);
x++;
cout <<endl;
}
while(x < 6);

system("pause");
}





 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int x = 5, i=0;
do
{
int i = 10-x;
do
{
cout << x << " " ;
i--;
}
while(i != 0);
x++;
cout <<endl;
}
while(x < 10);

system("pause");
}






/*
25. Составить программу возведения натурального числа в квадрат, учиты¬вая следующую закономерность:

 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int num, j=1;
cout << "Enter num" << endl;
cin >> num;
cout << num << "^2= ";
for(int i=0; i<num; i++)
{
cout << j;
j += 2;
if (i<num-1)
cout << " + ";
}
cout << endl;

system("pause");
}





/*
26. Дано натуральное число. Определить:
а) сколько раз в нем встречается цифра а;
б) количество его цифр, кратных z (значение z вводится с клавиатуры; z = 2,3,4);----
в) сумму его цифр, больших а (значение а вводится с клавиатуры; 0< а <8);----
г) сколько раз в нем встречаются цифры х и у.-----


 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
char num[20], a;
int z, x, y;
cout << "Enter num" << endl;
cin >> num;
cout << "Enter a" << endl;
cin >> a;
cout << "Enter z" << endl;
cin >> z;
cout << "Enter x" << endl;
cin >> x;
cout << "Enter y" << endl;
cin >> y;

int wlen = strlen(num);
int count = 0;
for (int i = 0; i<= wlen; i++)
{
if (num[i] == a)
count++;
}
cout << "a) " << count << " time" << endl;

int countz = 0;
for (int i = 0; i<= wlen; i++)
{
if (!(num[i] % z))
count++;
}
cout << "b) " << countz << " time" << endl;






system("pause");
}


/*
27. Дано натуральное числом. Напечатать разложение этого числа па про¬стые множители. Реализовать два варианта:
а) каждый простой множитель должен быть напечатан один раз;
б) каждый простой множитель должен быть напечатан столько раз, сколько раз он входит в разложение.


 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

void PrimeFactors (int );

int main()
{
    int a,b;
    cout<<"Enter first number a : ";
    cin>>a;
    PrimeFactors(a);
    return 0;
}

void PrimeFactors (int n)
{
    int count = 0;
    for ( int i = 1 ; i <= n ; i++ )
    {
        int j = i - 1;
        while ( j > 1 )
        {
            if ( i % j == 0 )      //Is PRIME
                break;
            else
                j--;
        }
        if ( j == 1 )
        {
            if ( n % i == 0 )
            {                          
                cout<<i<< endl;    //PRIME factor
            }
        }

    }
system("pause");
}





/*
28. Массив предназначен для хранения значений ростов двенадцати чело¬век. С помощью датчика случайных чисел заполнить массив целыми значениями, лежащими в диапазоне от 163 до 190 включительно. На основе данных массива вычислить:
а) среднее арифметическое значение роста и вывести его на экран;
б) минимальное значение роста и индекс соответствующего элемента массива (если таких элементов несколько, вернуть индекс первого встретившегося).
Распечатать элементы массива в прямом и обратном порядке.
 */

 #include "stdafx.h"
#include <iostream>
#include <ctime>

using namespace std;
const int MAX = 12;

int main()
{
    int array [MAX], temp=0;
double sr_arif;
srand(time(NULL)|clock());
for(int i=0; i<MAX; i++)
array[i] = 163+rand()%30;

for(int i=0; i<MAX; i++)
{
temp += array[i];
}
sr_arif = temp / MAX;
cout << "a) " << sr_arif << endl;

int min = array[0];
for(int i=1; i<MAX; i++)
{
if(array[i] < min)
{
min=array[i];
temp = i;
}

}
cout << "b) MIN - " << min << ", index - " << temp+1 << endl;

for(int i=0; i<MAX; i++)
cout << array[i] << endl;



system("pause");
}





/*
29. В некоторых видах спортивных состязаний (например, в фигурном катании) выступление каждого спортсмена независимо оценивается
несколькими судьями, затем из всей совокупности оценок удаляются наиболее высокая и наиболее низкая, а для оставшихся оценок
вы¬числяется среднее арифметическое, которое и идет в зачет спортсме¬ну. Если наиболее высокую оценку выставило несколько судей,
то из совокупности оценок удаляется только одна такая оценка; аналогично поступают и с наиболее низкими оценками.
Известны оценки, выставленные восьмью судьями одному из участ¬ников соревнований – они задаются с клавиатуры.
Составить программу для расчета оценки, кото¬рая пойдет в зачет этому спортсмену.

 */

 #include "stdafx.h"
#include <iostream>
using namespace std;
const short MAX = 8;

void main()
{
    short mark [MAX];
cout << "Enter marks" << endl;
for (int i = 0; i<MAX; i++)
cin >> mark[i];

short min = mark[0], max = mark[0];

for (int i = 0; i<MAX; i++)
{
if (mark [i] < min)
min = mark[i];
if (mark[i] > max)
max = mark[i];
}
short sum = 0;
for (int i = 0; i<MAX; i++)
sum += mark [i];
short sr_arif = (sum - max - min) / (MAX - 2);
cout << "Mark: " << sr_arif << endl;

system("pause");
}




/*
30. В двух массивах записаны результаты 20 игр двух футбольных команд (если игра окончилась выигрышем данной команды, то записано число 3, проигрышем— 0, если игра окончилась вничью— 1). Организовать заполнение массивов с клавиатуры и проверку корректности ввода значений. На основе имеющихся данных определить:
а) суммарное количество баллов, которое заработала каждая команда:
б) количество матчей, окончившихся победой, для каждой команды;
в) вывести, какие игры команды могли провести совместно.

 */

 #include "stdafx.h"
#include <iostream>
using namespace std;
const short MAX = 5, TEEN = 2;

void main()
{
short mark [MAX][TEEN];

for (int i = 0; i<MAX; i++)
{
cout << "**********************" << endl;
for(int j = 0; j<TEEN; j++)
{
cout << i+1 << " game " << j+1 << " teen" << endl;
cin >> mark[i][j];
if (mark[i][j] == 2 || mark[i][j] > 3)
{
cout << "Error" << endl;
system("pause");
exit(1);
}
}
}

int sum1 = 0, sum2 = 0;
for (int i = 0; i<MAX; i++)
{
sum1 += mark[i][0];
sum2 += mark[i][1];
}
cout << "1-st teen: " << sum1 << endl << "2-nd teen: " << sum2 << endl;

int win1 = 0, win2 = 0;
for (int i = 0; i<MAX; i++)
{
if (mark[i][0] == 3)
win1++;
if (mark[i][1] == 3)
win2++;
}
cout << "number victorys teen 1 = " << win1 << endl << "number victorys teen 2 = " << win2 << endl;

system("pause");
}





/*
32. Используя датчик случайных чисел, заполнить элементы массива неповторяющимися числами.

 */

 #include "stdafx.h"
#include <ctime>
#include <iostream>
using namespace std;
int main()
{
    const int k=100;
    int m[k];
    srand (time(NULL));
    for(int i=0; i<k; i++)
    {
        a: m[i]=1+rand()%k;
        for (int j=0; j<i; j++)
            if (m[j]==m[i]) goto a;
    }
    for(int i=0; i<k; i++)
    cout << m[i]<<" ";
    cin.get();
    return 0;
}



/*
33. Дан двумерный массив символов, состоящий из 10 строк и 10 столбцов. Заполнить массив двумя типа символов: звездочкой ('*') и пробелом (' ') так, чтобы выше главной диагонали и на диагонали находились звездочки, а ниже главной диагонали – пробелы. Вывести массив на экран в виде таблицы. Должен быть получен рисунок вида:

а)
Меняя способ заполнения массива, организовать вывод на экран следующих фигур:


б)                    в) г) д) е)
 */

 #include "stdafx.h"
#include <iostream>
using namespace std;

const int M = 10, N = 10;

int main()
{
   char array [M][N];

   for (int i = 0; i < M; ++i)
{   // Заполняем строку с номером i
int j;
    for (j = 0; j < i; ++j)
    {
array[i][j] = ' ';    // Сначала пишем 2 ниже диагонали
    }
    array[i][j] = ' ';        // После завершения предыдущего цикла i==j, пишем 1
    for (++j; j < M; ++j)  // Цикл начинаем с увеличения j на 1
    {
        array[i][j] = '*';    // Записываем 0 выше диагонали
    }
}

    for (int i = 0; i<M; i++)
{
for (int j = 0; j<M; j++)
{
cout << array[i][j];
}
cout << endl;
}

    cin.get();
    return 0;
}





/*
34. В поезде 18 вагонов, в каждом из которых 36 мест. Информация о про¬данных на поезд билетах хранится в двумерном массиве, номера строк которых соответствуют номерам вагонов, а номера столбцов - номе¬рам мест.
Если билет на то или иное место продан, то соответствую¬щий элемент массива имеет значение 1, в противном случае - 0. Организовать заполнение двумерного массива случайным образом.
Составить программу, определяющую:
а) число свободных мест в любом из вагонов поезда;
б) номер вагона, в котором максимальное количество свободных мест (если таких несколько, вывести все);
в) номера вагонов, занятых полностью;
г) номера трех самых заполненных вагонов (для выполнения задания необходимо использовать вспомогательный одномерный массив, содержащий количество занятых мест в каждом вагоне)

 */

 #include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;

const int WAGON = 18, SPACE = 36, O_SPACE = 18, A_SPACE = 18;

int main()
{
int train [WAGON][SPACE], o_spase[O_SPACE], a_spase[A_SPACE]; // занятые места, свободные места
srand(time(NULL));

for (int i = 0; i<WAGON; i++)
{
for (int j=0; j<SPACE; j++)
{
train [i][j] = 0+rand()%2;
}
}

for (int i = 0; i<WAGON; i++)
{
int count = 0; // счетчик свободных мест в вагоне
cout << "in " << i+1 << " wagon ";
for (int j=0; j<SPACE; j++)
{
if (train [i][j] < 1)
count ++;

}
cout << count << " availability" << endl;
a_spase[i] = count; // значение вободных мест передается в новый массив свободных мест
}

int max = a_spase[0], count_max;
for (int i = 1; i<A_SPACE; i++)
{
if (a_spase[i] > max)
{
max = a_spase[i];
count_max = i+1;
}
}
cout << "\nThe trains, which most availability "; //вагонЫ с наибольшим кол-вом свободных мест
for (int i = 0; i<A_SPACE; i++)
{
if (a_spase[i] == max) // найдено максимальное значение свободных мест в вагонах в мах, сравниваем его со всеми значениями свободных мест в вагоне и выводим их все
cout << i+1 << ", ";
}
cout << endl << endl;

for (int i = 0; i<O_SPACE; i++) // создаем массив значений занятых мест в каждом вагоне
{
o_spase [i] = SPACE - a_spase[i];
cout << " occupied space in the train " << i+1 << ": " <<  o_spase[i] << endl;
}

cout << "\nwagon, fully occupied: ";
for (int i = 0; i<O_SPACE; i++) //ищем заполненый вагон полностью
{
if (o_spase[i] == SPACE)
cout << i+1 << endl;
}
cout << "no fully occupied trains " << endl;

int occuped, max_occuped;
cout << "\n3 most filled trains: ";

for (int j = 0; j<3; j++)
{
occuped = o_spase[0];
for (int i = 1; i<O_SPACE; i++) //ищем 3 самых заполненных вагона
{
if (o_spase[i] > occuped)
{
occuped = o_spase[i];
max_occuped = i+1;
}
}
cout << max_occuped << ", ";
o_spase[max_occuped-1] = 0;
}

cout << endl << endl;

for (int i = 0; i<WAGON; i++)
{
for (int j=0; j<SPACE; j++)
{cout << train [i][j] << " ";}
cout << endl;
}

    cin.get();
    return 0;
}





/*
35. Известно количество студентов в каждой из шести групп каждого курса института:

Организовать ввод информации по этой таблице и определить:
а) на каком курсе обучается меньше всего студентов;
б) какая из групп (указать  номер и номер курса) самая малочис¬ленная,
в) номер самой малочисленной группы (для каждого курса);
г) среднее количество студентов для каждого курса.

 */

 #include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
const int COURSE = 5, GROUP = 6;


int main()
{
setlocale (0, "");
srand(time(NULL));
int students[COURSE][GROUP], sum_group_in_crs[COURSE];

for (int i = 0; i<COURSE; i++) //заполнили массив случайными значениями
{
for (int j = 0; j<GROUP; j++)
{
students[i][j] =  12+rand()%21;
cout << i+1 << " курс " << j+1 << " группа: " << students[i][j] << " человек" << endl;
}
}

for (int i = 0; i<COURSE; i++) //определяем на каком курсе учится меньше всего студентов, создаем новый массив кол-ва студентов на каждом курсе
{
int sum_group  = 0;
for (int j = 0; j<GROUP; j++)
{
sum_group += students[i][j];
}
sum_group_in_crs[i] = sum_group;
cout << "курс " << i+1 << ": " << sum_group_in_crs[i] << endl;
}

int min = sum_group_in_crs[0], min_index = 0;
for (int i = 1; i < COURSE; i++)
{
if (sum_group_in_crs[i] < min)
{
min = sum_group_in_crs[i];
min_index = i;
}
}
cout << "\nСамый малочисленный курс: " << min_index + 1 << endl;


int min_grp = students[0][0], grp_indx=0, crs_indx=0;
for (int i = 1; i<COURSE; i++) //какая из групп (указать  номер и номер курса) самая малочисленная
{
for (int j = 1; j<GROUP; j++)
{
if ( students[i][j] < min_grp)
{
min_grp = students[i][j];
crs_indx = i;
grp_indx = j;
}
}
}
cout << "Наименьшая группа на " << crs_indx+1 << " курсе под номером " << grp_indx+1 << endl;


for (int i = 0; i<COURSE; i++) //среднее количество студентов для каждого курса используя массив количества студентов на каждом курсе
{
int average_course  = 0;
average_course = sum_group_in_crs[i]/GROUP;
cout << "Среднее число студентов на " << i+1 << " курсе: " << average_course << endl;
}

    cin.get();
    return 0;
}





/*
36. Дан двумерный массив целых чисел. Определить:
а) есть ли в нем столбец, состоящий только из нулей;
б) есть ли в нем столбец, состоящий только из элементов, принадлежащих промежутку от 0 до b;
в) есть ли в нем столбец, состоящий только из четных элементов;
г) есть ли в нем столбец, в котором равное количество положитель¬ных и отрицательных элементов;
д) есть ли в нем столбец, в котором имеются одинаковые элементы;--------------
е) есть ли в нем столбец, в котором имеются как минимум три эле¬мента, являющиеся минимальными в массиве.--------

 */

 #include "stdafx.h"
#include <iostream>
using namespace std;
const int MAX = 4, M=3;


int main()
{
setlocale (0, "");
int array[MAX][MAX] = {6, 2, 8, 1,
                  8, 4, 0, 2,
  2, 8, 2, -1,
                      0, 8, 3, -2};
int b;
cout << "Введите промежуток от 0 до... " << endl;
cin >> b;

for (int i = 0; i<MAX; i++)
{
for (int j = 0; j<MAX; j++)
{
cout << array[i][j] << " ";
}
cout << endl;
}

bool flag0 = false, flagb = false, flag_chet = false, flag_pos_neg = false, flag_rep = false;
for (int i = 0; i<MAX; i++)
{
int count0 = 0, countb=0, count_chet=0, count_pos = 0, count_neg = 0, count_rep=0;
for (int j = 0; j<MAX; j++)
{
if (array[i][j] == 0)
count0++;

if ((array[i][j] >= 0) && (array[i][j] <= b))
countb ++;

if (!(array[i][j] % 2))
count_chet++;

if (array[i][j] > 0)
count_pos++;
if (array[i][j] < 0)
count_neg++;

int count_re = 0;
for (int k=0; k<MAX; k++)
{
if (array[i][j] = array[i][k])
count_re++;
}
if (count_re > 1)
count_rep++;

}
if(count0 == (MAX-1))
flag0 = true;

if(countb == (MAX-1))
flagb = true;

if(count_chet == (MAX-1))
flag_chet = true;

if(count_pos = count_neg)
flag_pos_neg = true;

if(count_rep > 0)
flag_rep = true;
}
if (flag0 == true)
cout << "В матрице есть нолевые столбцы" << endl;
else
cout << "В матрице нет нолевых столбцов" << endl;

if (flagb == true)
cout << "\nВ матрице есть  столбец, состоящий только из элементов, принадлежащих промежутку от 0 до " << b << endl;
else
cout << "\nВ матрице нет столбцов, состоящих только из элементов, принадлежащих промежутку от 0 до " << b << endl;

if (flag_chet == true)
cout << "\nВ матрице есть  столбец, состоящий только из четных элементов " << endl;
else
cout << "\nВ матрице нет столбцов, состоящих только из четных элементов " << endl;

if (flag_pos_neg == true)
cout << "\nВ матрице есть  столбец, в котором равное количество положительных и отрицательных элементов " << endl;
else
cout << "\nВ матрице нет столбцов, в котоых равное количество положительных и отрицательных элементов " << endl;

if (flag_rep == true)
cout << "\nВ матрице есть  столбец, в котором имеются одинаковые элементы " << endl;
else
cout << "\nВ матрице нет столбцов, в котором не имеются одинаковые элементы " << endl;

int min[M], i_indx, j_indx;

min[0] = array[0][0], min[1] = array[0][0], min[2] = array[0][0];
for (int k = 0; k<M; k++)
{
for (int i = 1; i<MAX; i++)
{
for (int j = 1; j<MAX; j++)
{
if (array[i][j] < min[k])
{
min[k] = array[i][j];
i_indx = i;
j_indx = j;
}
array [i_indx][j_indx] = NULL;
}
}
}
cout << min[0] << endl << min[1] << endl << min[2] << endl;





    system("pause");
    return 0;
}





/*
38. Написать подробный комментарий к следующему фрагменту кода.
*/

 #include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
     int a = 5; // обьявлем и инициализируем переменную целого типа
     int * p, *q; //убьявляем указатели на переменные целого типа

     p = &a; // присваиваем указателю р адрес переменной а
     cout << *p << '\t';  // разыменовываем указатель и выводим его на экран, т - перемещает позицию печати к следующей позиции горизонтальной табуляции  
     a++; // инкрементируем а
     cout << *p << '\t'; //  разыменовываем указатель р и выводим на экран
   // *p = *p – 3; // так нельзя делать
     cout << a << '\t'; //  выводим переменную а на экран

     q = p; // присваиваем переменной q значение р
     *q = 15; // разыменовывем указатель q и присваиваем ему целочисленное значение
     cout <<  a  << '\t';//вывод на экран переменной а
     cout << *p << '\t';//разыменовываем указатель, выводим его на экран

return 0; // возвращаем функции main() 0
}





/*
39. Задан статический массив из 10 элементов, заполненный произвольным образом.
Разработать программу, в которой с помощью двух указателей (на начало и конец массива) проверяется, является ли массив симметричным.

*/

 #include "stdafx.h"
#include <iostream>
using namespace std;
const int MAX = 10;

int main()
{
setlocale (0, "");
int array [MAX] = {1, 2, 7, 4, 5, 5, 4, 3, 2, 1};
int* begin,* end;
begin = array;
end = begin+(MAX-1);
int count = 0;
for(int i = 0; i<(MAX/2); i++)
{
if(*begin == *end)
{
count++;
}
begin++;
end--;
}
if (count == MAX/2)
cout << "Массив симметричен " << endl;
else
 cout << "Массив не симметричен " << endl;
system("pause");
return 0;
}





/*
40. Заданы два статических массива из 10 элементов, заполненных произвольным образом. Разработать программу, в которой на основе данных массивов создается третий массив, содержащий:
а) пересечение двух массивов (без повторений);
б) объединение двух массивов (без повторений).
Результат работы программы должен включать вывод элементов двух исходных массивов и элементы результирующего массива.

*/

 #include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
const int MAX = 10, MAXX = 20;

int main()
{
setlocale (0, "");
srand(time(NULL));
int array1[MAX], array2[MAX], array[MAX], arrayM[MAXX];

 for (int i = 0; i<MAX; i++) //заполняем 2 массива случ. знач
 {
 array1[i] = 1+rand()%9;
 array2[i] = 1+rand()%9;
 }

  for (int i = 0; i<MAX; i++) //выводим 1 массив
cout << array1[i] << " ";

  cout << endl;

   for (int i = 0; i<MAX; i++)//выводим 2 массив
cout << array2[i] << " ";

 cout << endl;

for (int i = 0; i<MAX; i++)//ищем пересекающиеся числа, сохраняем в отдельный массив
{
if(array1[i] == array2[i])
array[i] = array1[i];

else
array[i] = NULL;
}

  for (int i = 0; i<MAX; i++)//выводим массив пересечений
cout << array[i] << " ";

 cout << endl;

for(int i = 0; i<MAX; i++)//обьединяем 2 массива в 3 -тий
 arrayM[i] = array1[i];

for(int i = 0; i<MAX; i++)
 arrayM[i+MAX] = array2[i];

for(int i = 0; i<MAXX; i++)
cout << arrayM[i] << " ";

 cout << endl;

  for (int i=0; i<MAXX; i++) // убираем одинаковые элементы, выводим оставшиеся
  {
        bool flag=true;
        for (int j=0; j<MAXX; j++)
            if (i-j!=0 && arrayM[i]==arrayM[j]) flag=false;
        if (flag) cout<<arrayM[i]<<" ";
    }

   cout << endl;

system("pause");
return 0;
}





/*
42. Даны два одномерных массива A и B размерности n, элементы которых упорядочены по возрастанию (убыванию).
Объединить  массивы так, чтобы результирующий массив C размерности 2*n остался упорядоченным по возрастанию (убыванию). Заполнение исходных массивов A и B организовать программно.
*/

 #include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
const int MAX = 10;

int main()
{
setlocale (0, "");
srand(time(NULL));
int array1[MAX], array2[MAX], array[MAX*2];


 for (int i = 0; i<MAX; i++) //заполняем 2 массива случ. знач
 {
 array1[i] = 1+rand()%9;
 array2[i] = 1+rand()%9;
 }

  for (int i = 0; i<MAX; i++) //выводим 1 массив
cout << array1[i] << " ";

  cout << endl;

   for (int i = 0; i<MAX; i++)//выводим 2 массив
cout << array2[i] << " ";

 cout << endl;

for (int i = 0; i < MAX; i++) //сортировка 1 массива
       for (int j = i+1; j < MAX; j++)
          if (array1[i] < array1[j])
          {
             int buf = array1[i];
             array1[i] = array1[j];
             array1[j] = buf;
          }
    cout << endl << endl;

for (int i = 0; i < MAX; i++) //сортировка 2 массива
       for (int j = i+1; j < MAX; j++)
          if (array2[i] < array2[j])
          {
             int buf = array2[i];
             array2[i] = array2[j];
             array2[j] = buf;
          }
  cout << endl << endl;


     for (int i = 0; i<MAX; i++) //выводим 1 массив
cout << array1[i] << " ";

  cout << endl;

   for (int i = 0; i<MAX; i++)//выводим 2 массив
cout << array2[i] << " ";
cout << endl;

for (int i = 0; i<MAX; i++) //обьединение двух массивов в 3
array[i] = array1[i];

for (int i = 0; i<MAX*2; i++)
array[i+MAX] = array2[i];

for (int i = 0; i<MAX*2; i++) //выводим массив
cout << array[i] << " ";
  cout << endl << endl;

for (int i = 0; i < MAX*2; i++) //сортировка 2 массива
       for (int j = i+1; j < MAX*2; j++)
          if (array[i] < array[j])
          {
             int buf = array[i];
             array[i] = array[j];
             array[j] = buf;
          }
  cout << endl << endl;


system("pause");
return 0;
}

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

/*
42. Даны два одномерных массива A и B размерности n, элементы которых упорядочены по возрастанию (убыванию).
Объединить  массивы так, чтобы результирующий массив C размерности 2*n остался упорядоченным по возрастанию (убыванию). Заполнение исходных массивов A и B организовать программно.
*/

 #include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
const int MAX = 10;

int main()
{
setlocale (0, "");
srand(time(NULL));
int array1[MAX], array2[MAX], array[MAX*2];

void random (int[]);
void display(int[], const int);
void sort(int, int[]);

random(array1);
random(array2);

display(array1, MAX);
display(array2, MAX);

sort(MAX, array1);
sort(MAX, array2);

display(array1, MAX);
display(array2, MAX);

for (int i = 0; i<MAX; i++) //обьединение двух массивов в 3
array[i] = array1[i];

for (int i = 0; i<MAX*2; i++)
array[i+MAX] = array2[i];

display(array, MAX*2);

sort(MAX*2, array);
display(array, MAX*2);

system("pause");
return 0;
}

 void random (int a[])
 {
for (int i = 0; i<MAX; i++) //заполняем массив случ. знач
 a[i] = 1+rand()%9;
 }

 void display(int a[], const int M)
 {
for (int i = 0; i<M; i++) //выводим массив
cout << a[i] << " ";
cout << endl << endl;
 }

 void sort(int M, int a[])
 {
for (int i = 0; i < M; i++) //сортировка массива
{
       for (int j = i+1; j < M; j++)
          if (a[i] < a[j])
          {
             int buf = a[i];
             a[i] = a[j];
             a[j] = buf;
          }
}
 }







/*
43. Двумерный массив целых чисел, размерность и элементы которого задаются с клавиатуры, вывести на экран в виде таблицы.
Вычислить максимальное значение для каждой строки и найти минимальное из этих максимальных значений.
На экран вывести полученное значение и номер соответствующей строки. Выполнить задачу в двух вариантах:
а) двумерный массив представлен одномерным динамическим массивом;
б) двумерный массив представлен массивом указателей.

*/

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
setlocale (0, "");
int rows, columns;
cout << "Введите количество строк" << endl;
cin >> rows;
cout << "Введите количество столбцов" << endl;
cin >> columns;
int** p_darr = new int* [rows]; //создаем двумерный динамический массив
for (int i = 0; i<rows; i++)
p_darr[i] = new int [columns];

cout << "Введите элементы" << endl;
for (int i = 0; i<rows; i++)
for(int j = 0; j<columns; j++)
cin >> p_darr[i][j];

for (int i = 0; i<rows; i++) //выводим массив на экран
{
for(int j = 0; j<columns; j++)
{
cout << p_darr[i][j] << " ";
}
cout << endl;
}

int* p_max = new int [rows]; // создаем одномерный динамический массив максимального элемента каждой строки
int max;
for (int i = 0; i<rows; i++)
{
max = p_darr[i][0];
for(int j = 1; j<columns; j++)
{
if(p_darr[i][j] > max)
{
max = p_darr[i][j];
}
}
p_max[i] = max;
}

for (int i = 0; i<rows; i++) //выводим его на экран
cout << p_max[i] << endl;

int min = p_max[0];
for (int i = 1; i<rows; i++) //выводим его на экран
if (p_max[i] < min)
min = p_max[i];

cout << "Минимальное из максимальных значений строк массива: " << min << endl;
delete[] p_darr, p_max;
}




 
/*
44. Разработать программу, которая циклически сдвигает строки в двумерном массиве следующим образом:
первая строка становится последней, вторая – первой, третья – второй и т.д.
Размерность и элементы двумерного массива задаются с клавиатуры.
*/

 #include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
setlocale (0, "");
int rows, columns;
cout << "Введите количество строк" << endl;
cin >> rows;
cout << "Введите количество столбцов" << endl;
cin >> columns;
int** p_darr = new int* [rows]; //создаем двумерный динамический массив
for (int i = 0; i<rows; i++)
p_darr[i] = new int [columns];

cout << "Введите элементы" << endl;
for (int i = 0; i<rows; i++)
for(int j = 0; j<columns; j++)
cin >> p_darr[i][j];

for (int i = 0; i<rows; i++) //выводим массив на экран
{
for(int j = 0; j<columns; j++)
{
cout << p_darr[i][j] << " ";
}
cout << endl;
}
cout << endl<<endl;

for (int i=0; i<rows; i++) //симметрично меняем строки местами
{
 int tmp, mm = columns-1, j=0;
while (j!=mm)
{
tmp=p_darr[i][j];
p_darr[i][j++]=p_darr[i][mm];
p_darr[i][mm--]=tmp;
if (j==(rows/2))
break;
}
}

for (int i = 0; i<rows; i++) //выводим массив на экран
{
for(int j = 0; j<columns; j++)
{
cout << p_darr[i][j] << " ";
}
cout << endl;
}

delete[] p_darr;
}



/* 46. Разработать программу, которая в двумерном массиве производит циклический сдвиг на k
столбцов вправо или влево. Размерность,  элементы двумерного массива, а также значение k и направление сдвига задаются с клавиатуры.
*/


#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;

class Matrix
{
private:
    int rows;
    int column;
    int** matrix;
   
public:
    Matrix():rows(0), column(0)
    {}
    void get_data()
    {
        cout << "Введите количество строк а затем столбцов" << endl;
        cin >> rows;
        cin >> column;

    }
    void filling ()
    {
        matrix = new int* [rows];
        for (int i = 0; i<rows; i++)
            matrix[i] = new int [column];

        cout << "Введите элементы" << endl;
for (int i = 0; i<rows; i++)
for(int j = 0; j<column; j++)
cin >> matrix[i][j];
    }
    void display()
    {
        for (int i = 0; i<rows; i++)
        {
            for (int j = 0; j<column; j++)
            {
                cout << matrix[i][j] << " ";
            }
            cout << endl;
        }
    }

    void sdvig(int k)
    {
for(int i = 0; i < rows; i++)
{
for(int j = 0; j < column; j++)
{
if(k > 0)
cout <<setw(4) << matrix[i][(j + k) % column];
else
cout << setw(4) << matrix[i][abs(j - k) % column];
}
cout << "\n\n";
}
}
};


void main()
{
setlocale (0, "");
int k;
cout << "Введите количество столбцов, на которые происходит сдвиг" << endl;
cin >> k;
    Matrix matrix;
    matrix.get_data();
matrix.filling();
    matrix.display();
cout << endl << endl;
    matrix.sdvig(k);
    cout << endl << endl;
}





/* 48. Разработать программу, которая вычисляет наименьшее общее кратное двух введенных с клавиатуры целых чисел. Вычисление наименьшего кратного двух чисел оформить в виде функции.
*/


#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
int NOD(int, int);
setlocale (0, "");
int a, b;
    cout << "Введите 1 и второе число " << endl;
    cin >> a >> b;
cout << "НОД: " << NOD(a, b) << endl;
}

/////////////////////////////////////////////////////
int NOD(int a, int b)
{
    while (a && b)
        a > b ? a %= b : b %= a;
    return a | b;
}







 /* 49. Разработать программу вычисления периметр треугольника, заданного координатами своих вершин.
Координаты вершин задаются с клавиатуры. Вычисление длины отрезка между двумя точками организовать в виде функции. Длина отрезка между двумя точками вычисляется по формуле:  ,
где   - координаты первой точки, а   - координаты второй  точки. Вычисление периметра треугольника также организовать в виде функции.
*/


#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
setlocale (0, "");
int x[3], y[3];
double p, segment[3];
void Segment (int, int, int, int, double &);
void perimeter (float, float, float, double &);

cout << "Введите координаты 1 точки (х1, у1)" << endl;
cin >> x[0] >> y[0];
cout << "Введите координаты 2 точки (х2, у2)" << endl;
cin >> x[1] >> y[1];
cout << "Введите координаты 3 точки (х3, у3)" << endl;
cin >> x[2] >> y[2];

Segment (x[0], x[1], y[0], y[1], segment[0]);
Segment (x[1], x[2], y[1], y[2], segment[1]);
Segment (x[2], x[0], y[2], y[0], segment[2]);
perimeter (segment[0], segment[1], segment[2], p);

cout << "Периметр треугольника = " << p << endl;
}
//////////////////////////////////////////////////
void Segment (int x1, int x2, int y1, int y2, double & segment)
{
segment = sqrt(((x1-x2)*(x1-x2)) + ((y1-y2)*(y1-y2)));
}
///////////////////////////////////////////////////
void perimeter (float s1, float s2, float s3, double & p)
{
p = s1+s2+s2;
}






/* 51. Определить функцию вычисления корней квадратного уравнения. Функция должна возвращать значение 1,
если корни найдены, значение 0, если два корня совпадают, и значение -1, если корней не существует.
Значения найденных корней должны возвращаться в качестве аргументов функции, передаваемых по ссылке.
Разработать программу,  которая использует созданную функцию.

*/


#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;

void main()
{
setlocale (0, "");
int  ch;
double x1=0, x2=0, a, b, c;
int quadratic (double , double , double , double &, double &);

cout << "Введите а, b, c" << endl;
cin >> a >> b >> c;
ch = quadratic (a, b, c, x1, x2);
cout << ch << endl << "x1 = " << x1 << endl << "x2 = " << x2 << endl;
}

//////////////////////////////////////////////////

int quadratic (double a, double b, double c, double& x1, double& x2)
{
    double D = b*b- 4.0*a*c;
    if (D < 0)
        return -1;
    if(a==0)
    {
           if(b==0)
               return -1;
          x2=x1=-c/b;
          return 0;
    }
    if (D == 0)
    {
        x1 = -b/(2.0*a);
        x2  =x1;
        return 0;
    }
    x1 = (-b + sqrt(D)) / (2.0*a);
    x2 = (-b - sqrt(D)) / (2.0*a);
    return 1;
}





/* 52. Разработать программу, предназначенную для обработки информации о матчах, сыгранных футбольной командой.
Количество сыгранных матчей и заработанное в них количество очков вводится с клавиатуры. За матч команда получает либо
3 очка в случае победы, либо 0 очков – в случае поражения, либо 1 очко, если игра закончилась «в ничью».  В программе определить следующие функции:
а) функция динамического выделения памяти под массив;
б) функция заполнения массива данными с клавиатуры;
в) функция для вычисления суммарного количества заработанных очков;
г) функция для вычисления количества матчей, в которых команда не проиграла и количество матчей, в которых было поражение.


*/


#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
setlocale (0, "");
int match, *game, sum = 0, count_win = 0, count_fall = 0;
void dynamic_memory_allocation (int, int*&);
void get_data (int, int[]);
void sum_point (int, int[] , int&);
void win_fall (int, int[], int&, int&);

cout << "Введите количество матчей" << endl;
cin >> match;
dynamic_memory_allocation (match, game);
get_data(match, game);
sum_point (match, game, sum);
cout << "Общее количество очков = " << sum << endl;
win_fall (match, game, count_win, count_fall);
cout << "Команда выиграла или сыграла в ничью " << count_win << " раз" << endl;
cout << "Команда проиграла " << count_fall << " раз" << endl;
}

//////////////////////////////////////////////////

void dynamic_memory_allocation (int m, int*& g)
{
g = new int[m];
}
///////////////////////////////////////////////////

void get_data (int m, int g[])
{
for(int i=0; i<m; i++)
{
cout << "Введите исход матча " << i+1 << endl << "За матч команда получает либо 3 очка в случае победы, либо 0 очков – в случае поражения, либо 1 очко, если игра закончилась «в ничью»" << endl;
cin >> g[i];
}
}
////////////////////////////////////////////////////

void sum_point (int m, int g[], int& s)
{
for(int i=0; i<m; i++)
s += g[i];
}
///////////////////////////////////////////////////

void win_fall (int m, int g[], int& cw, int& cf)
{
for(int i=0; i<m; i++)
{
if ((g[i] == 1) || (g[i] == 3))
cw++;
if (g[i] == 0)
cf++;
}
}



/* 53. Разработать программу, которая в двумерном массиве целых чисел выполнит перестановку строк следующим образом:
первую с последней, вторую - с предпоследней и т.д. Размерность матрицы задается с клавиатуры.
Элементы матрицы заполняются псевдослучайными числами. В программе определить следующие функции:
а) функция динамического выделения памяти под двумерный массив;
б) функция заполнения двумерного массива псевдослучайными числами;
в) функция вывода элементов массива в виде матрицы;
г) функция обмена строк.

*/

 #include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;

void main()
{
setlocale (0, "");
int **matrix, rows, columns;
void dynamic_memory_allocation (int, int, int**&);
void random (int**&, int, int);
void display (int, int, int**&);
void exchange_rows (int, int, int**&);
cout << "Введите количество строк а затем столбцов" << endl;
     cin >> rows >> columns;
dynamic_memory_allocation (rows, columns, matrix);
random (matrix, rows, columns);
display (rows, columns, matrix);
exchange_rows (rows, columns, matrix);
display (rows, columns, matrix);
}

///////////////////////////////////////////////////////////////////
void dynamic_memory_allocation (int row, int col, int**& matr)
{
matr = new int* [row];
    for (int i = 0; i<row; i++)
         matr[i] = new int [col];
}
//////////////////////////////////////////////////////////////////////
void random (int**& matr, int row, int col)
 {
for (int i = 0; i<row; i++)
for(int j = 0; j<col; j++)
 matr[i][j] = 1+rand()%9;
 }
//////////////////////////////////////////////////////////////////
void display (int row, int col, int**& matr)
{
    for (int i = 0; i<row; i++)
    {
        for (int j = 0; j<col; j++)
        {
            cout << matr[i][j] << " ";
        }
        cout << endl;
    }
cout << endl << endl;
}
///////////////////////////////////////////////////////////////////////
void exchange_rows (int row, int col, int**& matr)
{
    int temp;
    for(int i=0, m=row-1; i<row/2; ++i, --m)
        for(int j=0; j<col; ++j)
        {
            temp = matr[i][j];
            matr[i][j] = matr[m][j];
            matr[m][j] = temp;
        }
}




// ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
//54. Разработать программу, которая вычисляет квадрат и куб введенного с клавиатуры числа, используя указатели на функции.

#include "stdafx.h"
#include <iostream>
using namespace std;


int main()
{
int square (int);
int cube (int);
int a, b, c;
int (*A) (int) = square;
int (*B) (int) = cube;
cout << "Enter a" << endl;
cin >> c;
a = A(c);
cout << a << endl;
b = B(c);
cout << b << endl;
return 0;
}

int square (int a)
{
return a*a;
}
int cube (int b)
{
return b*b*b;
}







//55. Определить рекурсивную функцию:
//а) вычисления суммы цифр натурального числа;
//б) вычисления количества цифр натурального числа.
//Разработать программу, в которой используются созданные функции.



#include "stdafx.h"
#include <iostream>
using namespace std;

int summa (int, int);
 int kol (int, int);
int main()
{
int a;
cout << "Enter num" << endl;
cin >> a;
cout <<  summa(a, 0) << endl;
cout << kol(a, 0) << endl;

return 0;
}


int summa (int a, int sum = 0)
{
if (a >= 1)
{
sum += a%10;
a /= 10;
summa(a,sum);
}
else
return sum;
}

  int kol (int a, int k = 0)
{
if (a >= 1)
{
k ++;
a /= 10;
kol(a, k);
}
else
return k;
}




/* 56. Даны первый член и разность арифметической прогрессии. Написать рекурсивную функцию для нахождения:
а) n-го члена прогрессии;
б) суммы n первых членов прогрессии.
*/




#include "stdafx.h"
#include <iostream>
using namespace std;


int progress_n (int a, int n, int d);
int progress_s (int a, int d, int sum, int n);

int main()
{
int a, d, n, sum = 0;
cout << "enter first num" << endl;
cin >> a;
cout << "Enter d" << endl;
cin >> d;
cout << " Enter n" << endl;
cin >> n;
cout << progress_n(a,n,d) << endl;
cout << progress_s(a, d, sum, n) << endl;

return 0;
}

int progress_n (int a, int n, int d)
{
if(n>1)
{
a +=d;
n--;
progress_n(a,n,d);
}
else
return a;
}

int progress_s (int a, int d, int sum, int n)
{
if(n>=1)
{
sum+=a;
a+=d;
n--;
progress_s(a,d,sum,n);
}
else
return sum;
}



/*
57. Написать рекурсивную функцию для вычисления максимального элемента массива из п элементов.
 */

#include "stdafx.h"
#include <iostream>
using namespace std;
void dynamic_memory_allocation(int*&, int);
void random(int*&, int);
int maximum(int*&, int&,int&);
int main()
{
    int *matrix, columns, max;
    max = 0;
    cout << "Enter size" << endl;
    cin >> columns;
    dynamic_memory_allocation(matrix, columns);
    random(matrix, columns);
    cout << maximum(matrix,columns,max) << endl;
    system("pause");
    return 0;
}
///////////////////////////////////////////////////////////////
void dynamic_memory_allocation(int*& matr, int columns)
{
    matr = new int[columns];
}
//////////////////////////////////////////////////////////////
void random(int*& matr, int col)
{
    for (int i = 0; i < col; i++)
    {
        matr[i] = 1 + rand() % 9;
        cout << matr[i]<<endl;
    }
       

}
////////////////////////////////////////////////////////////////
int maximum(int*& matr, int& col,int &max)
{

    if (col > 1)
    {
        if (matr[col-1] > max)
            max = matr[col-1];
        cout << matr[col - 1] << endl;
        col--;
        maximum(matr,col,max);
    }
    else
    {
        return max;
    }  
}





/*
58. Написать рекурсивную процедуру для вывода на экран цифр натурального числа в обратном порядке. */

#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;

void Reverse(int n)
{
    if(!n)
        return;

    cout << n%10;
    Reverse(n/10);
}


int main()
{
    float n;
    cout << "Enter number: ";
    cin >> n;
    Reverse(fabs(n));
cout << endl;

    return 0;
}



/*
59. Дано предложение, заканчивающееся точкой. Разработать программу, которая:
-  удаляет все лишние пробелы между словами предложения;
- удаляет во всех словах одинаковые символы, стоящие подряд, оставив только один;
- выделяет предпоследнее слово в предложении и выводит его на экран.

 */

#include "stdafx.h"
#include <string.h>
#include <conio.h>
#include <iostream>
using namespace std;
//---------------------------------------------------------------------------

extern void deletes(char *s, int pos);
void unique(char* s);
 void pre_word (char* s);

 void deletes(char *s, int pos)
{
int i;
if ((s[pos]== ' ') && (s[pos+1]== ' '))
{
deletes(s,pos+1);
}
for (i = pos; i < strlen(s)-1; i++)
{
s[i]=s[i+1];
}
s[i]=0;
}

 void unique(char* s)
{
char *dst = s, *src = s;
while (*src++ != '\0')
{
if (*src != *dst)
*++dst = *src;
}
}

 void pre_word (char* s)
 {
int slen = 0, count = 0, index = 0;

    for(slen = 0; s[slen]!='\0'; slen++)
{}
   
    for(int i = slen; i!=0; i--)
{
        if( s[i] == ' ' )
{
count++;
}
        if( count == 2 )
{
index = i+1; break;
}
    }

    for(int i = index; s[i]!=' '; i++)
{
        cout << s[i];
    }
 }

int main()
{
char s[150];
int i;
gets_s(s);
for (i = 0; i < strlen(s); i++)
{
if ((s[i]==' ') && (s[i+1]==' '))
deletes(s,i+1);
}
cout <<s << endl;

unique(s);
cout <<s << endl;

pre_word (s);
cout << endl;

}




/*
60. Имеет текст стандартного приглашения: «Dear, ____.  Invite you …».
С клавиатуры задается имя гостя. Сформировать строку приглашения, в которую вставлено
введенное имя гостя. Решить задачу, используя стандартные функции библиотеки string.h.
 */

#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;



int main()
{
string name;
string invitation = ( "Dear, . Invite you... ");
cout << "Enter name" << endl;
getline (cin, name);
invitation.insert(6, name);
cout << invitation << endl;
}







/*
61. Дана строка, содержащая буквы и цифры.  Разработать программу, которая будет вычислять сумму чисел,
образованных цифрами в строке. Например, для строки “asdd100 fsdf 20 hghg 5 ghg” это значение равно 125.
 */

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <cctype>
using namespace std;

int main()
{
    int n;
    int sum = 0;
    char ch;
   
    while ((ch = cin.get()) != '\n')
    {
        if (isdigit(ch))
        {
            cin.putback((unsigned char)ch);
            cin >> n;
            sum += n;
            cin.clear();
        }
    }
    cout << "sum = " << sum << endl;
    system("pause");
    return 0;
}








/*
/*
62. Разработать программу обработки данных железнодорожного расписания. Известно расписание поездов,
проходящих через станцию: номер поез¬да, назначение (откуда куда, например, Москва—Омск), часы и мину¬ты прибытия,
часы и минуты отправления. Значения часов и минут целые, положительные числа; число часов не превышает 23, число минут – 59.
Общее количество проходящих поездов равно 25. Поезда приходят каждый день по одному расписанию. По заданному времени определить,
какие поезда (номер и назначе¬ние) стоят в этот момент на станции и сколько времени осталось до отправления каждого.
*/



#include "stdafx.h"
#include <iostream>
using namespace std;
 const int NUM_OF_TRAIN = 25;
 const int MAX = 80;


struct Time
{
int hour, minutes;
};

struct Train
{
char direction[MAX];
Time arival, departure;
};


void random(Train*);

int main()
{
Train trains[NUM_OF_TRAIN];
Time time_user;
int hour_to_minutes(Time);
random(trains);
cout << "Enter time (h, m)" << endl;
cin >> time_user.hour >> time_user.minutes;
for (int i = 0; i<NUM_OF_TRAIN; i++)
{
if (hour_to_minutes(trains[i].arival) > hour_to_minutes(trains[i].departure))
{
if ((hour_to_minutes(time_user) >= hour_to_minutes(trains[i].arival) && hour_to_minutes(time_user) <= 1439) || (hour_to_minutes(time_user) >= 0 && hour_to_minutes(time_user) <= hour_to_minutes(trains[i].departure)))
{
if (hour_to_minutes(trains[i].departure) >= hour_to_minutes(time_user))
{
cout << "remaining time: " << (1439 - hour_to_minutes(trains[i].arival) + hour_to_minutes(time_user)) / 60 << " hour " <<  (1439 - hour_to_minutes(trains[i].arival) + hour_to_minutes(time_user)) % 60 << " minutes" << endl;
cout << "Direction: " << trains[i].direction << endl << "------------------------------------------" << endl;
}

if (hour_to_minutes(time_user) >= hour_to_minutes(trains[i].arival))
{
cout << "remaining time: " << (hour_to_minutes(time_user) - hour_to_minutes(trains[i].arival)) / 60 << " hour " <<  (hour_to_minutes(time_user) - hour_to_minutes(trains[i].arival)) % 60 << " minutes" << endl;
cout << "Direction: " << trains[i].direction << endl << "------------------------------------------" << endl;
}
}
}

if (hour_to_minutes(trains[i].arival) < hour_to_minutes(trains[i].departure))
{
if ((hour_to_minutes(time_user) > hour_to_minutes(trains[i].arival)) && (hour_to_minutes(time_user) < hour_to_minutes(trains[i].departure)))
{
cout << "remaining time: " << ((hour_to_minutes(trains[i].departure) - hour_to_minutes(time_user)) / 60) << " hour " <<  ((hour_to_minutes(trains[i].departure) - hour_to_minutes(time_user) % 60)) <<  " minutes" << endl;
cout << "Direction: " << trains[i].direction << endl << "------------------------------------------" << endl;
}
}
}
return 0;
};

void random(Train trains[])
{
char *directions[NUM_OF_TRAIN] = { "baranovichi-zhitomir",
"minsk-simferopol",
"kaliningrad-adler",
"minsk-odessa",
"minsk-simferopol",
"minsk–kalinkovichi–gomel",
"minsk-gomel",
"minsk-adler",
"minsk-mineralnye",
"minsk-anapa",
"minsk-feodosiya",
"minsk-kiev",
"minsk-simferopol",
"baranovichi-mariupol",
"minsk-evpatoriya",
"simferopol-minsk",
"grodno-gomel",
"simferopol-minsk",
"gomel-minsk",
"minsk–kalinkovichi",
"mariupol-minsk",
"minsk-kishinev",
"baranovichi-zhitomir",
"minsk-simferopol",
"kaliningrad-adler"};

for (int i = 0; i<NUM_OF_TRAIN; i++)
{
trains[i].arival.hour = 0+rand()%23;
cout << "Time arrival: " << trains[i].arival.hour << " hour, ";
trains[i].arival.minutes = 0+rand()%59;
cout << trains[i].arival.minutes << " minutes" << endl;
trains[i].departure.hour = 0+rand()%23;
cout << "Time departure: " << trains[i].departure.hour << " hour, ";
trains[i].departure.minutes = 0+rand()%59;
cout << trains[i].departure.minutes << " minutes" << endl;
strcpy_s(trains[i].direction, directions[i]);
cout << trains[i].direction << endl << "-----------------------------------------------" << endl;
}
};


int hour_to_minutes(Time T)
{
return (T.hour*60)+T.minutes;
};






/*
63. Разработать программу, предназначенную для обработки данных ГАИ о владельцах автотранспорта и зарегистрированных на них автомобилей.
О владельцах автотранспорта хранится следующая информация: фамилия, имя, отчество, год рождения, серия и номер паспорта, дата выдачи и адрес прописки,
номер и категория прав, список правонарушений. Об автотранспорте хранится следующая информация: марка автомобиля и название модели, дата выпуска, дата прохождения последнего ТО,
номерной знак, факт участия в ДТП. Организовать данные о паспорте и автотранспорте в виде отдельных структур, которые используются внутри структуры, описывающей автовладельца.
Учесть возможность владения несколькими автомобилями. Возможные правонарушения организовать в виде перечисления. Краткая информация о ДТП, представленная битовыми полями,
должна включать информацию о вине водителя, количестве пострадавших и количестве транспортных средств, пострадавших в ДТП.
В программе создать массив, предназначенный для хранения данных 10 автовладельцев. Для общения с пользователем использовать систему текстового меню. Программа должна предоставлять следующий набор функций:
а) добавление данных о новом транспортном средстве автовладельца;
б) редактирование паспортных данных автовладельца;
в) добавление информации о правонарушении;
г) добавление информации о ДТП;
д) вывод информации о всех транспортных средствах (ФИО владельца в том числе);
е) поиск информации о транспортных средствах, зарегистрированных на данного автовладельца (поиск осуществлять по фамилии);
ж) поиск информации о владельце по части номерного знака;
з) вывод информации о всех транспортных средствах, вовремя не прошедших ТО;
и) вывод информации о всех автовладельцах, которые управляли транспортом в нетрезвом виде;
к) вывод информации о всех транспортных средствах, участвовавших в ДТП.

*/-------------------------------------------



#include "stdafx.h"
#include <iostream>
using namespace std;

struct Date
{
int day, nomth, year;
};

struct Auto
{
string mark, date_release, date_TO, number, offence;
};

struct Owner
{
Auto auto_owner;
string name, soname, patronymic, passport, adress, number_category, offense;
Date date, date_ofissue;
};






int main()
{

return 0;
};


// 64. Дан текстовый файл. Вывести на экран те строки файла, которые содержат в качестве фрагмента заданный текст.
//

#include "stdafx.h"
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
const int MAX = 300;
char buffer[MAX], buf_user[MAX];
bool flag;
cout << "Enter part of text" << endl;
cin.get(buf_user, MAX);
ifstream infile ("fdata.txt"); // создаем обьект класса ifstream под названием infile, инициализируем его текстовым файлом
while ( !infile.eof() ) // пока файл не кончится
{
flag = true;
infile.getline(buffer, MAX); // получаем строку из файла и пишем ее в буфер
char* p=strstr(buffer,buf_user); // Функция strstr ищет первое вхождение строки А в строку В.
        if (p!=NULL)
             cout << "string" << endl << buf_user << endl << "present in the file" << endl; // выводим буфер на экран
        else
            cout << "string" << endl << buf_user << endl << "NOT present in the file"<< endl; // выводим буфер на экран

}

return 0;
}







/*
65. Дан массив строк. Записать их в файл, расположив каждый элемент массива на отдельной строке с сохранением порядка.
*/

#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;


int main()
{
setlocale(0, "");
char text[4][200];
int r[4];
for(int i = 0; i< 4; i++)
{
cin.getline(text[i],200);
r[i] = strlen(text[i]);
}
for(int i = 0; i< 4; i++)
{
for(int j = 0; j< r[i]; j++)
cout<< text[i][j];
cout << endl;
}
ofstream f("file.txt");
for(int i = 0; i< 4; i++)
{
f << text[i];
f << '\n';
}
system("pause");
return 0;
}














++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




















// 1. создать класс окружность. определить методы для создания обьектов, перемещения на плоскости, определения площади, изменения/вывода параметров.
//в программе создать 3 окружности и сосчитать их суммарную площадь

#include "stdafx.h"
#include <iostream>

using namespace std;

class Circle
{
private:
float radius;
int X;
int Y;
float area;
public:
Circle():radius(0), X(0), Y(0), area(0)
{}
void get_circle()
{
cout << "Введите радиус окружности" << endl;
cin >> radius;
cout << "Введите координаты центра, X, Y" << endl;
cin >> X;
cin >> Y;
}

void shifting_center(int Ox, int Oy) // перенос центра на заданные координаты
{
Ox = X;
Oy = Y;
}
void shear_center_right_left(int num)//сдвиг центра влево -вправо на num шагов
{
X += num;
}
void shear_center_up_down(int num)//сдвиг центра вверх-вниз на num шагов
{
Y += num;
}
void display()
{
cout << "Радиус = " << radius << endl << "X = " << X << endl << "Y = " << Y << endl;
}
float Area()
{
area = 3.1415926 * radius * radius;
return area;
}
};


void main()
{
short operation;
int number, number1;
char ch;
setlocale (0, "");
Circle circle[3];
do
{
cout << "какую операцию вы хотите произвести? \n 1 - нахождение площади круга \n 2 - перенос центра на заданные координаты \n 3 - сдвиг центра вверх-вниз на n шагов \n 4 - сдвиг центра влево-вправо на n шагов \n 5 - ввести 3 круга и сосчитать их суммарную площадь" << endl;
cin >> operation;

if (operation == 1)
{
circle[0].get_circle();
circle[1].get_circle();
circle[2].get_circle();
cout << "Сумма площадей трех кругов = " << circle[0].Area() + circle[1].Area() + circle[2].Area() << endl;
}

if ( operation == 3 || operation == 4 )
{
circle[0].get_circle();
cout << "Введите число шагов" << endl;
cin >> number;
if (operation == 4)
circle[0].shear_center_up_down(number);
if(operation == 5)
circle[0].shear_center_right_left(number);
circle[0].display();
}

if(operation == 2)
{
cout << "Введите х" << endl;
cin >> number;
cout << "Введите y" << endl;
cin >> number1;
circle[0].shifting_center(number, number1);
circle[0].display();
}
cout << "Повторить? (y/n)" << endl;
cin >> ch;
}
while (ch != 'n');
}





// 2. создать класс содержащий почтовый  адрес организации. предусмотреть возмость раздельного изменения/вывода составных частей адреса, создания и уничтожения обьектов этого класса.
//

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class Adress
{
private:
string country;
string city;
int num_build;
int num_flat;
int index;
public:
~Adress()
{}
void get_cou()
{
cout <<  "Введите страну" << endl;
getline(cin, country);
cin.clear();
}
void get_ci()
{
cout <<  "Введите город" << endl;
getline(cin, city);
cin.clear();
}
void get_build()
{
cout <<  "Введите номер дома" << endl;
cin >> num_build;
}
void get_fl()
{
cout <<  "Введите номер квартиры" << endl;
cin >> num_flat;
}
void get_ind()
{
cout <<  "Введите индекс" << endl;
cin >> index;
}
void display_ad()
{
cout << "Страна: " << country << endl << "Город: " << city << endl << "Номер дома: " << num_build << endl << "Номер квартиры: " << num_flat << endl << "Индекс: " << index << endl;
}
};


void main()
{
setlocale (0, "");
int ch;
Adress adress;

adress.get_cou();
adress.get_ci();
adress.get_build();
adress.get_fl();
adress.get_ind();

adress.display_ad();

cout << "Что вы желаете изменить? \n 1. Страну \n 2. город \n 3. Номер дома \n 4. Номер квартиры \n 5. Индекс" << endl;
cin >> ch;
if (ch == 1)
adress.get_cou();
if (ch == 2)
adress.get_ci();
if (ch == 3)
adress.get_build();
if (ch == 4)
adress.get_fl();
if (ch == 5)
adress.get_ind();

adress.display_ad();
}





// 3. Создать класс, хранящий такую информацию о пользователе библиотеки: ФИО, номер читательского билета, фак, дата рождения, телефон. разработать программу в которой создается массив обьектов данного класса.
//в программе организовать ввод данных о читателях, вывод данных масива на экран, поиск (по фамилии или факультету) и вывод информации о читателях.
//-------------------

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class Students
{
private:
string name;
string soname;
int num;
string fakult;
string dateob;
long phone;
public:
void get_data()
{
cout << "Enter name" << endl;
getline(cin, name);
cin.clear();
cout << "Enter soname" << endl;
getline(cin, name);
cin.clear();
cout << "Enter number" << endl;
cin >> num;
cin.clear();
cout << "Enter fakultat" << endl;
getline(cin, fakult);
cin.clear();
cout << "Enter date of birth" << endl;
getline(cin, dateob);
cin.clear();
cout << "Enter phone" << endl;
cin >> phone;
cin.clear();
}

void display()
{
cout << "Name: " << name << endl
<< "Soname: " << soname << endl
<< "Number: " << num << endl
<< "Fakultat: " << fakult << endl
<< "Date of birth: " << dateob << endl
<< "Phone: " << phone << endl;
}

bool search(string s)
{
if ((s == soname) || (s == fakult))
return true;
else
return false;
}
};

void main()
{
Students students[1];
string srch;
bool flag;
for (int i = 0; i<1; i++)
students[i].get_data();
for (int i = 0; i<1; i++)
students[i].display();

cout << "Enter soname or facultat" << endl;
getline(cin, srch);
cin.clear();
for (int i = 0; i<1; i++)
{
flag = students[i].search(srch);
if (flag = true)
students[i].display();
}
}


// 4.
//

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class Complex
{
private:
double Rez;
double Imz;
public:
Complex() : Rez(0), Imz(0)
{}
Complex (double rez, double imz) : Rez(rez), Imz(imz)
{}
void display()
{
cout << "Complex number: " << Rez;
if (Imz >= 0)
cout << "+" << Imz << "i" << endl;
else
cout << Imz << "i" << endl;
}
Complex operator + (Complex c2)
{
double rez = Rez + c2.Rez;
double imz = Imz + c2.Imz;
return Complex (rez, imz);
}
Complex operator - (Complex c2)
{
double rez = Rez - c2.Rez;
double imz = Imz - c2.Imz;
return Complex (rez, imz);
}
Complex operator * (Complex c2)
{
double rez = Rez * c2.Rez - Imz * c2.Imz;
double imz = Rez * c2.Imz + Imz * c2.Rez;
return Complex (rez, imz);
}
void get()
{
cout << "Enter Rez" << endl;
cin >> Rez;
cout << "Enter Imz" << endl;
cin >> Imz;
}
};

void main()
{
Complex C1, C2, C3;
C1.get();
C2.get();
C3 = C1+C2;
C3.display();
C3 = C1-C2;
C3.display();
C3 = C1*C2;
C3.display();
}







// 5.
//

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class Vector
{
private:
int X, Y, Z;
public:
Vector() : X(0), Y(0), Z(0)
{}
Vector (int x, int y, int z) : X(x), Y(y), Z(z)
{}
Vector operator + (Vector v2)
{
int x = X + v2.X;
int y = Y + v2.Y;
int z = Z + v2.Z;
return Vector (x, y, z);
}
Vector operator - (Vector v2)
{
int x = X - v2.X;
int y = Y - v2.Y;
int z = Z - v2.Z;
return Vector (x, y, z);
}
Vector operator * (Vector v2)
{
int x = X * v2.X;
int y = Y * v2.Y;
int z = Z * v2.Z;
return Vector (x, y, z);
}
double length()
{
double lngth = sqrt(X*X + Y*Y + Z*Z);
return lngth;
}
void get()
{
cout << "Enter X" << endl;
cin >> X;
cout << "Enter Y" << endl;
cin >> Y;
cout << "Enter Z" << endl;
cin >> Z;
}
void display()
{
cout << "X: " << X << endl;
cout << "Y: " << Y << endl;
cout << "Z: " << Z << endl;
}
};

void main()
{
Vector v1, v2, v3;
double len;
cout << "Enter 1-st vector" << endl;
v1.get();
cout << "Enter 2-nd vector" << endl;
v2.get();
v3 = v1 + v2;
cout << "Sum: " << endl;
v3.display();
v3 = v1 - v2;
cout << "Difference: " << endl;
v3.display();
v3 = v1 * v2;
cout << "scalar product: " << endl;
v3.display();
len = v1.length();
cout << "Length 1-st vector: " << len << endl;
len = v2.length();
cout << "Length 2-nd vector: " << len << endl;
}






// 7.
//

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class Man
{
private:
string name;
int age;
string gender;
int weight;

public:
void get()
{
cout << "Enter name" << endl;
cin >> name;
cout << "Enter age" << endl;
cin >> age;
cout << "Enter gender" << endl;
cin >> gender;
cout << "Enter weight" << endl;
cin >> weight;
}
};

class Strudent : private Man
{
private:
int year_study;
public:
void get_y()
{
Man::get();
cout << "Enter year study" << endl;
cin >> year_study;
}
void incr_year()
{
year_study++;
}

};

void main()
{

}





// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//8/ создать базовый класс car характеризуемій торговой маркой (строка), весом и мощностью.
//определить методі переназначени и изменения мощности. создать производній класс lorry (грузовик)
//характеризуемый также грузоподьемностью кузова.
//определить для него функции переназначения марки и изменения грузоподъемности

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

class Car
{
private:
string mark;
int weight;
int power;
public:
void rename_power ()
{
cout << "Enter new power" << endl;
cin >> power;
}
void get()
{
cout << "Enter mark auto" << endl;
cin >> mark;
cout << "Entert weight" << endl;
cin >> weight;
cout << "Enter power"<< endl;
cin >> power;
}
string return_mark()
{
return mark;
}
int return_weight()
{
return weight;
}
int return_power()
{
return power;
}
};

class Lorry : public Car
{
private:
int carrying_capacity;
public:
void recarrying_capacity()
{
cout << "Enter new carrying capacity" << endl;
cin >> carrying_capacity;
}
void remark()
{
cout << "Enter new mark" << endl;
cin >> Car::return_mark();
}
void get_lorry()
{
Car::get();
cout << "Enter carrying capacity" << endl;
cin >> carrying_capacity;
}
void display()
{
cout << "Mark: " << Car::return_mark() << endl;
cout << "Weight: " << Car::return_weight() << endl;
cout << "Power: " << Car::return_power() << endl;
cout << "carryng capacity: " << carrying_capacity << endl;
}

};

void main()
{
Lorry lorry;
lorry.get();
lorry.remark();
lorry.recarrying_capacity();
lorry.display();
}

Комментарии

Отправить комментарий

Популярные сообщения из этого блога

ВОПРОС К ЧИТАТЕЛЯМ

Уважаемые читатели моего блога и просто проходящие мимо! У меня появилась идея заняться созданием уроков по интересующим вас темам. Предпочтительно на C++, но не ограничиваясь ими, я хочу поделиться своими знаниями не только в виде готового кода но и подробными объяснениями что к чему. Прошу вас, если вы имеете идею и хотели бы разобраться в какой-то теме - отпишитесь в комментариях, что было бы вам интересно. Постараюсь помочь. 

7 глава, Лафоре Р

*1. Напишите функцию reversit(), которая переворачивает строку (массив типа char). Используйте цикл for, который меняет местами первый и последний символы, затем следующие и т. д. до предпоследнего. Строка должна пере- даваться в функцию reversit() как аргумент. Напишите программу для выполнения функции reversit(). Программа долж- на принимать строку от пользователя, вызывать функцию reversit(), а за- тем выводить полученный результат. Используйте метод ввода, который позволяет использовать внутренние пробелы. Протестируйте программу на примере фразы «Аргентина манит негра».

6 глава, Лафоре Р

*1. Создайте класс Int, имитирующий стандартный тип int. Единственное поле этого класса должно иметь тип int. Создайте методы, которые будут устанавливать значение поля, равным нулю, инициализировать его целым значением, выводить значение поля на экран и складывать два значения типа Int. Напишите программу, в которой будут созданы три объекта класса Int, два из которых будут инициализированы. Сложите два инициализирован- ных объекта, присвойте результат третьему, а затем отобразите результат на экране.