Cette image contient un motif. Le '*' devient soustrait et '-' a été ajouté.

Où je suis confus que je ne suis pas autorisé à utiliser une boucle imbriquée. Je ne sais pas pourquoi ça m'a confondu.

#include <iostream>
using namespace std;
int main(){
    string a="*";
    for (int i=0; i<4; i++){
        cout<<a<<endl;
        a=a+"*";
    }
}

J'ai essayé ce code pour tester pour imprimer le modèle qui a fait avec succès. Voici le modèle fait par elle.

*
**
***
****

Cela semble bien car c ++ a permis a=a+"*" qui a été ajouté de la chaîne dans les données de chaîne. Mais le motif que j'ai besoin est

****
***-
**--
*---

En cela, le '-' peut être ajouté mais comment puis-je soustraire '*'. Je ne peux pas faire a=a-'*'. Dois-je utiliser des index de la chaîne? Mais une seule boucle est autorisée.

0
Syed Ali Zain Shah 4 mai 2021 à 16:58

3 réponses

Meilleure réponse

Vous pouvez changer (écraser) caractères dans les chaînes.

#include <iostream>
#include <string>
using namespace std;
int main(){
    const int n=4;
    string a(n,'*');
    for (int i=0; i<n; i++){
        cout<<a<<endl;
        a[n-i-1]='-';
    }
}
0
MikeCAT 4 mai 2021 à 14:02
  • Commencez par faire une chaîne de longueur 4, avec juste *. Cela utilise une boucle (ou non; cela dépend si 4 est toujours 4, ou est variable)
  • Faites une autre boucle, qui compte de 3 à 0 et remplace ce caractère compté avec un -. Ceci est une autre boucle, mais ce n'est pas une boucle imbriquée. Sortie la chaîne pour chaque itération de la boucle avant de faire le remplacement.

Pour un std::string s, vous pouvez utiliser s[i]='-'; pour remplacer un seul caractère dans la chaîne, si vous savez que i est dans la longueur de la chaîne.

(Essentiellement ce que @Mikecat a dit)

0
Adriaan de Groot 4 mai 2021 à 14:06
for (int i=0; i<4;  i++){
    cout << string((4-i), '*') << string(i, '-')<< endl;
}
2
Ishara Priyadarshana 4 mai 2021 à 14:09