Rumah > pembangunan bahagian belakang > C++ > Program C++ untuk mendapatkan bilangan item terakhir yang diberikan dalam tatasusunan

Program C++ untuk mendapatkan bilangan item terakhir yang diberikan dalam tatasusunan

WBOY
Lepaskan: 2023-08-26 22:05:10
ke hadapan
1034 orang telah melayarinya

Program C++ untuk mendapatkan bilangan item terakhir yang diberikan dalam tatasusunan

Array ialah struktur data yang direka khas untuk mengekalkan jenis data yang sama dalam satu siri kawasan ingatan. Faedah utama menggunakan tatasusunan ialah kita boleh mengaksesnya dari mana-mana kedudukan menggunakan parameter indeks. Walau bagaimanapun, memasukkan dan memadam data memerlukan operasi berjujukan, yang akan menjadikan struktur data ini sebagai struktur data linear. Kita hanya boleh menggunakan indeks atau nombor kedudukan dalam kurungan segi empat sama untuk mengekstrak elemen daripada tatasusunan. Artikel ini akan menunjukkan cara membaca nombor k terdekat daripada tatasusunan dalam C++.

Fahami konsep dan gambarkan dengan contoh

Given array A = [10, 14, 65, 85, 96, 12, 35, 74, 69]
We have another number k = 4
The number of elements in A is 9

The output will be the last k elements from A, which are:
12, 35, 74, 69
Salin selepas log masuk

Kami mempunyai elemen di dalam tatasusunan untuk setiap tatasusunan, dan kuantiti n juga penting Nombor n menunjukkan bilangan elemen yang sah ada dalam tatasusunan maksimum unsur Z, hanya n daripadanya mesti sah; dalam kes ini, k mesti kurang daripada atau sama dengan n untuk mendapatkan semula elemen kth dari tatasusunan. kita mesti menyemaknya. Untuk pemahaman yang lebih baik, mari kita lihat algoritmanya.

Algoritma

  • Baca tatasusunan A sebagai input. Menerima bilangan elemen secara serentak: n dan k untuk membaca elemen k pertama dalam A

  • Buat tatasusunan kosong B

  • Jika k < n, maka

    • untuk i dalam julat 0 hingga k - 1, lakukan

      • B[ i ] = A[ n - k + i ]

    • tamat untuk

  • tamat jika

  • Kembali ke B

Contoh

#include <iostream>
# define Z 50

using namespace std;

void displayArr(int arr[], int n){
   for( int i = 0; i < n; i++ ){
      cout << arr[ i ] << ", ";
   }
   cout << endl;
}

void pickLastKElement( int A[], int n, int B[], int &m, int k) {
   if( k <= n ){
      for( int i = 0; i < k; i++ ) {
         B[ i ] = A[ n - k + i ];
         m = m + 1;
      }   
   }
}

int main() {
   int A[ Z ] = {57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14};
   int n = 12;
   
   int B[ Z ];
   int m = 0;
   
   cout << "Given Array: ";
   displayArr( A, n );
   
   pickLastKElement( A, n, B, m, 7 );
   cout << "The last 7 element from A: ";
   displayArr( B, m );
   
   m = 0;
   
   pickLastKElement( A, n, B, m, 10 );
   cout << "The last 10 element from A: ";
   displayArr( B, m );
}
Salin selepas log masuk

Output

Given Array: 57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14, 
The last 7 element from A: 52, 86, 14, 76, 65, 32, 14, 
The last 10 element from A: 44, 19, 86, 52, 86, 14, 76, 65, 32, 14,
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Gunakan vektor

Dalam kaedah di atas, tatasusunan statik digunakan untuk menyimpan dan mendapatkan semula elemen tatasusunan. Fungsi yang sama juga boleh dicapai menggunakan vektor. Vektor adalah sebahagian daripada C++ STL dan merupakan tatasusunan dinamik. Mari kita lihat kodnya. Algoritma kekal tidak berubah.

Contoh

#include <iostream>
#include <vector>
# define Z 50

using namespace std;

void displayArr( vector<int> v ){
   for( int i = 0; i < v.size() ; i++ ){
      cout << v[ i ] << ", ";
   }
   cout << endl;
}

vector<int> pickLastKElement( vector<int> A, int k) {
   vector<int> B;
   if( k <= A.size() ){
      for( int i = 0; i < k; i++ ) {
         B.push_back( A[ A.size() - k + i ] );
      }   
   }
   return B;
}

int main() {
   vector<int> A = {57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14}; 
   
   vector<int> B;
   
   cout << "Given Array: ";
   displayArr( A );
   
   B = pickLastKElement( A, 7 );
   cout << "The last 7 element from A: ";
   displayArr( B ); 
   
   B = pickLastKElement( A, 10 );
   cout << "The last 10 element from A: ";
   displayArr( B ); 
}
Salin selepas log masuk

Output

Given Array: 57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14, 
The last 7 element from A: 52, 86, 14, 76, 65, 32, 14, 
The last 10 element from A: 44, 19, 86, 52, 86, 14, 76, 65, 32, 14,
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Gunakan pembina vektor

Cara terakhir ialah membuat vektor kosong secara manual dan menyalin elemen satu demi satu. Walau bagaimanapun, kita boleh terus menggunakan iterator vektor untuk menyalin elemen k terakhir dalam pembina vektor. Mari kita lihat kod untuk memahami konsep ini.

Contoh

#include <iostream>
#include <vector>
# define Z 50

using namespace std;

void displayArr( vector<int> v ){
   for( int i = 0; i < v.size() ; i++ ){
      cout << v[ i ] << ", ";
   }
   cout << endl;
}

vector<int> pickLastKElement( vector<int> A, int k) {
   vector<int> B( A.begin() + (A.size() - k), A.end() );
   return B;

}

int main() {
   vector<int> A = {57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14}; 
   
   vector<int> B;
   
   cout << "Given Array: ";
   displayArr( A );
   
   B = pickLastKElement( A, 7 );
   cout << "The last 7 element from A: ";
   displayArr( B ); 
   
   B = pickLastKElement( A, 10 );
   cout << "The last 10 element from A: ";
   displayArr( B ); 
}
Salin selepas log masuk

Output

Given Array: 57, 10, 44, 19, 86, 52, 86, 14, 76, 65, 32, 14, 
The last 7 element from A: 52, 86, 14, 76, 65, 32, 14, 
The last 10 element from A: 44, 19, 86, 52, 86, 14, 76, 65, 32, 14,
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Di sini, vektor B dicipta menggunakan elemen k terakhir bagi vektor A. Gunakan kaedah begin() untuk mendapatkan alamat item pertama dan gunakan offset begin() (A.size() − k) sebagai titik akhir, supaya ia menghala ke elemen k terakhir.

Kesimpulan

Artikel ini menerangkan tiga cara berbeza untuk membaca atau memilih n nombor terakhir daripada tatasusunan yang diberikan. Penyelesaian kedua dan ketiga adalah berdasarkan vektor dan bukannya tatasusunan lalai statik yang digunakan oleh pendekatan pertama. Jawapan kepada dua soalan pertama adalah mudah. Kami menggunakan gelung for untuk menyalin elemen k terakhir satu demi satu. Teknik terakhir adalah yang paling mudah dan menggunakan pembina vektor untuk menghasilkan vektor dengan menyalin komponen menggunakan iterator vektor lain.

Atas ialah kandungan terperinci Program C++ untuk mendapatkan bilangan item terakhir yang diberikan dalam tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan