Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
10 / 10 / 0
Регистрация: 05.01.2011
Сообщений: 151
1

Игнорирование элемента массива

28.07.2012, 20:19. Просмотров 733. Ответов 9
Метки нет (Все метки)

Уважаемые опытные никак не могу додуматься как сделать чтобы при следующем выводе случайного числа с массива , предыдущее не рассматривалось. Как выбрасывать игральные карты с колоды пока не останется одна .
В этом примере выводиться одно число с массива, как сделать чтобы при повторном использовании вывода это число игнорировалось?
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
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
 
using namespace std;
 
void printRandDigit();
int main()
 
printRandDigit();
 
    getch();
        return 0;
    }
 
void printRandDigit()
{
    srand(time(NULL));
    int arr[10]=
    {
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19
    };
 
    int a = arr[1] + rand()%9;
 
 
    cout<<a<<endl;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2012, 20:19
Ответы с готовыми решениями:

Игнорирование появляющегося элемента нижестоящим
Навожу, раскрывается и нижний блок уползает вниз под действием нормального потока, а мне нужно, что...

Получить новый массив B, каждый элемент которого равен сумме соответствующего элемента массива А и минимального элемента массива А
1) Дан одномерный массив А. Получить новый массив B, каждый элемент которого равен сумме...

Массив: написать функцию удаления элемента из массива и возвращения нового массива без этого элемента
Помогите написать функцию удаления элемента из массива и возвращения нового массива без этого...

Поменять местами значение первого четного элемента массива со значением последнего нечетного элемента массива.
Дан массив С(30). Поменять местами значение первого четного элемента массива со значением...

9
591 / 529 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
28.07.2012, 20:34 2
да способов много, но проще взять любой подходящий контейнер из STL и записывать/удалять оттуда элементы
0
Эксперт С++
4251 / 2225 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.07.2012, 21:15 3
Например, так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define N 10
#include<time.h>
int main()
{
   int a[N] = {10, 10, 11, 12, 13, 14, 14, 15, 16, 17};
   int ind[N], i, j, buf;
   srand(time(NULL));
   for(i = 0; i < N; i++)
      ind[i] = i;
   for(i = 0; i < N; i++)
   {
       j = i + rand()%(N - i);
       buf = ind[i]; ind[i] = ind[j]; ind[j] = buf;
       printf("%d ", a[ind[i]]);
   }
   return 0;
}
2
~ Эврика! ~
1253 / 1002 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
28.07.2012, 21:27 4
Цитата Сообщение от Thinker Посмотреть сообщение
Например, так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define N 10
#include<time.h>
int main()
{
   int a[N] = {10, 10, 11, 12, 13, 14, 14, 15, 16, 17};
   int ind[N], i, j, buf;
   srand(time(NULL));
   for(i = 0; i < N; i++)
      ind[i] = i;
   for(i = 0; i < N; i++)
   {
       j = i + rand()%(N - i);
       buf = ind[i]; ind[i] = ind[j]; ind[j] = buf;
       printf("%d ", a[ind[i]]);
   }
   return 0;
}
Обычно только второй цикл пишут так, чтобы он шёл от конца к началу (чуть проще выглядит):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#define N 10
#include<time.h>
int main()
{
   int a[N] = {10, 10, 11, 12, 13, 14, 14, 15, 16, 17};
   int ind[N], i, j, buf;
   srand(time(NULL));
   for(i = 0; i < N; i++)
      ind[i] = i;
   for(i = N - 1; i >= 0; i--)
   {
       j = rand()%i;
       buf = ind[i]; ind[i] = ind[j]; ind[j] = buf;
       printf("%d ", a[ind[i]]);
   }
   return 0;
}
Это классический алгоритм Кнута для случайной перестановки элементов массива.
2
Эксперт С++
4251 / 2225 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
28.07.2012, 21:31 5
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Обычно только второй цикл пишут так

Не по теме:

Ну, можно так, что в голову пришло, то и написал, Кнутов, к сожалению, не читали)

1
OhMyGodSoLong
28.07.2012, 21:35
  #6

Не по теме:

Главное — принцип: точка разделения массива двигается от одного конца к другому, по одну сторону от неё остаток исходного массива, по другую — строящаяся случайная перестановка элементов, которые берутся из исходной стороны.

1
Thinker
28.07.2012, 21:39
  #7

Не по теме:

это понятно все. главное понимать, что так мы можем взять из массива a произвольное количество элементов https://www.cyberforum.ru/cgi-bin/latex.cgi?\leq N

1
10 / 10 / 0
Регистрация: 05.01.2011
Сообщений: 151
28.07.2012, 21:49  [ТС] 8
Thinker если не сложно можно прокомментировать как в циклах так получилось, сразу не могу вехать.
0
Thinker
28.07.2012, 21:56
  #9

Не по теме:

думаю, что в посте #6 очень понятно все написано, прочитайте внимательно

1
10 / 10 / 0
Регистрация: 05.01.2011
Сообщений: 151
28.07.2012, 22:02  [ТС] 10
Огромное спасибо .
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2012, 22:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Поменять местами значение первого четного элемента массива со значением последнего нечетного элемента массива
34. Дан массив С(30). Поменять местами значение первого четного элемента массива со значением...

Массив. Инвертировать часть массива с заданного элемента до последнего максимального элемента массива
инвертировать часть массива с элемента, номер которого задан, до последнего максимального элемента...

Найти элементы массива, со значениями в интервале от 1.5 min элемента до 0.5 max элемента массива
Вывести на экран элементы и индексы элементов, значения которых лежат в пределах хотя бы в 1,5 раза...

Найти сумму первого максимального элемента массива А и последнего минимального элемента массива В
Вот задание : Даны целочисленные массивы А и В. Найти сумму первого максимального элемента массива...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.