Я практикую некоторые манипуляции с массивами и мне интересно, почему мой вывод не обновляется. это должно быть легко, но это вызывает у меня головную боль. Предполагается, что он копирует последний элемент в выбранный элемент, но независимо от того, что я сделал, мой массив не обновляется. пожалуйста, прости мой пост Noob. ти

#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] <<"]";
    }
}
c++
-1
datguy 27 Фев 2018 в 17:05

3 ответа

Если массив имеет 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];
   }
0
Vlad from Moscow 27 Фев 2018 в 14:30
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];
0
Sarmad Ali 27 Фев 2018 в 15:39

У вас есть это задом наперед:

search = array[size];

Должно быть что-то вроде:

array[size - 1] = search;

Если вы хотите назначить последний элемент. И это должно быть -1, так как массив начинается с 0 индекса.

Не на 100% уверен, что вы хотите сделать из описания, но:

array[size - 1] = 

Как бы вы присвоили последний элемент.

0
ericcurtin 27 Фев 2018 в 14:13