Problème avec la boucle for et les tableaux

Résolu
DoMiN1ToR Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -  
DoMiN1ToR Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -
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;
}
A voir également:

4 réponses

Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   11
 
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
DoMiN1ToR
 
ca ne marche toujours pas
mais merci quand même je
n'avais pas fait attention
0
Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   11
 
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
DoMiN1ToR
 
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
Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   11
 
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
DoMiN1ToR Messages postés 46 Date d'inscription   Statut Membre Dernière intervention  
 
OUI ! Merci mais je ne comprend pas le break: a quoi sert-il ?
0
Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention   11
 
Cela arrête l'itération de la boucle ;-)
0
DoMiN1ToR Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   > Felice_ Messages postés 265 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup de ton aide
bonne continuation !
0