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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
15.03.2011, 21:38     Ввод константы #1
Имеется массив. Нужно чтоб пользователь вводил его размер, но для этого нужно чтоб переменная была константой. Вопрос как сделать так чтоб пользователь константу вводил?
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];
Тоже не работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 21:38     Ввод константы
Посмотрите здесь:

изменение константы C++
C++ Экспоненциальные Константы
C++ Определение константы
константы в классах C++
Указатели и константы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Subgrando
40 / 40 / 3
Регистрация: 28.01.2011
Сообщений: 175
15.03.2011, 21:40     Ввод константы #2
C++
1
int* arrive = new int[x];
вроде так
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 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;
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];
"впритык".
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
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;
}
}
IrineK
Заблокирован
15.03.2011, 21:51     Ввод константы #6
parkito,
а зачем вам десятая строка: z++;?
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
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;
}
}
IrineK
Заблокирован
15.03.2011, 21:56     Ввод константы #8
while (1)
parkito, а зачем вам десятая строка: z++;?
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
15.03.2011, 21:59  [ТС]     Ввод константы #9
Цитата Сообщение от IrineK Посмотреть сообщение
parkito, а зачем вам десятая строка: z++;?
Так там фокус с массивом. Счет начинается с нуля. Вот чтоб правильно было
IrineK
Заблокирован
15.03.2011, 22:00     Ввод константы #10
Никакого фокуса.
Вам ввели Z = 10, т.е. заказали 10 переменных.
Они нумеруются от 0 до 9 - посчитайте, сколько их?
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
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;
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;
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
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 минуты
У меня такое чувство, что какой-то цикл работает не так как нужно.
IrineK
Заблокирован
15.03.2011, 22:23     Ввод константы #14
В строке 16 вместо
C++
1
{arrive[i]=p;
должно быть
C++
1
arrive[i]=p;
В строке 39 уберите }.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2011, 22:25     Ввод константы
Еще ссылки по теме:

C++ Константы и C++
C++ Константы и указатели
Указатели и константы C++

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

Или воспользуйтесь поиском по форуму:
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
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 уберите }.
И еще с циклом отвечающего за минимальные значения надо поработать.
Yandex
Объявления
15.03.2011, 22:25     Ввод константы
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru