我正在练习一些数组操作,我想知道为什么我的输出没有更新。这应该很容易,但这让我很头疼。它应该是将最后一个元素复制到我选择的元素,但不管我做了什么,我的数组都没有更新。请原谅我的菜鸟帖子。 TY
#include<iostream>
using namespace std;
int main (){
char array[20];
char search;
int size;
cout<<"Copy Last Element" <<endl;
cout<<"==========================================" <<endl;
cout<<"Size of the Array: ";
cin>>size;
for(int x = 0; x<size; x++){
cout<<"Enter The elements " <<x+1 <<": ";
cin>>array[x];
}
cout<<"==========================================" <<endl;
cout<<"Input Array: ";
for(int x = 0; x<size; x++){
cout<<"[" <<array[x] <<"]";
}
cout<<endl;
cout<<"==========================================" <<endl;
cout<<"copy element: ";
cin>>search;
for(int x = 0;x<size;x++){
if(search==array[x]){
cout<<"Element exist in position " <<x+1 ;
}
}
search = array[size];
cout<<endl;
cout<<"==========================================" <<endl;
cout<<"New Array: ";
for(int x =0; x<size; x++){
cout<<"[" <<array[x] <<"]";
}
}
答案 0 :(得分:0)
你有这个倒退:
search = array[size];
应该是这样的:
array[size - 1] = search;
如果要分配到最后一个元素。并且它必须为-1,因为数组从0索引开始。
不是100%确定您想要从描述中做什么,但是:
array[size - 1] =
是你如何分配给最后一个元素。
答案 1 :(得分:0)
如果数组包含size
个元素,则索引的有效范围为[0, size-1]
(更正确[0, size)
)。
看来你的意思是以下
cin>>search;
int i = 0;
while ( i < size && search != array[i] ) ++i;
if ( i != size )
{
cout<<"Element exist in position " << i+1 ;
array[i] = array[size - 1];
}
答案 2 :(得分:0)
很少观察
您可以使用char array[20]
代替std::vector<int> array
std::vector<char> array = {'a','b','c','d','e'};
for(int i = 0; i < array.size();i++) {
std::cin>>array[i];
}
此条件if(search==array[x]){
确实你需要更换,但你没有。喜欢
下面
for(int x = 0;x<size;x++) {
if(search==array[x]){ /* if searched ele is found */
array[x] = array[size-1];/* copy last ele to xth position */
cout<<"Element exist in position " <<x+1 ;
}
}
答案 3 :(得分:0)
cin>>search;
for(int x = 0;x<size;x++){
if(search==array[x]){
cout<<"Element exist in position " <<x+1 ;
}
}
search = array[size];
这是您的代码,我想您想要放置array[size]
,这是您搜索到的最后一个元素。在search== array[x]
您需要使用break
语句的地方,您可以将最后一个值放在搜索位置。就像这样
for(int x = 0;x<size;x++){
if(search==array[x]){
cout<<"Element exist in position " <<x ;
break;
}
}
array[x]=array[size];