Вы находитесь на странице: 1из 3

Тема: Функции.

Передача массивов
внутрь функции
Домашнее задание 2
Задание 1. Написать перегруженные функции (int, double,
char) для выполнения следующих задач:
■ Инициализация квадратной матрицы;
■ Вывод матрицы на экран;
■ Определение максимального и минимального элемента
на главной диагонали матрицы;
■ Сортировка элементов по возрастанию отдельно для
каждой строки матрицы.

#include<iostream>
#include<time.h>
using namespace std;

int massive(int ms[][10], int raw, int col, int max, int min);

int massive(int ms[][10], int raw,int col, int max, int min)
{

for (int i = 0; i < raw; i++)


{
for (int j = 0; j < col; j++)
{
if (i == j)
{

min = ms[0][0];
max = ms[0][0];
if (ms[i][j] < min) min = ms[i][j];
if (ms[i][j] > max) max = ms[i][j];
cout << " \n";
cout << " " << ms[i][j] << " ";
cout << "\n";

}
}

}
int buf;
for (int i = 0;i < raw;i++)
{
for (int j = col - 1;j > i;j--)
{

if (ms[j - 1] > ms[j])

buf = ms[i][j - 1];


ms[i][j - 1] = ms[i][j];
ms[i][j] = buf;

}
}
return (int)massive( ms[][10], raw, col, max, min);
}
int main()
{
const int n = 10;
int ms1[n][n], ma, mi, i, j, raw1, col1;
srand(time(NULL));
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
ms1[i][j] = rand() % 100;
cout << ms1[i][j] << " ";
}
cout << "\n";
}
cout << "\n";

massive(ms1[n][10],raw1,col1,ma,mi);
cout << "Max = " << ma << "\t" << "Min = " << mi << endl;
return 0;

//тут я заплуталася і не знаю як далі, в 1 задачі

Задание 2. Написать рекурсивную функцию нахождения


наибольшего общего делителя двух целых чисел.

#include <iostream>
using namespace std;
int NOD (int a, int b)
{
if (b == 0)
return a;
if (a > b)
return NOD (b, a % b);
else
return NOD (a, b % a);
}

int main ()
{
setlocale (0, "");
int a, b;
cout << "Введите 2 числа: " << endl;
cin >> a >> b;
cout << "Наибольльший общий делитель равен: " << NOD (b, a % b) << endl;
cin.get();
cin.get();
return 0;
}

Задание 3. Написать игру «Быки и коровы». Программа


«загадывает» четырёхзначное число и играющий должен
угадать его. После ввода пользователем числа программа
сообщает, сколько цифр числа угадано (быки) и сколько
цифр угадано и стоит на нужном месте (коровы). После
отгадывания числа на экран необходимо вывести количество сделанных пользователем
попыток. В программе
необходимо использовать рекурсию.

#include <iostream>
#include <time.h>
using namespace std;
int *m=new int [4];
int *q=new int [4];
static int sproba=0;
int *randNumber()
{
for (int i = 0; i < 4; i++)
*(m+i) = rand()%10;
return m;
}
int *digits(int n)
{
for (int i=3; i>=0; i--)
{
*(q+i)=n%10;
n/=10;
}
return q;
}
void Count(int *x, int *y, int n, int *bull, int *cow)
{
*bull = *cow = 0;
for (int i = 0; i < n; i++)
if (*(x+i) == *(y+i))
(*bull)++;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
if ((*(x+i) == *(y+j)) && (i!=j))
(*cow)++;
}
void game(int *r, int *N)
{
*N=sproba;
cout << "Input your number: ";
int number;
cin >> number;
int *b=digits(number);
int bull, cow;
Count(r, b, 4, &bull, &cow);
cout << "Bulls = " << bull << ", cows = " << cow << endl;
sproba++;
if (bull == 4) cout << "OK!\n";
else game(r, N);
}
void main()
{
int m = 0;
srand(time(NULL));
int *a=randNumber();
game(a, &m);
cout << "Winning in " << m << " moves!\n";
}