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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.96
kaznachey1993
-66 / 3 / 0
Регистрация: 24.11.2011
Сообщений: 97
#1

Заполнить рандомно массив - C++

05.06.2012, 18:24. Просмотров 9692. Ответов 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
#include<iostream>
using namespace std;
 
int main()
{
    int *a, max,n,s_max;
    cout<<"\n Vvedite razmer massiva : ";
    cin>>n;
    a = new int[n];
    cout<<"\n Zapolnite massiv : \n";
    for (int i = 0; i < n; i++)
        cin>>a[i];
    max = a[0];
    for (int i = 0; i < n; i++)
        if (a[i]> max)
            max = a[i];
    cout<<"\n Maximalnoe chislo = "<<max<<endl;
    s_max = a[0];
    for (int i = 0; i < n; i++)
        if (a[i]> s_max && a[i]!=s_max)  
           s_max = a[i];
    cout<<"\n Vtoroe maximalnoe chislo = "<<s_max<<endl;
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2012, 18:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнить рандомно массив (C++):

Рандомно заполнить двумерный массив одинаковыми символами - C++
Всем привет. Начал изучение С++ на практике, первый язык програмирования, много каши в голове, которую пытаюсь раскидать по тарелкам)) не...

Как рандомно заполнить массив с неповторяющимеся значениями? - C++
Дан, допустим, массив из 16 значений, как заполнить его рандомно, но так, что бы ни одно число не повторялось?

Как рандомно заполнить одномерный массив единицами и нулями? - C++
как рандомно заполнить одномерный массив единицами и нулями???

Заполнить рандомно массив и все отрицательные элементы отправить в конец - C++
В массиве A=(a1, а2, ..., аn) все отрицательные элементы отправить в «хвост» массива. ( Это задание) Вот сам код. //...

Как рандомно заполнить квадратную матрицу звездочками? - C++
Мне нужно на дошке 5 на 5 рандомно поставить 5 звездочек. Как это можна сделать? Я нашла функцию rand(). Но как сделать не знаю ....

Как рандомно заполнить вектор? Не могу найти ошибку - C++
Вот код, в консоли выдаёт &quot;Не является внутренней или внешней командой&quot; #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
05.06.2012, 18:26 #2
Функцию rand() использовать
Код
for (int i=0; i<n; i++)
   a[i] = rand() % 10;   // случайное число от 0 до 9
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
05.06.2012, 19:06 #3
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
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <clocale>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "russian");
    srand ( time(0) );
    int *a, max, n, s_max;
    cout<< "Введите размерность массива: ";
    cin>> n;
    a = new int[n];
    for (int i = 0; i < n; i++)
    {
        a[i] = rand () % 20;
        std::cout<< a[i]<< " ";
    }
    max = s_max = a[0];
    for (int i = 0; i < n; i++)
        if (a[i] > max)
            max = a[i];
    cout<<"\nМаксимальное число равно = "<< max<< endl;
    for (int i = 0; i < n; i++)
        if (a[i] > s_max && a[i] != max)  
           s_max = a[i];
    cout<<"\nВторое максимальное число = "<< s_max<< endl;
    delete []a; // освобождаем память
    return 0;
}
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
05.06.2012, 19:35 #4
или так
C++
1
2
3
4
5
6
7
8
9
#include <stdlib>
int main()
{
...
randomize();
for (int i = 0 ; i < n ; i++)
    a[i]=random(100)-50; // случайное число [-50;50];  
...
}
и да, обязательно нужно добавить
C++
1
delete []a;
перед return
1
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
05.06.2012, 22:27 #5
Цитата Сообщение от bLesk Посмотреть сообщение
или так
C++
1
randomize();
Это чисто VB надбавка. Я же предлагаю решение, которое скомпилируется на всех компиляторах.

Добавлено через 1 минуту
И библиотеки stdlib нету. Есть либо stdlib.h либо cstdlib.
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
05.06.2012, 22:38 #6
Цитата Сообщение от MrGluck Посмотреть сообщение
Это чисто VB надбавка. Я же предлагаю решение, которое скомпилируется на всех компиляторах.
Добавлено через 1 минуту
И библиотеки stdlib нету. Есть либо stdlib.h либо cstdlib.
я компилировал в Borland c++ =)
и ваш способ не коим образом не оспаривал, просто предложил альтернативу
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
06.06.2012, 00:11 #7
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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
 
class BoundedRandom {
    int low;
    int high;
public:
    BoundedRandom(int l, int h) : low(l), high(h) {}
    int operator () () { return rand() % (high - low + 1) + low; }
};
 
