Выборка случайного элемента из двумерного массива

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Ini
Сообщения: 2
Зарегистрирован: 26 ноя 2010, 07:01

Здравствуйте. Помогите пожалуйста с решением задачи. Нужно создать двумерный массив и произвести с ним следующие операции:
Найти максимальный и минимальный элемент двумерного массива
Найти элементы массива, повторяющиеся более одного раза
Найти все отрицательные элементы в массиве, и заменить их на ноль
Сделать из массива выборку случайного элемента

Реализую так:

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>

int main()
{
int masotr [5];
	int dvumas[4][4] = 			// Определение двумерного массива
		{
			{3,6,4,-2},
			{7,2,-5,7},
			{1,-1,9,8},
			{6,-7,-4,4}
		};
	int i,k,j,v,;
printf("Что ищем?
1 – Максимальное и минимальное, 
2 – Повторы более одного раза,
3 – Все отрицательные значения,
4 – Случайный элемент");
v = 0;
while(v==0)
{
scanf("%d",&v); printf("\n");
if(v!=1&&v!=2&&v!=3&&v!=4) v=0;
}
	if(v==1)
		{
//Нахождение максимального и минимального элементов
int *maxel = &dvumas[0][0]; // Определение указателя на максимальный эл.
int *minel = &dvumas[0][0];	// Определение указателя на минимальный эл.

for( i = 0 ; i < 4 ; i++ )
{
if(dvumas[i][i] > *maxel ) maxel = &dvumas[i][i];
if(dvumas[i][i] < *minel ) minel = &dvumas[i][i];
		};
printf("Maximum: %d %c",*maxel,'\n'); 
printf("Minimum: %d %c",*minel,'\n');

		};
	if(v==2)
		{
//Нахождение элементов массива, встречающихся более одного раза
for (k=0;k<4;k++)
		for (j=0;j<4;j++)
		dvumas[masotr[k,j]]++;

for(i=0;i<5;i++)cout <<masotr[n]<<’’;
};
	if(v==3)
		{
// Найти все отрицательные элементы в массиве, и заменить их на ноль
for (k=0;k<4;k++)
		for (j=0;j<4;j++){ 
if (array[ k,j ] > 0){
array[ k,j ] = 1; 
    	} 
}
};
system("pause");
 
return 0;
}
Проблема в решении последней задачи. Не знаю как ее начать решать. Как к ней вообще подступиться? С чего начать?
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Используй конструкцию rand() % <some_int_value>, чтобы получить случайное число от 0 до <some_int_value> не включительно.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ini
Сообщения: 2
Зарегистрирован: 26 ноя 2010, 07:01

Только добрался до компьютера. А каким образом определяется <some_int_value>? В данном конкретном случае он получается будет 9, раз максимальное число в массиве 9? Или я не правильно понимаю?
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

В данном случае - это размер массива. Поскольку двумерный массив у вас 4х4, то есть 16 значений. rand() % 16 даст на выходе случайное число в диапазоне от 0 до 15 включительно. Это число используется как индекс массива, что решает поставленную задачу.
Ответить