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

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

Войти
Регистрация
Восстановить пароль
 
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 827
Записей в блоге: 1
#1

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

27.09.2013, 18:25. Просмотров 842. Ответов 10
Метки нет (Все метки)

Добрый вечер!Интересует вопрос как сделать так чтобы пользователь вводил целое число 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 положительными нечетными числами (C++):

Объявить массив из 5 элементов int и инициализируйте его первыми пятью положительными нечетными числами. - C++
Дан вопрос. Объявить массив из 5 элементров int и инициализируйте его первыми пятью положительными нечетными числами. Я написал код .Он...

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

Заполнить массив первыми 20 числами делящимся на 13 или 17 - C++
заполнить массив первыми 20 числами делящимся на 13 или 17, находящимся в интервале левая граница которого 300 #include &lt;iostream&gt; ...

Заполнить массив десятью первыми простыми числами - C++
Заполнить массив десятью первыми простыми числами

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

Заполнить массив из двадцати элементов первыми натуральными пятизначными числами - C++
Заполнить массив из двадцати элементов первыми натуральными пятизначными числами, сумма цифр которых двузначное число (на C++). Помогите,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.09.2013, 18:31 #2
Цитата Сообщение от DmitryM5 Посмотреть сообщение
1.Возможно ли это сделать?
Создавайте массив динамически (в куче).
Цитата Сообщение от DmitryM5 Посмотреть сообщение
2.Это статический массив?
Статически созданный (при компиляции) не стеке.

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

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

Не по теме:

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

DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 827
Записей в блоге: 1
27.09.2013, 19:07  [ТС] #8
Цитата Сообщение от alsav22 Посмотреть сообщение
[qu
Возможно, только к чему тогда это?
Ну пускай с клавиатуры вводится.
В чем отличия new int[] и просто int a[] ???
int *a -это указатель на массив из n элементов в примере выше?
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
27.09.2013, 19:12 #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 #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();
alsav22
27.09.2013, 19:48     Заполнить массив первыми N положительными нечетными числами
  #11

Не по теме:

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

Не по теме:

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

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2013, 19:48
Привет! Вот еще темы с ответами:

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

Заполнить массив двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и большими 300 - C++
1. Заполнить массив: а) двадцатью первыми натуральными числами, делящимися нацело на 13 или на 17 и большими 300; б) тридцатью первыми...

Заполнить массив случайными положительными и отрицательными числами и вывести в строку с интервалом - C++
Заполнить массив случайными положительными и отрицательными числами и вывести в строку с интервалом ПОМОГИТЕ!!!

Заполнить массив первыми натуральными 4-значными числами, у которых сумма четных цифр больше суммы нечетных - C++
Дано неотрицательное число N - количество элементов массива (N&lt;=100) Заполнить массив первыми натуральными четырехзначными числами, у...


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

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

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