Problème avec la boucle for et les tableaux

Résolu
Bonjour j'aimerai créer un programme qui enregistre comme valeur booléene dans un tableau combien le texte contient de lettre. Mon code si dessous est censé de mander du texte et mettre 1 dans un tableau si le caractère correspondant est une lettre ou 0 si c'est autre chose mais voilà : il ne marche pas et je ne sais pas pourquoi merci de votre aide !
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string texte(" ");
    cout << "Votre texte: ";
    cin >> texte;
    int longueurTexte(texte.size());
    string alphabet("abcdefghijklmnopqrstuvwxyz");
    int boolLettre[longueurTexte];
    for(int a(0); a < longueurTexte; a++)
    {
        for(int b(0); b < 25; b++)
        {
            if(texte[a] = alphabet[b])
            {
                boolLettre[a] = 1;
            }
            else
            {
                boolLettre[a] = 0;
            }
        }
    }
    cout << boolLettre << endl;
    return 0;
}

4 réponses

  1. Bonjour,

    Tu utilises un opérateur d'affectation au lieu d'un opérateur d'égalité :
    if(texte[a] == alphabet[b]) {
        boolLettre[a] = 1;
    }
    0
    1. ca ne marche toujours pas
      mais merci quand même je
      n'avais pas fait attention
      0
      1. Est-ce que c'est ceci que tu souhaites ? :
        #include <iostream>
        #include <string>
        
        using namespace std;
        
        int main() {
            string texte    = "",
                   alphabet = "abcdefghijklmnopqrstuvwxyz";
            
            cout << "Votre texte: ";
            cin  >> texte;
            
            int longueurTexte    = texte.size(),
                longueurAlphabet = alphabet.size(),
                i                = 0,
                j                = 0;
            
            int boolLettre[longueurAlphabet];
            
            for(int i = 0; i < longueurTexte; ++i) {
                for(int j = 0; j < longueurAlphabet; ++j) {
                    if(texte[i] == alphabet[j]) {
                        boolLettre[i] = 1;
                    } else {
                        boolLettre[i] = 0;
                    }
            
                    cout << boolLettre[i] << endl;
                }
            }
            
            return 0;
        }
        0
    2. Non mais merci de ton aide .
      En fait j'aimerai que mon programme mette soit 1 si c'est une lettre sinon 0 alors que ton code donne une suite illogique de 0 et de 1. A moins que ce soit moi qui est mal copié le programme ? Merci de ton aide .
      0
      1. D'accord, donc ? :
        #include <iostream>
        #include <string>
        
        using namespace std;
        
        int main() {
            string texte    = "",
                   alphabet = "abcdefghijklmnopqrstuvwxyz";
            
            cout << "Votre texte: ";
            cin  >> texte;
            
            int longueurTexte    = texte.size(),
                longueurAlphabet = alphabet.size(),
                i                = 0,
                j                = 0;
            
            int boolLettre[longueurTexte], etat;
            
            for(int i = 0; i < longueurTexte; ++i) {
                etat = 0;
                
                for(int j = 0; j < longueurAlphabet; ++j) {
                    if(texte[i] == alphabet[j]) {
                        etat = 1;
                        
                        break;
                    }
                }
                
                boolLettre[i] = etat;
                
                cout << boolLettre[i] << endl;
            }
            
            return 0;
        }
        0
    3. OUI ! Merci mais je ne comprend pas le break: a quoi sert-il ?
      0
      1. Cela arrête l'itération de la boucle ;-)
        0
      2. @Felice_Merci beaucoup de ton aide
        bonne continuation !
        0