#include <iostream> using namespace std; int main(){ int n; int a[n]; cin>>n; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=n;i>=0;i--){ cout<<a[i]<<" "; } } Input:- 4 1 2 3 4 Output 4199008 4 3 2 1
4 Réponses :
a [n] code> retournera l'élément après le dernier. Lorsque vous itérez l'ordre inverse, commencez par
i = n-1 code>. P>
Il y a plus que doit être corrigé, par exemple Le int A [n] code> avant
n code> est initialisé. Même l'initialisation, cela ne fonctionnerait pas à moins que
n code> est
const code>.
Pour commencer, le programme a un comportement non défini car la variable donc cette déclaration p> n'est pas valide. De plus, des tableaux de longueur variable ne sont pas une fonctionnalité C ++ standard. Utilisez plutôt le modèle de classe standard aussi dans cette boucle p> Vous essayez d'accéder à élément inexistant avec l'index Vous n'allez pas inverser un tableau. Vous essayez de sortir un tableau dans l'ordre inverse. P> Faites attention à cela il existe des algorithmes standard Voici un exemple de la manière dont votre programme avec votre approche pourrait regarder P> n code> n'est pas initialisée
std :: vecteur code>. P>
n code>. p>
std :: inverse code> et
std :: reverse_copy code> Déclaré dans l'en-tête
Enter the size of an array 10
Enter 10 elements: 0 1 2 3 4 5 6 7 8 9
The array in the reverse order
9 8 7 6 5 4 3 2 1 0
Mention honorable: RBEGIN () CODE> et
Rend () CODE> QUI FAIRE
REVERS_COPY CODE> complètement inutile.
Au début de votre programme, il y a une erreur:
for(int i=n-1;i>=-1;i--){ cout<<a[i]<<" "; }
Lors de l'annulation de la matrice Démarrer la boucle de N-1 i = N-1 (n est le n ° d'éléments dans la matrice). Et courez la boucle jusqu'à ce que je> = 0. Si vous démarrerez une boucle de N, il lira un indice illégal qui est hors de portée et vous donnera une valeur ordures.
for(int i=n-1; i>=0; i++){ cout<<arr[i]<<" ";}
Activez des avertissements sur votre compilateur.
int A [n]; code> n'est pas pris en charge par chaque compilateur et devrait générer un avertissement, sinon une erreur. Vous n'initialisez pas
n code> en premier. Vous voulez réellement
std :: vecteur code>. En outre, N'utilisez pas
à l'aide de namepace std; code>
. Vous pouvez inverser tout conteneur qui prend en charge l'itération bidirectionnelle à l'aide destd :: inverse () < / code>
.En outre, votre deuxième boucle indexe
a [n] code>, qui est UB. Vous devez commencer par
n-1 code>.
Votre code n'essaie clairement pas de "inverser le tableau". Voir std :: inverse. Après l'application, coutez la matrice résultante, premier à durer. Cela simplifie et documente votre intention de codage et évite le comportement non défini non intentionnel.