Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
parkito
11 / 11 / 9
Регистрация: 22.03.2010
Сообщений: 693
#1

Ввод константы - C++

15.03.2011, 21:38. Просмотров 4984. Ответов 14
Метки нет (Все метки)

Имеется массив. Нужно чтоб пользователь вводил его размер, но для этого нужно чтоб переменная была константой. Вопрос как сделать так чтоб пользователь константу вводил?
C++
1
2
3
4
cout<<"Введите колличество элементов в массиве";
cin>> z;
z++;
int arrive[z];
Не работает

C++
1
2
3
4
5
cout<<"Введите колличество элементов в массиве";
int const z;
cin>> z;
z++;
int arrive[z];
Тоже не работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 21:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ввод константы (C++):

Константы и C++
Скажите новичку зачем в C++ константы? И для чего они?

Указатели на константы
Поясните. Запутался в нескольких примерах. С++ 11 стандарт. 1.int i=0, &amp;r=i;...

New, константы, указатели
Как продолжить? const int * const* *const* * * x = new В принципе,...

Указатели и константы
В чем разница между записью const int * a и int * const a? Где то в книге...

Статическе константы
Для чего используют статические константы?

Экспоненциальные Константы
Всем доброго времени суток. Хотелось бы спросить такую вещь. Вид...

14
Subgrando
40 / 40 / 9
Регистрация: 28.01.2011
Сообщений: 175
15.03.2011, 21:40 #2
C++
1
int* arrive = new int[x];
вроде так
0
MILAN
888 / 782 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
15.03.2011, 21:40 #3
parkito, на то и она константа, что ее нельзя менять. Вам надо использовать динамические массивы, или векторы
C++
1
2
3
4
5
6
int *arr;
int size;
cin>>size;
arr=new int[size];
............
delete [] arr;
1
IrineK
Заблокирован
15.03.2011, 21:46 #4
Есть два варианта.
1) Если вы работаете со статическим массивом, то объявляете его достаточно большим:
int mas[100] - выделяется 100 ячеек памяти длины int.
А затем при вводе размерности пользователем предупреждаете, что она не может превышать 100.
Если пользователь ввел:
M = 50;
то дальше вы манипулируете только 50 ячейками памяти из выделенных 100;

2) Если работаете с динамическим массивом, размерность не должна быть константой.
Если пользователь ввел:
M = 50;
Вы ту же создаете массив:
int* mas = new int[M];
"впритык".
1
parkito
11 / 11 / 9
Регистрация: 22.03.2010
Сообщений: 693
15.03.2011, 21:46  [ТС] #5
Как это осуществить в этой программе ?
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
#include<iostream>
using namespace std;
int main()
{setlocale(LC_ALL,"Russian");
int z;
int p;
int r;
cout<<"Введите колличество элементов в массиве";
cin>> z;
z++;
cout<<"Введите на сколько каждый член должен отличаться от предыдущего";
cin>>r;
cout<<"Введите минимальный член массива ";
cin>>p;
int arrive[z];
for(int i = 0; i<z; i++,p+=r)
{arrive[i]=p;
 
int a,b=0;
for(a=0;a<z;a++)
{ 
    if(arrive[a]>b)
        b=arrive[a];
    else
    {
        for(int d = 0;d<z;d++)
        a++;
    }
}
int l=0;
for(int dar=0;dar<z;dar++)
{
if(l<arrive[dar])
l=arrive[dar];
else{
        for(int m = 0;m<z;m++)
            dar++;}
}
cout<<"Максимальное число массива " <<b;
cout<<"Минимальное число массива " <<l;
cin.get();
return 0;
}
}
0
IrineK
Заблокирован
15.03.2011, 21:51 #6
parkito,
а зачем вам десятая строка: z++;?
0
parkito
11 / 11 / 9
Регистрация: 22.03.2010
Сообщений: 693
15.03.2011, 21:53  [ТС] #7
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
#include<iostream>
using namespace std;
int main()
{setlocale(LC_ALL,"Russian");
int z;
int p;
int r;
cout<<"Введите колличество элементов в массиве ";
cin>> z;
z++;
cout<<"Введите на сколько каждый член должен отличаться от предыдущего ";
cin>>r;
cout<<"Введите минимальный член массива ";
cin>>p;
int *arrive=new int [z];
for(int i = 0; i<z; i++,p+=r)
{arrive[i]=p;
 
int a,b=0;
for(a=0;a<z;a++)
{ 
    if(arrive[a]>b)
        b=arrive[a];
    else
    {
        for(int d = 0;d<z;d++)
        a++;
    }
}
int l=0;
for(int dar=0;dar<z;dar++)
{
if(l<arrive[dar])
l=arrive[dar];
else{
        for(int m = 0;m<z;m++)
            dar++;}
}
cout<<"Максимальное число массива " <<b;
cout<<"Минимальное число массива " <<l;
cin.get();
cin.get();
 
 
 
 
 
return 0;
}
}
0
IrineK
Заблокирован
15.03.2011, 21:56 #8
while (1)
parkito, а зачем вам десятая строка: z++;?
0
parkito
11 / 11 / 9
Регистрация: 22.03.2010
Сообщений: 693
15.03.2011, 21:59  [ТС] #9
Цитата Сообщение от IrineK Посмотреть сообщение
parkito, а зачем вам десятая строка: z++;?
Так там фокус с массивом. Счет начинается с нуля. Вот чтоб правильно было
0
IrineK
Заблокирован
15.03.2011, 22:00 #10
Никакого фокуса.
Вам ввели Z = 10, т.е. заказали 10 переменных.
Они нумеруются от 0 до 9 - посчитайте, сколько их?
0
parkito
11 / 11 / 9
Регистрация: 22.03.2010
Сообщений: 693
15.03.2011, 22:02  [ТС] #11
Цитата Сообщение от IrineK Посмотреть сообщение
Никакого фокуса.
Вам ввели Z = 10, т.е. заказали 10 переменных.
Они нумеруются от 0 до 9 - посчитайте, сколько их?
значит я спутал ситуацию с присвоением, там же последнему нельзя присваивать.

