Maison  >  Article  >  développement back-end  >  Programme C++ pour obtenir le dernier nombre d'éléments donné dans un tableau

Programme C++ pour obtenir le dernier nombre d'éléments donné dans un tableau

WBOY
WBOYavant
2023-08-26 22:05:101015parcourir

Programme C++ pour obtenir le dernier nombre déléments donné dans un tableau

Array est une structure de données spécialement conçue pour conserver le même type de données dans une série de zones mémoire. Le principal avantage de l’utilisation des tableaux est que nous pouvons y accéder depuis n’importe quelle position en utilisant les paramètres d’index. Cependant, l'insertion et la suppression de données nécessitent des opérations séquentielles, ce qui fera de cette structure de données une structure de données linéaire. Nous pouvons simplement utiliser l'index ou le numéro de position entre crochets pour extraire des éléments du tableau. Cet article montrera comment lire les k nombres les plus proches d'un tableau en C++.

Comprendre les concepts et les illustrer par des exemples

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

Nous avons les éléments à l'intérieur du tableau pour chaque tableau, et la quantité n est également cruciale. Le nombre n indique le nombre d'éléments valides dans un tableau. La taille du tableau peut ne pas correspondre au n. un maximum de Z éléments, seuls n d'entre eux doivent être valides ; les emplacements restants sont vides. Dans ce cas, k doit être inférieur ou égal à n pour récupérer le kième élément du tableau. nous devons l'inspecter. Pour une meilleure compréhension, jetons un œil à l'algorithme.

Algorithme

  • Lisez un tableau A en entrée. Accepte le nombre d'éléments simultanément : n et k pour lire les k premiers éléments de A

  • Créez un tableau vide B

  • Si k

    • pour moi dans la plage 0 à k - 1, fais

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

    • fin pour

  • fin si

  • Retour à B

Exemple

#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 );
}

Sortie

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,

Utilisez des vecteurs

Dans la méthode ci-dessus, un tableau statique est utilisé pour stocker et récupérer des éléments du tableau. La même fonctionnalité peut également être obtenue en utilisant des vecteurs. Les vecteurs font partie du STL C++ et sont des tableaux dynamiques. Jetons un coup d'oeil au code. L'algorithme reste inchangé.

Exemple

#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 ); 
}

Sortie

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,

Utiliser le constructeur vectoriel

La dernière façon consiste à créer manuellement un vecteur vide et à copier les éléments un par un. Cependant, nous pouvons directement utiliser un itérateur vectoriel pour copier les k derniers éléments du constructeur vectoriel. Jetons un coup d'œil au code pour comprendre ce concept.

Exemple

#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 ); 
}

Sortie

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,

Ici, le vecteur B est créé en utilisant les k derniers éléments du vecteur A. Utilisez la méthode begin() pour obtenir l'adresse du premier élément et utilisez le décalage begin() (A.size() − k) comme point final, afin qu'il pointe vers les k derniers éléments.

Conclusion

Cet article explique trois façons différentes de lire ou de sélectionner les n derniers nombres d'un tableau donné. Les deuxième et troisième solutions sont basées sur des vecteurs au lieu du tableau statique par défaut utilisé par la première approche. Les réponses aux deux premières questions sont simples. Nous utilisons une boucle for pour copier les k derniers éléments un par un. La dernière technique est la plus simple et utilise un constructeur de vecteur pour générer un vecteur en copiant les composants à l'aide d'un itérateur d'un autre vecteur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer