Форум программистов, компьютерный форум CyberForum.ru

Вывести случайный элемент массива со значением 1 - C++

Восстановить пароль Регистрация
 
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
21.09.2010, 13:30     Вывести случайный элемент массива со значением 1 #1
Такая штука: нужно вывести рандомный элемент массива, значение которого = 1. Ищу для этого в цикле рандомные значения строки/столбца и сравниваю элемент с 1. Естественно это плохо, т.к. с помощью rand() постоянно выводятся повторяющиеся значения, и для обработки, например, массива 100x100 может случится до 40.000 проходов. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
int main()
{      
        #include <iostream.h>
    const int n = 100;
    int i,j,x,y;
 
    int **a=new int*[n];
    for(i=0;i<n;i++)
        a[i]=new int[n];
 
 
    for(i = 0; i < n; i++)
       for(j = 0; j < n; j++)
          a[i][j]=0;
 
    a[n/2][n/2]=1; // предположим такой элемент один, находится посередине
    
    srand(time(NULL));
    while(true)
    {
       x=rand()%n;
       y=rand()%n;
 
       if(a[x][y]==1)
       {
          cout<<"x = "<<x<<" y = "<<y<<" element = "<<a[x][y];
              break;
       }
    }
 
    for (i=0;i<n;i++)
         delete []a[i];
    delete []a;
 
 
    cout<<endl;
    system("pause");
    return 0;
}
Подскажите, в какую сторону думать? Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2010, 13:30     Вывести случайный элемент массива со значением 1
Посмотрите здесь:

Как из массива брать случайный его элемент? C++
C++ Поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением
C++ Функции обработки массива (определить произведение элементов массива, заменить модулем все элементы массива, уничтожить элемент с заданным значением)
C++ Перед каждым положительным значением массива вставить элемент с нулевым значением
Случайный элемент массива с условием C++
Каждый элемент массива A[k] заменить средним значением первых k элементов массива C++
В матрице поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением C++
C++ Вывести случайный элемент массива

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
21.09.2010, 13:46     Вывести случайный элемент массива со значением 1 #2
Вам нужно создать массив индексов таких элементов, у которых значение в массиве a равен 1.
Далее с ним работать.
Если таких элементов нет - сообщить.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
21.09.2010, 14:11  [ТС]     Вывести случайный элемент массива со значением 1 #3
Евгений М., точно, а то я уже что-то хитромудрое начал изобретать Спасибо большое!
Yandex
Объявления
21.09.2010, 14:11     Вывести случайный элемент массива со значением 1
Ответ Создать тему
Опции темы

Текущее время: 05:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru