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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 690
#1

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

15.03.2011, 21:38. Просмотров 3073. Ответов 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];
Тоже не работает.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Сообщений: 690
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
Сообщений: 690
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
Сообщений: 690
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
Сообщений: 690
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
Сообщений: 690
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++
C++ Не различает константы
C++ Указатели на константы

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

Или воспользуйтесь поиском по форуму:
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 690
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     Ввод константы
Ответ Создать тему
Опции темы

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