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

Заполнить массив первыми N положительными нечетными числами - C++

Восстановить пароль Регистрация
 
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
27.09.2013, 18:25     Заполнить массив первыми N положительными нечетными числами #1
Добрый вечер!Интересует вопрос как сделать так чтобы пользователь вводил целое число N и выполнялось создание массива целых чисел размера N?
Заданице:Дано целое число N (> 0) и указатель на целочисленный массив длины N. Заполнить массив первыми N положительными нечетными числами: 1, 3, 5, … .
Мой код:

C++
1
2
3
4
5
6
7
8
9
void CreateOddArray(int *a, int n)
{
    int j=1;
    for (int i=0;i<n;i++) {
        a[i]=j;
        j+=2;
    }
 
}
C++
1
2
int a[10];
    CreateOddArray(a,10);
Я не мог ввести с клавиатуры целое n и при создании массива выделить n элементов.
И помоему передать в функцию n тоже не получалось.
1.Возможно ли это сделать?
2.Это статический массив?
3.Можно ли увеличить количество элементов в массиве?
4.Корректно ли это- void CreateOddArray(int *a, int n) ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 18:25     Заполнить массив первыми N положительными нечетными числами
Посмотрите здесь:

Заполнить массив первыми 12 членами последовательности Фиббоначи. C++
заполнить массив первыми 20 числами делящимся на 13 или 17 C++
C++ Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами
C++ Объявить массив из 5 элементов int и инициализируйте его первыми пятью положительными нечетными числами.
Заполнить массив из двадцати элементов первыми натуральными пятизначными числами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 18:31     Заполнить массив первыми N положительными нечетными числами #2
Цитата Сообщение от DmitryM5 Посмотреть сообщение
1.Возможно ли это сделать?
Создавайте массив динамически (в куче).
Цитата Сообщение от DmitryM5 Посмотреть сообщение
2.Это статический массив?
Статически созданный (при компиляции) не стеке.

Добавлено через 1 минуту
Цитата Сообщение от DmitryM5 Посмотреть сообщение
3.Можно ли увеличить количество элементов в массиве?
Можно, создав новый массив и скопировав туда старый.

Добавлено через 52 секунды
Цитата Сообщение от DmitryM5 Посмотреть сообщение
4.Корректно ли это- void CreateOddArray(int *a, int n) ?
Корректно.
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
27.09.2013, 18:36  [ТС]     Заполнить массив первыми N положительными нечетными числами #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Создавайте массив динамически (в куче).
это как?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 18:39     Заполнить массив первыми N положительными нечетными числами #4
Цитата Сообщение от DmitryM5 Посмотреть сообщение
это как?
C++
1
2
3
int N;
cin >> N;
int *a = new int[N];
DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
27.09.2013, 18:41  [ТС]     Заполнить массив первыми N положительными нечетными числами #5
C++
1
2
int n=100;
int *a = new int[n];
так возможно?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 18:48     Заполнить массив первыми N положительными нечетными числами #6
Цитата Сообщение от DmitryM5 Посмотреть сообщение
так возможно?
Возможно, только к чему тогда это?
Цитата Сообщение от DmitryM5 Посмотреть сообщение
как сделать так чтобы пользователь вводил целое число N и выполнялось создание массива целых чисел размера N?
rublag
27.09.2013, 18:58
  #7

Не по теме:

alsav22, в си для динамических массивов есть функция realloc, есть ли в c++ что-нибудь подобное?

DmitryM5
Love~
 Аватар для DmitryM5
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 743
Записей в блоге: 1
27.09.2013, 19:07  [ТС]     Заполнить массив первыми N положительными нечетными числами #8
Цитата Сообщение от alsav22 Посмотреть сообщение
[qu
Возможно, только к чему тогда это?
Ну пускай с клавиатуры вводится.
В чем отличия new int[] и просто int a[] ???
int *a -это указатель на массив из n элементов в примере выше?
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
27.09.2013, 19:12     Заполнить массив первыми N положительными нечетными числами #9
Цитата Сообщение от DmitryM5 Посмотреть сообщение
Ну пускай с клавиатуры вводится.
В чем отличия new int[] и просто int a[] ???
int *a -это указатель на массив из 10 элементов в примере выше?
создать массив можно двумя способами
C++
1
int arr[5];
C++
1
2
const int s=5;
int arr[5];
если размер массива неизвестен, а вычисляется в ходе программы или вводится пользователем, то просто нужно выделить память под этот массив, как уже описывали выше
C++
1
int* arr=new int[s];
в обоих случаях arr это указатель на 0 элемент массива
UranFlex
131 / 129 / 21
Регистрация: 25.05.2013
Сообщений: 233
27.09.2013, 19:15     Заполнить массив первыми N положительными нечетными числами #10
rublag, DmitryM5, для Вас привожу работающие примеры с динамическими массивами.
1) Пример для двумерного массива.
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
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
//функция заполняет квадратную матрицу псевдослучайными данными
void FillMatrix( int** matrix, const size_t size, const unsigned randRange = 10, const int shift = 0 );
//функция выводит на экран квадратную матрицу
void PrintMatrix( int** matrix, const size_t size );
 
