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

Заполнение массива - C++

Восстановить пароль Регистрация
 
Andrey5800
0 / 0 / 0
Регистрация: 27.08.2013
Сообщений: 10
13.09.2013, 21:39     Заполнение массива #1
Как заполнить массив числами от 1 до 100000 ?
А то не резон как то писать
C++
1
int mass[100000] = {1,2,3,4,.....}
И еще не подскажете как заолнить массив только четными числами до 100 например. Тоеть 2,4,6,8,10....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
13.09.2013, 21:48     Заполнение массива #2
в цикле.
vodilawofer
29 / 27 / 2
Регистрация: 27.09.2012
Сообщений: 123
13.09.2013, 21:49     Заполнение массива #3
C++
1
2
for (int i = 0; i < 100000; ++i)
mas[i] = i + 1;
C++
1
2
for (int i = 0; i < 50; ++i)
mas[i] = i + 2;
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
13.09.2013, 22:59     Заполнение массива #4
Можно так:
std::iota( std::begin( mass ), std::end( mass ), 1 );
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
13.09.2013, 23:11     Заполнение массива #5
Цитата Сообщение от vodilawofer Посмотреть сообщение
C++
1
2
for (int i = 0; i < 50; ++i)
mas[i] = i + 2;
Итого будем иметь mas{3,4,5,6,7...51}

C++
1
2
3
for(int i = 0; i < 50; i++){
mas[i] = (i + 1) * 2;
}
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
14.09.2013, 10:34     Заполнение массива #6
Задача для знатоков C++ :
Заполните содержимое массива числами от 1 до n на этапе компиляции
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
14.09.2013, 10:41     Заполнение массива #7
Цитата Сообщение от Voivoid Посмотреть сообщение
Задача для знатоков C++ :
Заполните содержимое массива числами от 1 до n на этапе компиляции
C++
1
int array[] = {1, 2, 3, 4, 5, ... , n};
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
14.09.2013, 10:45     Заполнение массива #8
Цитата Сообщение от ___ Посмотреть сообщение
C++
1
int array[] = {1, 2, 3, 4, 5, ... , n};
У топикстартера n было равно 100.000 . Не руками же заполнять. На предложения использовать какую-нибудь программу которая сгенерирует нужный код скажу, что можно и обойтись одними только средствами c++

Бонус за решение в рамках с++03, а не c++11
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
14.09.2013, 10:55     Заполнение массива #9
макросы срабатывают во время компиляции

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
#define     FillArray(a, size)                  \
    for (int i=0; i<size; i++)                  \
    {                                           \
        a[i] = i+1;                             \
    }
 
 
int main()
{
    int a[100];
 
    FillArray(a, 100);
 
    for (int i=0; i<100; i++)
        cout << a[i] << " ";
 
    return 0;
}
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
14.09.2013, 11:00     Заполнение массива #10
Макросы разворачиваются в момент компиляции. Но в данном случае макрос развернутся в код инициализации массива, а этот код уже выполнится в момент выполнения программы. Т.е. задача не решена
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
14.09.2013, 11:19     Заполнение массива #11
Voivoid, ну как вариант, это написать небольшую программу которая создает текстовый файл и записывает в него числа от 1 до 100000. В таком виде:

1, 2, 3, 4, 5, .... 100000
а дальше все его содержимое вставить в основную программу между фигурными скобками
C++
1
int a[100000] = {1, 2, 3, 4, 5, }


Добавлено через 5 минут
правильно? или можно еще по другому сделать?
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
14.09.2013, 11:23     Заполнение массива #12
Можно и так. Только есть небольшая проблема в том, что каждый раз при изменении размера массива понадобится перезапускать программку для генерации нового файла.

Но есть решении которое не требует отдельных программ
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
14.09.2013, 12:05     Заполнение массива #13
Voivoid, а можно небольшую подсказку а то ничего в голову не приходит

это наверно как-то с STL связано?
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
14.09.2013, 12:09     Заполнение массива #14
STL то тоже не волшебный и выполняется в момент времени-выполнения. Подсказка - метапрограммирование
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
14.09.2013, 12:21     Заполнение массива #15
Voivoid, вопрос полезности такой задачи. Зачем и когда это нужно?
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,283
14.09.2013, 12:30     Заполнение массива #16
Попрактиковаться в метапрограммировании
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2013, 14:55     Заполнение массива
Еще ссылки по теме:

Заполнение массива C++
C++ Заполнение массива
Заполнение массива C++

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

Или воспользуйтесь поиском по форуму:
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
14.09.2013, 14:55     Заполнение массива #17
общий смысл понял как надо делать, но вот ошибки при компиляции


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
#include <iostream>
using namespace std;
 
int arr[10];
 
template<int size>
struct Array
{
    int f()
    {
        arr[size-1] = size;
        Array<size-1>::f();
        return size;
    }
};
 
template<>
struct Array<1>
{
    int f()
    {
        return 1;
    }
};
 
 
int main()
{
    Array<10>   aaaaaaaaaa;
    aaaaaaaaaa.f();
 
 
    for (int i=0; i<10; i++)
        cout << arr[i] << " ";
 
    return 0;
}
Voivoid, объясни пожалуйста как все это правильно сделать.

Добавлено через 1 минуту
кому будет интересно почитать про метапрограммирование, вот даю ссылку
http://cpp-reference.ru/articles/expression-templates/

Добавлено через 44 минуты
вообщем доделал)) все элементы в массиве вычисляются во время компиляции программы

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>
using namespace std;
 
int arr[10];
 
template<int size>
struct Array
{
    int f()
    {
        arr[size-1] = size;
        Array<size-1> a;
        a.f();
        return size;
    }
};
 
template<>
struct Array<1>
{
    int f()
    {
        arr[0] = 1;
        return 1;
    }
};
 
 
int main()
{
    Array<10>   aaaaaaaaaa;
    aaaaaaaaaa.f();
 
    for (int i=0; i<10; i++)
        cout << arr[i] << " ";
 
    return 0;
}
Yandex
Объявления
14.09.2013, 14:55     Заполнение массива
Ответ Создать тему
Опции темы

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