我需要更改什么才能使'n'成为数组大小 [英] What do I need to change to make 'n' the array size
问题描述
#include < iostream >
#include < cstdlib < span class =code-keyword>>
#include < span class =code-keyword>< vector >
#define SIZE 5
使用 < span class =code-keyword> namespace std;
class queue
{
int arr [SIZE];
int front,rear;
public :
queue()
{
front = 0 ;
rear = 0 ;
}
void enqueue( int n);
void dequeue();
void display();
};
void queue :: enqueue( int n)
{
if (front ==(rear + 1)%SIZE)
cout<< 队列溢出..<< endl<< endl;
else
{
arr [rear] = n;
后++;
}
}
void queue :: dequeue()
{
if (front == rear)
cout<< 队列下溢。先排队。<< endl;
else
{
cout<< 已移除<< arr [front]<< endl;
front ++;
}
}
void queue :: display()
{
cout<< 队列包含:<< endl;
for ( int i = front; i< rear; i ++)
cout< ;< << arr [i];
cout<< endl;
}
int main()
{
queue q;
int n,n2;
vector< int> SZ;
cout<< 输入数组大小:;
cin>> N;
sz.push_back(n);
for ( int i = 0 ; i< sz.size(); i ++)
do
{
cout<< 1.Enqueue< < ENDL;
cout<< 2.出列<< endl;
cout<< 3.退出<< endl;
cout<< 输入选项:;
cin>> n2;
switch (n2)
{
case 1 :
cout<< 输入数字:;
cin>> n;
q.enqueue(n);
q.display();
break ;
case 2 :
q.dequeue();
q.display();
break ;
case 3 :
断裂跨度>;
默认:
cout<< 您的选择超出范围。<< endl;
break ;
}
}
while (n2!= 3 跨度>);
return 0 ;
}
大家好,我是c ++的新手,有点混淆这段代码。
如您所见,此程序中数组的大小定义为5.我需要更改的代码部分 n (用户输入)成为数组大小?
这是我用户使用vector输入数组大小的代码。
vector< int> SZ;
cout<< 输入数组大小:;
cin>> N;
sz.push_back(n);
for ( int i = 0 ; i< sz.size(); i ++)
对于此代码
for(int i = 0; i< sz.size(); i ++)
我是否需要使用 size_t 或 int 没问题?
我将非常感谢您提供的任何帮助。
这是很多方法之一,而且非常直接。
更改
int arr [SIZE];
到
int * arr = NULL;
cout<< 输入数组大小:;
cin>> N;
arr =( int *)calloc(n, sizeof ( INT 跨度>));
for ( int i = 0 ; i< n; i ++)
{
// 做点什么
arr [i] = i + 1 ;
}
别忘了致电
免费(arr);
在你的范围的最后。
使用C ++
,我会选择vector< int>
而不是C
-like数组。你知道,向量
会动态增长,所以你不必担心它的上限。
Quote:vector< int> sz;
cout<< 输入数组的大小:;
cin>> n;
sz.push_back(n);
for(int i = 0; i< sz.size(); i ++)
这是错误的(sz.size()
是1
)。改为使用
vector< int> v; // 用于存储整数的'dyanmic array'
size_t n;
cin>> N;
for ( size_t i = 0 ; i< n; ++ i)
v.push_back( / * 你喜欢什么int * / 跨度>);
[update]
如果你真的不想用vector< int>
然后你必须(如已经建议的那样)动态分配数组,例如
cout<< 输入数组大小:;
cin>> N;
int * arr = new int 跨度> [N];
// ..
// ...使用数组
// ..
// 执行清理
delete [] arr;
[/ update]
#include <iostream>
#include <cstdlib>
#include <vector>
#define SIZE 5
using namespace std;
class queue
{
int arr[SIZE];
int front, rear;
public:
queue()
{
front=0;
rear=0;
}
void enqueue(int n);
void dequeue();
void display();
};
void queue::enqueue(int n)
{
if (front==(rear+1)%SIZE)
cout<<"Queue overflow.."<<endl<<endl;
else
{
arr[rear]=n;
rear++;
}
}
void queue::dequeue()
{
if(front==rear)
cout<<"Queue underflow. Enqueue first."<<endl;
else
{
cout<<"Removed "<<arr[front]<<endl;
front++;
}
}
void queue::display()
{
cout<<"The Queue contains:"<<endl;
for(int i=front; i<rear; i++)
cout<<" "<<arr[i];
cout<<endl;
}
int main()
{
queue q;
int n,n2;
vector <int> sz;
cout << "Enter the size of array: ";
cin >> n;
sz.push_back(n);
for (int i = 0; i<sz.size(); i++)
do
{
cout<<"1. Enqueue"<<endl;
cout<<"2. Dequeue"<<endl;
cout<<"3. Exit"<<endl;
cout<<"Enter choice: ";
cin>>n2;
switch(n2)
{
case 1:
cout<<"Enter number: ";
cin>>n;
q.enqueue(n);
q.display();
break;
case 2:
q.dequeue();
q.display();
break;
case 3:
break;
default:
cout<<"Your choice is out of range."<<endl;
break;
}
}
while(n2!=3);
return 0;
}
Hi everyone, I'm new to c++ and a little confuse with this code.
As you can see, the size of array in this program is define as 5. What part of the codes I need to change to make n (user input) become the array size?
Here's my code for array size input by user using vector.
vector <int> sz;
cout << "Enter the size of array: ";
cin >> n;
sz.push_back(n);
for (int i = 0; i<sz.size(); i++)
And for this code
for (int i = 0; i<sz.size(); i++)
do I need to use size_t or int is fine?
I will be grateful for any help you can provide.
This is one of many ways to do it and it is pretty straight forward.
Change
int arr[SIZE];
to
int* arr = NULL;
cout << "Enter the size of array: "; cin >> n; arr = (int*)calloc(n, sizeof(int)); for (int i=0; i<n; i++) { // Do something arr[i] = i + 1; }
Don't forget to call
free(arr);
at the end of your scope.
UsingC++
, I would choose avector<int>
instead of aC
-like array. You know, avector
dynamically grows, so you haven't to bother about its upper limit.
Quote:vector <int> sz;
cout << "Enter the size of array: ";
cin >> n;
sz.push_back(n);
for (int i = 0; i<sz.size(); i++)
That is wrong (sz.size()
is1
). Use instead
vector <int> v; // the 'dyanmic array' for storing integers size_t n; cin >> n; for (size_t i=0; i<n; ++i) v.push_back( /* whatever int you like */);
[update]
If you really don't want to usevector<int>
then you have to (as already suggested) dynamically allocate the array, e.g.
cout << "Enter the size of array: "; cin >> n; int * arr = new int[n]; //.. //... use the array //.. // perform cleanup delete [] arr;
[/update]
这篇关于我需要更改什么才能使'n'成为数组大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!