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

хитрая константа не даёт создать обычный массив - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массивы и натуральные числа http://www.cyberforum.ru/cpp-beginners/thread391748.html
Помогите пожалуйста написать программу. Ввести натуральное число n. а) Записать в массив только те делители числа n, которые являются палиндромами. б) Вывести все делители числа n, у которых последняя цифра наименьшая. Заранее спасибо.
C++ Класс "Список", функция добавления элемента в конец #include <iostream> #include <cstring> using namespace std; struct myElem { char *line; myElem *next; myElem(const char* str) http://www.cyberforum.ru/cpp-beginners/thread391731.html
C++ Вывести все целые числа, расположенные между заданными
Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (включая сами эти числа), в порядке их убывания. Использовать цикл for. #include <stdio.h> #include <conio.h> void main() { int a,b,i; clrscr(); printf("vvedite a: "); scanf("%i",&a);
C++ Проверьте, пожалуйста, правильность составленного мной алгоритма)
Вот код: #include <iostream> #include <stdlib.h> #include <stdio.h> int main() { FILE *fp; int n, i, min, number, sum, a; char fname = "D:\\file.txt";
C++ #pragma once http://www.cyberforum.ru/cpp-beginners/thread391715.html
Можно ли считать директиву #pragma once полноценно заменой техники #ifndef MYFILE_H #define MYFILE_H ... #end if
C++ Ошибка сегментации. Здравствуйте, дорогие форумчане! Тут такое дело, есть программа, код приведен ниже, там есть некоторый массив D. После компиляции программы вместе с этим массивом, программа вылетает, выдав ошибку Без неё, программа компилируется, выполняет циклы и успешно завершает работу. Проверил отладчиком, выдало "ошибку сегментации". Увеличил размер стека, тож не помогло. Чё делать? #include... подробнее

Показать сообщение отдельно
prazuber
109 / 109 / 3
Регистрация: 29.04.2010
Сообщений: 240
25.11.2011, 19:21
Bers, есть два типа констант. Первые - те, что известны на этапе компиляции. Стандарт про это пишет так:
An integral constant-expression can involve only literals (2.13), enumerators, const variables or static
data members of integral or enumeration types initialized with constant expressions (8.5), non-type template
parameters of integral or enumeration types, and sizeof expressions.
Второй тип - все остальные. Ваше const int N является вторым типом, потому что не попадает в описание первого.
N инициализируется вначале работы программы, но уже в рантайме. Поэтому массив с помощью нее инициализировать нельзя. Зато можно написать такое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int f()
{
    int a;
    cin>>a;
    return a;
}
 
const int N(f());
 
int main()
{
    cout<<N<<endl;
};
Upd. Ошибся немного с цитатами, поправил.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru