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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.95
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 338
#1

Инициализация динамического массива - C++

21.05.2014, 10:42. Просмотров 3318. Ответов 21
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    int a, i = 0;
    int *array = new int [10];
    std::cout << "Enter numbers " << std::endl;
    while(std::cin >> a)
    { i < 10;
       array[i] = a;
    std::cout << *array << std::endl;
        }
    delete [] array;
    _getch();
        return 0;
}
Как я понял массив имеет ограниченный размер. Если это так? Если размер массива известен. А он известен:
C++
1
int *array = new int [10];
То возникает вопрос. Почему при введение строки, размер которого превышает размер массива, вся строка вводится в массив, как в вектор?
Скрин:
Инициализация динамического массива
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 10:42     Инициализация динамического массива
Посмотрите здесь:

Инициализация Динамического массива - C++
Друзья просмотрите пожалуйста мой динамический массив правильно ли я его длясебястолковал #include&lt;iostream&gt; using namespace std; ...

Инициализация динамического массива - C++
Народ, подскажите как сделать так что бы, можно было задать размер массива через консоль, а не в коде через const (Если можете - объясните,...

Инициализация динамического массива - C++
Прога генерирует случайные числа(1-100) выводит их, пока не встретится 98, сохраняя все в массиве. Но мне нужно очень, чтобы программа сама...

Инициализация N-мерного динамического массива - C++
Добрый день. Возникла идея написать функцию, которая инициализировала n-мерный динамический массив, что бы не писать кучу вложенных...

Обьявление и инициализация динамического двумерного массива в классе - C++
Пытаюсь создать в классе динамический двумерный массив, не могу понять что я делаю не так( При вызове деструктора - ошибка class...

Инициализация массива - C++
Здравствуйте! хм... сначала написал так. POINT p={00,00,10,10,10,10,10,10}; потом подумал, решил написать так. POINT...

инициализация массива - C++
Доброго времени. Инициализация массива с указанием размера 80 проходит гладко, при указании допустимого размера 12 выдает ошибку. Почему?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 338
21.05.2014, 19:40  [ТС]     Инициализация динамического массива #16
Tuma, я уже понял почему запись идет только в а[0]. Но не понял почему цикл бесконечный. Если другии элементы массива не инициализируется явно то они по умолчанию инициализиуются значением 0.

Только что проверил. Цикл бесконечный даже если ввести 0. (Добавил строку после цикла. На него не переходит)

Добавлено через 4 минуты
Примерно такой же код написал для вектора (ранее). Там цикл вообще не переходил на второе действие (запоминал вводимые данные в вектор и все) Пока не ввел функцию if чтоб завершит ввод в вектор ( с работой функции cin.get(), cin.clear() не знаком только разок показали код и не работает, когда дойду до него тогда и начну использовать )
karaulov6
-42 / 23 / 2
Регистрация: 23.03.2013
Сообщений: 238
Завершенные тесты: 1
21.05.2014, 19:42     Инициализация динамического массива #17
Tuma, Его цикл закончится если ввести не число
Tuma
60 / 41 / 18
Регистрация: 28.09.2013
Сообщений: 193
21.05.2014, 19:50     Инициализация динамического массива #18
Altair42, цикл бесконечный потому что у вас условие в нем такое
C++
1
while(std::cin >> a)
,то есть пока существует a,то он будет выполняться,как только а=0,
C++
1
while(0)
то ничего не произойдет.
Так же может быть вам стоит в качестве пособия использовать не одну книгу,а несколько.Например, "Оверленд Б. - C++ без страха" (вроде все понятно написано).

Добавлено через 7 минут
Ну при a=0 тоже работает,значит я не прав.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 338
21.05.2014, 20:05  [ТС]     Инициализация динамического массива #19
Tuma, я не жалуюсь на книгу все написано вполне понятно. Некоторые детали оставлено на потом для глубокого изучение в нужных разделах. Пока только основы.
Но спасибо за книжку. Обязательно посмотрю
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
21.05.2014, 21:12     Инициализация динамического массива #20
Цитата Сообщение от Altair42 Посмотреть сообщение
Tuma, я не жалуюсь на книгу все написано вполне понятно.
как вы умудрились дойти до STL библиотек и итераторов, при этом не зная основ?
По вашему Липпману отзывов хороших не нашёл, сам не читал не знаю, но имхо Дейтл "Как программировать на С++" и С.Прата"Язык программирования С++" лучше. Начните лучше читать что-то из этого (Прата потяжелее но имхо поинтереснее)
intern
15 / 15 / 6
Регистрация: 30.03.2014
Сообщений: 74
Завершенные тесты: 2
22.05.2014, 11:18     Инициализация динамического массива #21
Возможно, так будет наглядно (N+1 в циклах for взято в учебных целях):
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
#include <iostream>
 
int main ()
{
    const int N = 10;
    int *array = new int [N];
 
    for (int i=0; i!=N+1; ++i)
    {
        std::cout << "array[" << i << "] = " << array[i] << std::endl;
    }
 
    int a, i=0;
    std::cout << "Enter numbers:" << std::endl;
    while (std::cin >> a)
    {
        if (i>=N)
        {
            break;
        }
        else
        {
           array[i] = a;
           ++i;
        }
    }
 
    for (int i=0; i!=N+1; ++i)
    {
        std::cout << "array[" << i << "] = " << array[i] << std::endl;
    }
 
    delete [] array;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2014, 10:56     Инициализация динамического массива
Еще ссылки по теме:

Инициализация массива - C++
Есть массив: int d; Есть константа бесконечности (просто константа) inf, равная 2^30. Я попытался проинициализировать массив этой...

Инициализация массива - C++
int ** mas, n; cout &lt;&lt; &quot;Введите порядок треугольника паскаля: &quot; &lt;&lt; endl; cin &gt;&gt; n; mas = new int * ; for (int i = 0; i &lt; n;...

Инициализация массива - C++
Нужно объявить несколько статических строк, содержащих байты со значениями в диапазоне от 1 до 255 Пытаюсь что-то в этом духе: ...

Инициализация двумерного массива - C++
Чет не понимаю на что возмущается компилятор... Заполняю как и заполнял раньше... char my_array; int x = 0; int t = 2; for(; x &lt; 2;...

Инициализация char массива - C++
Мне нужно объявить и инициализировать массив char'ов. К примеру, char *m_words={'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'}; ...


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

Или воспользуйтесь поиском по форуму:
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 338
24.05.2014, 10:56  [ТС]     Инициализация динамического массива #22
dzrkot, я не дошел до STL библиотек. Пока изучаю асновы. Тут только "намеки" на некоторые библиотеки.
Изучали по порядку:
-Стандартные объекты ввода и ввода.
-Операторы if, while, for
-Введение в классы. Класс Sales_item.(такого класса не существует я так понял это чтобы показать пример)
-Переменные и базовые типы
-Библиотечные типы данных
-Массивы и указатели
-Выражения.
Это пока асновы. Дальше пойдет операторы, функции, библиотеа ввода-вывода. Вторая часть Контейнеры и Алгоритмы, 3-я часть абстракция класы и данные, 4-я часть. Объектно ориентированное и общее программирование.
В книге все разделено так чтоб изучали все когда придет время. Многое что относится к библиотекам вектор, стринг оставили на потом для более подробного изучение когда сможем их понят. (По крайней мере так написано )

Добавлено через 2 минуты
intern, понятненко.
Yandex
Объявления
24.05.2014, 10:56     Инициализация динамического массива
Ответ Создать тему
Опции темы

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