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

Почему массив изначально нулями не инициализируется? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ виртуальные функции http://www.cyberforum.ru/cpp-beginners/thread958141.html
C++ подскажите пожалуста на словах код писать ненадо. как преопределить функцию virtual Print(). Создать абстрактный базовый класс Employer (служащий) с чисто виртуальной функцией Print()....
C++ Заменить рекурсию Доброго времени суток. Помогите избавиться от рекурсии #include "stdafx.h" #include <iostream> #include <vector> using namespace std; int n; vector<int> p(10); http://www.cyberforum.ru/cpp-beginners/thread958137.html
Строки. Вывести на экран самую короткую группу из 0 и 1 C++
Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран самую короткую группу. Попроще только, без #include <algorithm> #include <iterator>, как в похожем вопросе здесь, такое еще...
Утечка памяти C++
В небольшой программе с использованием OpenCV происходит утечка памяти, с чем связана не понимаю, прошу помощи, спасибо! #include "stdafx.h" #include <cv.h> #include <highgui.h> #include...
C++ Вычислить сумму ряда http://www.cyberforum.ru/cpp-beginners/thread958125.html
Вычислить сумму ряда(приведен на изображении) с точностью ε. Сделать графическую интерпретацию результата.\ Как я понял вводятся 'x' и 'ε'. Но непонятно как считается эта сумма(какую формулу...
C++ Создать свой класс, содержащий три закрытые переменные Программа на С++ СРОЧНО! Создать свой класс, содержащий три закрытые переменные типа int, char, double, одну открытую переменную и две функции, одна из которых имеет один параметр, вторая - три... подробнее

Показать сообщение отдельно
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 480
Записей в блоге: 1
20.09.2013, 12:02
motr, вот Ваш измененный код из первого сообщения
Если о сохранении данных заботиться не нужно, тогда так:
C++
1
2
3
4
5
6
7
8
n=1;
double *a = new double [n];
scanf ("%i",b);
if (b==1)
{
   n++;   
   a = new double [n]; //убрал повторное объяление типа, т.к. в этом случае создается новая переменая, область //видимости к-рой заканчивается с концом фигуных скобок if
}
Если же заботиться о сохранении данных, тогда так
C++
1
2
3
4
5
6
7
8
9
10
11
n=1;
double *a = new double [n];
scanf ("%i",b);
if (b==1)
{
   n++; 
   double *a2=a;  
   a = new double [n]; 
   for(int i=0;i<n-1;i++) a[i]=a2[i];
   delete []a2;
}
Добавлено через 9 минут
Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
Не слушайте эту лабуду и используйте vector.
C++
1
2
3
4
5
6
7
8
n=1;
std::vector<double> a(n); // и инициализируется нулями
scanf ("%i", &b);
if (b==1)
{
    a.resize(a.size() + 1);
    // и дальше с ним что-то делаете
}
Извиняюсь, если обидел мазохистов.
motr, если Вам задали лабу в универе и она на использование массивов, то вариант с типом vector у Вас скорей всего не примут. Смотрите приведенный мной вариант.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru