Je ne sais pas pourquoi le programme n'a pas réussi à donner la sortie, c'est le code pour trouver le nombre de zéro dans un tableau donné
#include<iostream> using namespace std; int main() { int n; cin>>n; int arr[n]; for(int i=0; i<n; i++) { cin>>arr[i]; } int b=0 , a; for(int j=0; j<n; j++) { a=arr[j]; while(a==0) { b=b++; } } cout<<b; }
3 Réponses :
Essayez de le changer en
if (a==0) //you had a while here { b=b++; }
Puisque vous ne changez pas la valeur de 'a' à l'intérieur de la boucle, il reste coincé à l'intérieur du while et cela conduit à une boucle infinie!
Faire. Ou pas. Il n'y a pas d'essai.
Remarque à l'intention du demandeur: vous avez encore besoin d'un while
. Il a juste besoin d'une condition de sortie différente. La réponse ci-dessus doit aller dans le while
@ user4581301 Je ne vois aucun besoin d'une boucle while? Changer pour si semble donner le comportement souhaité?
On dirait que vous avez mélangé b++
et b = b + 1
@AlanBirtles en quelque sorte, j'ai complètement raté la boucle for
emballage for
.
mais dans les geeks pour les geeks, il montre une erreur de compilation {prog.cpp: 9: 1: erreur: un ID non qualifié attendu avant {jeton} le résultat est parfait sur mon pc
#include <iostream> using namespace std; int main() { int n; cin >> n; int arr[n]; for (int i = 0; i < n; i++) { cin >> arr[i]; } int b = 0, a = 0; for (int j = 0; j < n; j++) { a = arr[j]; if (a == 0) //here you used while use if as you are checking the condition every iteration of loop. { b++; //here instead of using b=b++ use this. } } cout << b; return 0; //return is optional. }
mais dans les geeks pour les geeks, il montre une erreur de compilation {prog.cpp: 9: 1: erreur: un ID non qualifié attendu avant {jeton} le résultat est parfait sur mon pc
faites-le simplement dans la boucle j for. vous n'avez pas besoin d' a
variable ou quoi que ce soit
et aussi les tableaux de variables d'exécution ne sont pas autorisés en C ++ utiliser des tableaux ou des vectors
dynamiques
for(int j=0; j<n; j++) { if(arr[j]==0){ b++; } }
Dès que
a == 0
vous commencez à incrémenterb
et vous ne finirez jamais cara
reste le même0
. Au fait, c'est une bonne occasion d'apprendre à travailler avec un débogueurAu-delà,
b=b++;
est un comportement indéfini. Si vous voulez simplement incrémenterb
, c'est simplementb++;
.Notez que C ++ n'a pas vraiment de tableaux de longueur variable . Utilisez plutôt
std::vector
.