-5
votes

Comment répéter la chaîne en C ++?

Je dois écrire un programme dans lequel la valeur entière est entrée à partir de l'utilisateur et la chaîne doit être affichée à plusieurs reprises. Mais je reçois des erreurs. xxx

 Entrez la description de l'image ici

Note: Je ne suis pas autorisé à utiliser une boucle dans cette affectation .

c++

23 commentaires

Que croyez-vous string (n, "bien fait"); devrait réellement faire? Il n'y a pas de telles constructoe pour std :: string . Utilisez simplement une boucle.


Imprimer bien fait n fois


Où avez-vous défini string pour faire cela?


Le constructeur que vous envisagez de construire une chaîne avec N fois un seul caractère . Par exemple, std :: string (3, 'a') est une chaîne équivalente à "AAA" . Cela ne fonctionne que avec des caractères, pas des littéraux à chaîne.


Alors, comment puis-je réparer le code en utilisant n fois?


"Comment répéter la chaîne." - Utilisez une boucle. Imprimez la chaîne n'importe quel nombre de fois que vous voulez - N semble être ce que vous voulez, alors allez-y avec ça. Un simple pour boucle devrait faire.


Il doit être sans utiliser aucune sorte de boucle..et je ne sais pas autre que la boucle


"Il doit être sans utiliser de boucle" - maintenant c'est juste idiot / stupide. Vous voulez faire foo n fois, la chose naturelle est d'écrire une boucle. Exiger quoi que ce soit d'autre, il suffit de mettre des restrictions arbitraires et stupides sur la solution.


La récursion est-elle autorisée?


@Jesperjuhl: Je sais que c'est le défi de la mission.


@Mpops: désolé, je ne sais pas quelle récursion est


@ user7377353 De plus, vous devez définitivement mettre cette restriction dans la question elle-même. C'est la chose la plus triviale à faire dans n'importe quel langage de programmation et si une caractéristique fondamentale de cette langue est interdite dans votre mission, nous devrions savoir. Toute autre restriction?


@ user7377353 OK. Si nous sortons du royaume de la santé mentale, une solution impliquant des étiquettes et goto être ok? Qu'en est-il de setJMP / longjmp ? Est-ce que la récursive est ok? Qu'en est-il de simplement dérouler la boucle et de faire foo n fois en série?


@Cops: pas d'autres restrictions.


@ user7377353 "Il doit être sans aucune sorte de boucle..et je ne sais pas autre que la boucle" c'est une exigence extrêmement idiote et irréaliste. Jouez-vous code golf ?


@ πννταῥεῖ: Désolé, mais c'est l'exigence ... c'est le défi qui nous est donné.


@ user7377353 "Je ne sais pas quelle récursion est" Je pense que cette mission / tâche vous a été donnée dans le cadre de la récursivité d'apprentissage .. Votre instructeur n'a-t-il sérieusement pas donné de notes ou de rien? Ou avez-vous manqué une classe? De toute façon, cette question est difficile à répondre sans le contexte de votre cours.


Y a-t-il une liaison sur la taille n peut obtenir? Je veux dire une réponse folle est si (n <2) COUT "Bien fait"; Si (N <3) COUT "Bien fait"; Si (N <4) "Bien fait"; ...


@ user7377353 Si vous ne pouvez pas utiliser de boucle et que vous ne savez pas quelle récursion est, alors que pouvez-vous utiliser? Quelle est l'affectation réelle? Pouvez-vous Modifier Votre question à fournir cela? Je vote pour fermer cette question comme "trop ​​large" sans cette clarté.


std :: vecteur s (n); STD :: Fill_N (S.Begin (), N, "Bien fait"); Pas de boucles.


@RemyleBeau: - L'affectation consiste à imprimer bien fait autant de fois l'entrée de l'utilisateur sans utiliser de boucle


@Paulmckenzie ou vous pouvez utiliser un std :: ostream_itéator au lieu de perdre la mémoire remplissant un std :: vecteur , par exemple: std :: Fill_N (STD :: Ostream_iterator (std :: cout, ""), n, "bien fait");


De la réponse acceptée, il semble que la question doit être reproductible à utiliser goto . Si c'est ce que cette question se résume, alors je pitié quiconque est dans cette classe donnant une mission comme celle-ci.


3 Réponses :


2
votes

Edit2: Dans les commentaires d'origine d'origine, des boucles de tout type sont interdites dans cette affectation.

Utiliser la récursion. p> xxx pré>

alors vous pouvez appeler cela de votre principal Programme comme suit: P>

printN(userInput, "Hi my name is ricky bobby");


3 commentaires

La récursivité est surchargée pour cette tâche, lorsqu'une boucle simple suffira.


@RemyleBeau Veuillez lire le commentaire d'Original Askers, car ils indiquent très clairement que les boucles sont interdites dans son projet d'école.


@RemyleBeau sauf que l'OP a dit dans les commentaires que les boucles ne sont pas autorisées. Ouais, allez à la silhouette ...



-1
votes

std :: string n'a pas de constructeur qui répète une chaîne n fois (elle en a une pour répéter un seul caractère N fois). Ce dont vous avez besoin est une boucle à la place, par exemple: xxx


3 commentaires

L'adresseur original a déclaré que les boucles ne sont pas autorisées. Cela ne résout pas leur problème.


J'ai posté cette réponse avant de voir le commentaire sur cette restriction. J'ai répondu à la question actuelle qui a été posée, selon les directives de Stackoverflow. Ces restrictions n'étaient pas incluses dans la question.


Yup, c'est la façon la plus correcte de le faire sans restrictions.



2
votes

Si vous ne pouvez pas utiliser de boucle, vous pouvez utiliser goto pour contourner la restriction: xxx

Notez que goto est largement considérée comme mauvaise pratique.


9 commentaires

AYXAN: Votre solution est acceptée en mission. Merci!


Goto est une façon assez non recommandée de faire ça


@Borissokolov La restriction est tout à fait irréaliste de toute façon. Dans le code réel, vous utiliseriez une boucle et avec la restriction donnée, goto est honnêtement le moyen le plus propre d'atteindre l'objectif (compte tenu de la taille du code)


@AYXAN, oui. Nous ne connaissons pas le but du laboratoire :)


@ user7377353 La chose est que ce type de réponse pourrait être utilisé pour toute question indiquant "Je ne peux pas utiliser de boucle". Cela prendrait une patience et beaucoup de temps libre à gaspiller de manière à proposer des solutions utilisant goto . Alors, qu'est-ce que vous apprenez vraiment de cela, sauf pour venir avec du code spaghetti pour résoudre des problèmes résolvables à l'aide des idiomes en boucle appropriées?


@Paulmckenzie: Je vais garder cela à l'esprit.


Ne regardez pas maintenant, mais cela littéralement est une boucle.


@CodyGray Apparemment, cela suffit à tromper tout le système de vérification automatique de l'instructeur d'OP utilise :-)


Je considérerais cela une boucle ..