
Добавил:
nyan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:C++ / БДЗ С
.txt#include "stdafx.h"
#include <iostream>
#include <clocale>
#include <time.h>
#define N 10
using namespace std;
struct segment
{
int l;
};
struct box
{
struct segment a, b;
};
typedef struct box square;
void Z1();
void Z2();
square init();
square init(square S);
void init(square S[N]);
void perimeter(square S);
void printinfo(square S);
int main()
{
int Num;
setlocale(LC_ALL, "Russian");
srand(time(0));
while (1)
{
cout << "Введите номер задания лабораторной работы, решение которого вы хотите увидеть," << endl;
cout << "или нажмите 0 для выхода" << endl;
cin >> Num;
switch (Num)
{
case 0: return (0);
break;
case 1: Z1();
break;
case 2: Z2();
break;
}
}
}
void Z1()
{
square first, second;
first = init();
printinfo(first);
second = init(first);
printinfo(second);
cout << endl;
}
void Z2()
{
square S[N];
segment L;
L.l = 0;
int n = 0;
init(S);
cout << "\nВведите длину стороны" << endl;
while (L.l < 1)
{
cin >> L.l;
if (L.l < 1)
cout << "Сторона должна быть положительным числом" << endl;
}
cout << endl;
//определяем число элементов со строкой большей L.l
for (int i = 0; i < N; i++)
if (S[i].a.l > L.l && S[i].b.l > L.l)
n++;
if (n != 0)
{
square *M = new square[n];
cout << "Прямоугольники, у которых каждая сторона больше, чем " << L.l << endl << endl;
for (int i = 0, k = 0; i < N; i++)
if (S[i].a.l > L.l && S[i].b.l > L.l)
{
M[k] = S[i];
cout << "Прямоугольник №" << i + 1 ;
printinfo(M[k]);
k++;
}
delete[]M;
}
else
cout << "Нет прямоугольников, у которых каждая сторона больше, чем " << L.l << endl;
}
square init()
{
square S;
cout << "Введите стороны прямоугольника:" << endl;
cin >> S.a.l >> S.b.l;
return S;
}
square init(square S)
{
square M;
int k;
cout << "Введите коэффициент, на который надо умножить прямоугольник" << endl;
cin >> k;
M.a.l = k*S.a.l;
M.b.l = k*S.b.l;
return M;
}
void init(square S[N])
{
for (int i = 0; i < N; i++)
{
S[i].a.l = rand() % 10+1;
S[i].b.l = rand() % 10+1;
cout << "\nПрямоугольник №" << i + 1 << ": " << S[i].a.l << "\t" << S[i].b.l << endl;
}
}
void perimeter(square S)
{
cout << "Периметр равен: " << (S.a.l + S.b.l) * 2 << endl;
}
void printinfo(square S)
{
cout << "\nСтороны равны: " << S.a.l << "\t" << S.b.l << endl;
perimeter(S);
cout << endl;
}