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

Заполнить линейный массив случайными числами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
X_Duke_Nuken_X
-44 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 37
14.11.2012, 16:02     Заполнить линейный массив случайными числами #1
Доброго времени суток.
Помогите, пожалуйста, написать программу,которая заполняет линейный массив,размер которого задаются с клавиатуры,случайными натуральными числами в заданном диапазоне,выводит полученный массив на экран и записывает в файл те элементы, которые являются степенями двойки.
С++ я изучаю только второй месяц, и сам не могу написать такую программу...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Starscream
 Аватар для Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
14.11.2012, 16:17     Заполнить линейный массив случайными числами #2
насчет заполнения массива случайными натуральными числами
C++
1
2
3
4
5
6
7
int arr[10] = {0};
    srand(time(NULL));
    for(int i = 0 ; i <= 10 ; i++)
    {
        arr[i] = rand()%10;
        cout << arr[i];
    }
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
14.11.2012, 16:18     Заполнить линейный массив случайными числами #3
Цитата Сообщение от Starscream Посмотреть сообщение
насчет заполнения массива случайными натуральными значениями
0 - не натуральное число
Starscream
 Аватар для Starscream
55 / 43 / 2
Регистрация: 04.11.2012
Сообщений: 106
14.11.2012, 16:20     Заполнить линейный массив случайными числами #4
тогда
arr[i] = rand()%9 + 1 ;
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
14.11.2012, 16:29     Заполнить линейный массив случайными числами #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Писал с ходу, не уверен насчет правильности:
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
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{
    double* mas;
    int n,a,b;
    cout<<"Enter size of massive: ";cin>>n;
    cout<<"Enter range a,b: ";cin>>a>>b;
    mas=new double[n];
    srand((unsigned)time(NULL));
    ofstream out("1.txt");
    for(int i=0;i<n;i++)
    {
        mas[i]=rand() % (b - a + 1) + a;
        for(int j=0;j<32;j++)
        {
            if(pow(2.0,j)==mas[i]) out<<mas[i]<<" ";
        }
        cout<<mas[i]<<" ";
    }
    cout<<endl;
    out.close();
    delete[] mas;
    system("pause");
    return 0;
}
X_Duke_Nuken_X
-44 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 37
14.11.2012, 17:16  [ТС]     Заполнить линейный массив случайными числами #6
к сожалению, происходит ошибка при компилировании, пробовал править - не помогает...
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.11.2012, 17:45     Заполнить линейный массив случайными числами #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
33
#include <iostream>
#include <algorithm>
#include <vector>
#include <ctime>
#include <random>
#include <iterator>
#include <functional>
#include <fstream>
 
bool check(int element)
{
    double power = 0; int i = 1;
    while((power = pow(2.0, i)) < element) i++;
        return (power==element)?true:false;
}
 
int main()
{
    int n;
    std::cin>>n;
    std::vector<int> numbers(n);
    std::mt19937 engine;
    engine.seed(std::time(0));
    std::uniform_int_distribution<> distr(1,100);
    std::generate(numbers.begin(), numbers.end(), std::bind(distr, engine));
    std::copy(numbers.begin(), numbers.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout<<std::endl<<"To file:" <<std::endl;
    std::copy_if(numbers.begin(), numbers.end(), std::ostream_iterator<int>(std::cout, " "), check);
    std::ofstream OutFile("file.txt");
    std::copy_if(numbers.begin(), numbers.end(), std::ostream_iterator<int>(OutFile, " "), check);
    OutFile.close();
    system("pause");
}
X_Duke_Nuken_X
-44 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 37
14.11.2012, 17:52  [ТС]     Заполнить линейный массив случайными числами #8
компилятор выдает ошибку: "fatal error LNK1120: неразрешенных внешних элементов: 1"
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 18:48     Заполнить линейный массив случайными числами
Еще ссылки по теме:

C++ Заполнить массив неодинаковыми случайными числами
Заполнить массив случайными, равномерное распределёнными числами C++

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

Или воспользуйтесь поиском по форуму:
Vourhey
Почетный модератор
6469 / 2244 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
14.11.2012, 18:48     Заполнить линейный массив случайными числами #9
Цитата Сообщение от X_Duke_Nuken_X Посмотреть сообщение
"fatal error LNK1120: неразрешенных внешних элементов: 1"
Линковщик, не компилятор.
Yandex
Объявления
14.11.2012, 18:48     Заполнить линейный массив случайными числами
Ответ Создать тему
Опции темы

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