А вот что вот здесь не правильно. Программа не считает самое большое число.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int a,b=0;
for(a=0;a<z;a++)
{ 
    if(arrive[a]>b)
        b=arrive[a];
    else
    {
        for(int d = 0;d<z;d++)
        a++;
    }
}
cout<<"Максимальное число массива " <<b<<endl;
0
IrineK
Заблокирован
15.03.2011, 22:06 #12
Много лишнего:
C++
1
2
3
4
5
6
7
int a,b=0;
for(a=0;a<z;a++)
{ 
        if(arrive[a]>b)
                b=arrive[a];
 }
cout<<"Максимальное число массива " <<b<<endl;
1
parkito
11 / 11 / 9
Регистрация: 22.03.2010
Сообщений: 693
15.03.2011, 22:19  [ТС] #13
Все равно именно этот цикл не работает так как должен


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
#include<iostream>
using namespace std;
int main()
{setlocale(LC_ALL,"Russian");
int z;
int p;
int r;
cout<<"Введите колличество элементов в массиве ";
cin>> z;
cout<<"Введите на сколько каждый член должен отличаться от предыдущего ";
cin>>r;
cout<<"Введите минимальный член массива ";
cin>>p;
int *arrive=new int[z];
for(int i = 0; i<z; i++,p+=r)
{arrive[i]=p;
 
int a,b=0;
for(a=0;a<z;a++)
{ 
        if(arrive[a]>b)
                b=arrive[a];
 }
cout<<"Максимальное число массива " <<b<<endl;
 
int l=0;
for(int dar=0;dar<z;dar++)
{
if(l<arrive[dar])
l=arrive[dar];
 
}
 
cout<<"Минимальное число массива " <<l;
cin.get();
cin.get();
return 0;
}
}
Что с ним такое ? ему присваивается минимальное значение.

C++
1
2
3
4
5
6
for(a=0;a<z;a++)
{ 
        if(arrive[a]>b)
                b=arrive[a];
 }
cout<<"Максимальное число массива " <<b<<endl;
Добавлено через 4 минуты
У меня такое чувство, что какой-то цикл работает не так как нужно.
0
IrineK
Заблокирован
15.03.2011, 22:23 #14
В строке 16 вместо
C++
1
{arrive[i]=p;
должно быть
C++
1
arrive[i]=p;
В строке 39 уберите }.
1
parkito
11 / 11 / 9
Регистрация: 22.03.2010
Сообщений: 693
15.03.2011, 22:25  [ТС] #15
Нашел я ошибки логические и исправил

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
#include<iostream>
using namespace std;
int main()
{setlocale(LC_ALL,"Russian");
int z;
int p;
int r;
cout<<"Введите колличество элементов в массиве ";
cin>> z;
cout<<"Введите на сколько каждый член должен отличаться от предыдущего ";
cin>>r;
cout<<"Введите минимальный член массива ";
cin>>p;
int *arrive=new int[z];
for(int i = 0; i<z; i++,p+=r)
{arrive[i]=p;}
 
int a,b=0,la=0;
for(a=0;a<z;a++)
{ 
        if(arrive[a]>b)
          b=arrive[a];
        
 }
cout<<"Максимальное число массива " <<b<<endl;
 
int l=0;
for(int dar=0;dar<z;dar++)
{
if(l>arrive[dar])
l=arrive[dar];
 
}
 
cout<<"Минимальное число массива " <<l;
cin.get();
cin.get();
return 0;
}
Добавлено через 59 секунд
Цитата Сообщение от IrineK Посмотреть сообщение
В строке 16 вместо
C++
1
{arrive[i]=p;
должно быть
C++
1
arrive[i]=p;
В строке 39 уберите }.
И еще с циклом отвечающего за минимальные значения надо поработать.
0
15.03.2011, 22:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2011, 22:25
Привет! Вот еще темы с решениями:

встроенные константы в С++ (pi e)
Подскажите, существуют ли в С++ встроенные константы. Например pi=3.14.... ...

символьные константы
введите последовательность н- символьных констант, считать, что количество...

изменение константы
Добрый день, только начал учить с++, поэтому сильно не бейте :) интересует...

Вычисляемые константы
Можно ли сделать так, чтобы сначала вычислить, а затем сделать константой?


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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