int main() {
    int * arr;
    size_t size;
    
    std::cout << "Number of elements: ";
    std::cin >> size;
    
    arr = new int [ size ];
    srand(time(NULL));
    std::generate_n(arr, size, BoundedRandom(0, 100));
    
    std::cout << "Array:" << std::endl;
    std::copy(arr, arr + size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << "\nMin: " << *std::min_element(arr, arr + size) << " Max: " << *std::max_element(arr, arr + size) << std::endl;
    
    delete [] arr;
    return 0;
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
06.06.2012, 00:22 #8
Цитата Сообщение от easybudda Посмотреть сообщение
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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
 
class BoundedRandom {
    int low;
    int high;
public:
    BoundedRandom(int l, int h) : low(l), high(h) {}
    int operator () () { return rand() % (high - low + 1) + low; }
};
 
int main() {
    int * arr;
    size_t size;
    
    std::cout << "Number of elements: ";
    std::cin >> size;
    
    arr = new int [ size ];
    srand(time(NULL));
    std::generate_n(arr, size, BoundedRandom(0, 100));
    
    std::cout << "Array:" << std::endl;
    std::copy(arr, arr + size, std::ostream_iterator<int>(std::cout, " "));
    std::cout << "\nMin: " << *std::min_element(arr, arr + size) << " Max: " << *std::max_element(arr, arr + size) << std::endl;
    
    delete [] arr;
    return 0;
}
Вроде требовалось найти максимум и второй максимум (среди элементов, не включающих первый).
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
06.06.2012, 00:37 #9
Цитата Сообщение от MrGluck Посмотреть сообщение
требовалось найти максимум и второй максимум
А, ну да... Сейчас угадаю: и сортировать нельзя?
За один проход:
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
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <algorithm>
#include <iterator>
#include <functional>
#include <cstdlib>
#include <ctime>
 
class BoundedRandom {
    int low;
    int high;
public:
    BoundedRandom(int l, int h) : low(l), high(h) {}
    int operator () () { return rand() % (high - low + 1) + low; }
};
 
int main() {
    int * arr;
    size_t size;
    
    std::cout << "Number of elements: ";
    std::cin >> size;
    if ( size < 3 ) {
        std::cout << "Need 3 or more elements." << std::endl;
        return 1;
    }
    
    arr = new int [ size ];
    srand(time(NULL));
    std::generate_n(arr, size, BoundedRandom(0, 100));
    
    std::cout << "Array:" << std::endl;
    std::copy(arr, arr + size, std::ostream_iterator<int>(std::cout, " "));
    int firstMax = std::max(arr[0], arr[1]);
    int secondMax = std::min(arr[0], arr[1]);
    for ( size_t i = 2; i < size; ++i ) {
        if ( arr[i] > firstMax ) {
            secondMax = firstMax;
            firstMax = arr[i];
        }
        else if ( arr[i] > secondMax ) {
            secondMax = arr[i];
        }
    }
    std::cout << "\nFirst max: " << firstMax << ", second max: " << secondMax << std::endl;
    
    delete [] arr;
    return 0;
}
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
06.06.2012, 01:05 #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
#include <iterator>
#include <random>
 
int main()
{
    const std::size_t N = 20;
    int A[N];
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> uid(0, 99);
    std::generate(A, A + N, [&uid, &gen] {return uid(gen); } );
    std::copy(A, A + N, std::ostream_iterator<int> (std::cout, " ") );
    int max = *std::max_element(A, A + N);
    int max2 = *std::max_element(A, A + N, [max](const int i, const int j) {return i < j && j != max; } );
    std::cout<< "\nFirst max: "<< max<< "\nSecond max: "<< max2<< std::endl;
    return 0;
}
http://liveworkspace.org/code/248bb9...16edad18daab0e
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 01:05
Привет! Вот еще темы с ответами:

Задача с массивом. Создать. Заполнить (Рандомно). Сделать инверсию! - C++
Задача Хочу спросить совета. Что в моем коде нужно исправить, чтобы выглядело более профессионально? Что тут лишнее и как лучше...

Вообщем нужно сделать так чтобы 1 массив заполнялся с клавиатуры а не рандомно - C++
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;iostream&quot; #include &quot;ctime&quot; #include &quot;conio.h&quot; using namespace std; ...

Заполнить массив первыми ста простыми числами, и вывести массив на экран - C++
Объявите одномерный целочисленный массив в котором не более 100 элементов выполните генерацию массива первыми 100 простыми числами....

Заполнить массив строк из файла. Массив заполняется, но выводится не корректно - C++
Здравствуйте! Такая проблема. В файле имена записаны в столбик и разделены точкой с запятой. Массив заполняется, но выводится не корректно....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.06.2012, 01:05
Ответ Создать тему
Опции темы

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