erreur: le nom de la recherche de ‘je’ modifié pour ISO "pour" étendue [-fpermissive]
Q. Écrire un programme qui "bleeps' des mots que vous n'aimez pas, c'est, vous l'avez lu dans les mots à l'aide de cin et de les imprimer à nouveau sur le cout. Si un mot est parmi les quelques-uns que vous avez défini, vous écrivez BIP à la place de ce mot. (c++ de stroustrup livre)
Voici le code que j'ai écrit:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
inline void keep_window_open() { char ch; cin >> ch; }
int main()
{
vector<string> disliked;
disliked.push_back("Broccoli");
disliked.push_back("Carrots");
disliked.push_back("Tomatoes");
disliked.push_back("Asparagus");
vector<string> words;
string word;
while (cin >> word) {
words.push_back(word);
}
for (int i = 0; i < words.size(); ++i) {
cout << words[i] << "\t"; //i used it to see if the program was working
}
for (int j = 0; j < disliked.size(); ++j) {
cout << disliked[j] << "\t";
}
for (i = 0; i < j; ++i) {
if (words[i] == disliked[j]) {
cout << "BLEEP";
}
else {
}
}
}
Je pense que le problème se pose en raison de mes finale de la boucle, mais je ne comprends pas ce qui est à faire.
Voici l'erreur que j'ai:
bleep.cpp: In function ‘int main()’:
bleep.cpp:27:8: error: name lookup of ‘i’ changed for ISO ‘for’ scoping [-fpermissive]
bleep.cpp:27:8: note: (if you use ‘-fpermissive’ G++ will accept your code)
bleep.cpp:27:19: error: name lookup of ‘j’ changed for ISO ‘for’ scoping [-fpermissive]
- J non défini, car elle est définie à l'intérieur de la pour les.
- Veuillez mettre à jour votre question du titre, car il donne l'indication zéro de votre problème. Notez que Stackoverflow n'est pas un forum et des fonctions très différemment d'un. Lire Comment Demander et faq pour plus d'info.
Vous devez vous connecter pour publier un commentaire.
Le problème est:
Ici, vous êtes à l'aide de
i
etj
sans déclarer leur. Les déclarations précédentes ont seulement le bloc de portée dans lequel vous déclarez. Soit vous avez à redeclare ou si tu veux utiliser les valeurs précédentes, les déclarer au-dessus de la premièrefor
boucle.Vous avez déclaré que la variable je et j dans la boucle, donc à cause du problème de portée, vous ne pouvez pas accéder aux variables dans une autre boucle.
De ce que j'ai compris, lors de la finale pour la boucle, vous vérifiez si chaque mot dans le mots matrice est égal à l'un des mots dans n'aimait pas tableau. Pour ce faire, vous devez utiliser deux boucles for comme suit:
Remarque : Si vous déclarez
int i,j;
avant de les utiliser dans la boucle, alors vous ne devez pas déclarer de nouveau à l'intérieur des boucles for.