//на vs 2010 решается так, в других средах разработки может нужно к заголовкам добавить .h или убрать подключение пространства имен std : (console application)
#include < iostream> #include < stdlib.h> #include < time.h> #include < conio.h> using namespace std; void print(int m, int ** matr) // функция печати матрицы на экран{ for(int i = 0; i< m; i++) { for(int j = 0; j< m; j++) { cout.width(4); cout< < matr[i][j]; } cout< < endl; }}void search_and_print(int x, int **m) //функция поиска элементов с их сортировкой и выводом на экран{ int razmer = ((x*x) - x)/2; int *mas = new int [razmer]; int y = x - 1; float srednee = 0; int index = 0; for (int j = 0; j< y; j++) { for(int i = 0; i< (x-1); i++ ) { mas[index] = m[i][j]; index++; } y--; } for(int i = 0; i< (razmer-1); i++) //сортировка методом выбора. x-1 раз ищем наименьший элемент. { //принимаем за наименьший первый элемент из расматриваемых: int min = i; //поиск минимального элемента из : for(int j = i+1; j< razmer; j++) { //если нашли меньший элемент, запминаем его номер: if(mas[j]< mas[min]) min = j; } //обмен элементов: int a = mas[i]; mas[i] = mas[min]; mas[min] = a; } cout< < "\nuporyado4enniy massiv: \n"; //вывод и суммирование элементов отсортированного массива для среднего for(int i = 0; i< razmer; i++) { cout< < mas[i]< < ends; srednee += mas[i]; } //поиск арифметичесгоко реднего} srednee = srednee/razmer; cout< < "\nsrednee: "< < srednee; delete [] mas; }void main(){srand ((unsigned)time(null)); int x; cout< < "vveditrazmer matritsi po gorizontaly i po vertikaly: \n"; cin> > x; int** matr; matr = new int* [x]; //безопасный способ for(int i = 0; i< x; i++) // динамического { matr[i] = new int[x]; // двумерного массива. for(int j =0; j< x; j++) //заполняем матрицу { matr[i][j] = rand()%10-5; } //числами от -5 до 5 } cout< < "ishodnaya matritsa: \n"; print(x,matr); search_and_print(x,matr); _getch(); delete [] matr; }
Ответ дал: Гость
1 способ
применим метод уменьшения в два раза области неопределенности(путь к стелажу выделен жирным шрифтом):
16
8-8
4-4 4-4
2-2 2-2 2-2 2-2
1-1 1-1 1-1 1-1 1-1 1-1 1-1 1-1
мы потратили 4 бита информации на поиск нужного стеллажа, теперь нащдо найти нужную нам полку:
6
3-3
2-1 2-1
1-1 1 1-1 1
потрачено еще 3 бита информации. всего информации 4+3 равно 7 бит информации.
2 способ:
воспользуемся формулой: 2
2^i=n
количество информации о нахождении стеллажа:
2^4=16
i=4 бита
количество информации о нахождении полки:
2^i6 поэтому возьмем число 2^i так чтобы результат находился рядом с числом 6. так как если число будет меньше 6 то мы не сможем точно получить информация, то 2^i должно быть больше 6. значит:
Популярные вопросы