int main() {
 
    srand( time( 0 ) ); // засеять генератор случайных чисел
 
    size_t sz; // размер матрицы
 
    cout << "Введите размер матрицы" << endl;
    cin >> sz;
 
    // создаем квадратную матрицу
    int **M = new int*[ sz ];
    for ( size_t i = 0; i < sz; ++i )
        M[ i ] = new int[ sz ];
 
    // заполняем матрицу псевдослучайными значениями типа int
    FillMatrix( M, sz );
    // выводим матрицу на экран
    PrintMatrix( M, sz );
 
    // удаляем квадратную матрицу
    for ( size_t i = 0; i < sz; ++i )
        delete[] M[ i ];
    delete[] M;
 
    return 0;
}
 
void FillMatrix( int** matrix, const size_t size, const unsigned randRange, const int shift ) {
    for ( size_t i = 0; i < size; ++i )
        for ( size_t j = 0; j < size; ++j )
            // заполняем двумерный массив псевдослучайными данными.
            // shift - начальное значение диапазона данных
            // randRange - ширина диапазона
            matrix[ i ][ j ] = shift + rand() % randRange;
 
}
 
void PrintMatrix( int** matrix, const size_t size ) {
    for ( size_t i = 0; i < size; ++i ) {
 
        for ( size_t j = 0; j < size; ++j )
            cout << setw( 4 ) << matrix[ i ][ j ];
 
        cout << endl;
    }
 
}
2) Пример для одномерного массива.
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
49
50
51
52
53
54
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
//функция заполняет массив псевдослучайными данными
void FillArray( int* array, const size_t size, const unsigned randRange = 101, const int shift = -50 );
//функция выводит на экран массив
void PrintArray( const int* array, const size_t size );
 
int main() {
 
    srand( time( 0 ) ); // засеять генератор случайных чисел
 
    size_t sz; // размер массива
 
    cout << "Введите размер массива" << endl;
    cin >> sz;
 
    // создаем массив в куче
 
    int* array = new int[ sz ];
 
    // заполняем массив псевдослучайными значениями типа int
    FillArray( array, sz );
    // выводим массив на экран
    PrintArray( array, sz );
 
    // удаляем массив
 
    delete[] array;
 
    return 0;
}
 
void FillArray( int* array, const size_t size, const unsigned randRange, const int shift ) {
    for ( size_t i = 0; i < size; ++i )
        // заполняем двумерный массив псевдослучайными данными.
        // shift - начальное значение диапазона данных
        // randRange - ширина диапазона
        array[ i ] = shift + rand() % randRange;
 
}
 
void PrintArray( const int* const array, const size_t size ) {
    for ( size_t i = 0; i < size; ++i )
        cout << setw( 4 ) << array[ i ];
 
    cout << endl;
 
}
Для заполнения нечетными положительными внесите изменения в функцию FillArray();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2013, 19:48     Заполнить массив первыми N положительными нечетными числами
Еще ссылки по теме:

C++ Заполнить одномерный массив двадцатью первыми натуральными числами, кратными 5-ти или 7-ми
C++ Заполнить массив случайными положительными и отрицательными числами и вывести в строку с интервалом
Заполнить массив чередующимися четными и нечетными числами C++

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

Или воспользуйтесь поиском по форуму:
alsav22
27.09.2013, 19:48     Заполнить массив первыми N положительными нечетными числами
  #11

Не по теме:

Цитата Сообщение от rublag Посмотреть сообщение

Не по теме:

alsav22, в си для динамических массивов есть функция realloc, есть ли в c++ что-нибудь подобное?

Насколько знаю, нет. Зато есть класс с автоматическим управлением памятью: vector. То же самое, что и динамический массив. Размер меняется автоматически.

Yandex
Объявления
27.09.2013, 19:48     Заполнить массив первыми N положительными нечетными числами
Ответ Создать тему
Опции темы

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