Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vitik
10 / 10 / 1
Регистрация: 05.01.2011
Сообщений: 152
#1

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

28.07.2012, 20:19. Просмотров 412. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2012, 20:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Игнорирование элемента массива (C++):

Определить номера минимального элемента массива и элемента, являющегося минимальным без учета этого элемента. - C++
Дан массив. Определить номера минимального элемента массива и элемента, являющегося мини-мальным без учета этого элемента.

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

15% отличаются от среднего арифметического максимального элемента массива А и минимального элемента массива В - C++
Помогите написать программу, которая в массив C записывает те элементы массивов A (размерности n) и B (размерности m), которые не более чем...

Сделать добавление элемента в массив и удаление элемента из массива используя STL - C++
Всем привет. Помогите пожалуйста написать. Нужно использовать STL. Необходимо сделать добавление элемента в массив и удаление элемента из...

Вставить два элемента по 1000, начиная с четвертого элемента исходного массива, сдвигая его элементы - C++
Помогите с созданием программы, которая выполняет следующие действия: a) одномерный массив из 10 элементов целого типа в диапазоне ; b)...

После каждого четного элемента массива вставить 2 элемента с тем же значением, полученный массив отсортировать - C++
после каждого четного элемента массива вставить 2 элемента с тем же значением.полученный масив отсортировать.очень хотелось бы с...

9
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
28.07.2012, 20:34 #2
да способов много, но проще взять любой подходящий контейнер из STL и записывать/удалять оттуда элементы
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 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
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 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
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 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 произвольное количество элементов http://www.cyberforum.ru/cgi-bin/latex.cgi?\leq N

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

Не по теме:

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

1
vitik
10 / 10 / 1
Регистрация: 05.01.2011
Сообщений: 152
28.07.2012, 22:02  [ТС] #10
Огромное спасибо .
0
28.07.2012, 22:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2012, 22:02
Привет! Вот еще темы с ответами:

Найти номер минимального по модулю элемента массива и сумму модулей после первого отрицательного элемента - C++
1.В одномерном массиве, состоящем из n вещественных элементов, вычислить: а)номер минимального по модулю элемента массива; б)сумму...

В программе написать функции: вставки элемента, поиска максимального элемента, определения среднего арифметического элементов массива - C++
В целочисленном массиве Х(N) после каждого четного числа вставить максимальный элемент массива. Найти среднее арифметическое элементов ...

Вычислить произведение P = Хmin*Ymin минимального элемента xmin = min{xi} массива xi и минимального элемента ymin = min{yi} массива yi - C++
Вычислить произведение P = Хmin*Ymin минимального элемента xmin = min{xi} массива xi и минимального элемента ymin = min{yi} массива yi, i =...

Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента из массива. (Имитируется “резиновый” массив) - C++
Реализовать приложение, содержащее функции добавления нового элемента в массив и удаления элемента из массива. (Имитируется “резиновый”...


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

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

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