В универе нам дали под сотню задач. авось, кому и пригодится. написано часто коряво, часто встречаются костыли, препод по программированию был жутко недоволен, но, чисто концептуально можно посмотреть) где стоят значки ---------- значит или не работает код или работает но неверно
//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();
}
//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();
}
Этот комментарий был удален автором.
ОтветитьУдалить