数组操作,复制最后一个元素

时间:2018-02-27 14:05:04

标签: c++

我正在练习一些数组操作,我想知道为什么我的输出没有更新。这应该很容易,但这让我很头疼。它应该是将最后一个元素复制到我选择的元素,但不管我做了什么,我的数组都没有更新。请原谅我的菜鸟帖子。 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] <<"]";
    }
}

4 个答案:

答案 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];