L'affectation du programme nécessite un utilisateur de saisir des mots, puis de produire le "premier" et "dernier" élément (ordre lexical). Cependant, une fois que l'utilisateur saisit un mot de quatre lettres, le programme doit s'arrêter.
Je ne peux toujours pas le comprendre. :( Toute aide peut fournir serait grandement appréciée! P>
Voici l'exemple de sortie:
p>
voici le code: p>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string arrayString[20];
int counter = 0, N = sizeof(arrayString) / sizeof(arrayString[0]);
cout << "String of words with lexical order and char limit" << endl;
cout << "\n";
for (int i = 0; i < 20; i++) {
cout << "Enter string: " << i + 1 << ": ";
cin >> arrayString[i];
if (arrayString[i].length() == 4) {
break;
counter++;
}
}
sort(arrayString, arrayString + N);
cout << "\nFirst: " << arrayString[0] << endl;
cout << "Last: " << arrayString[N - 1] << endl;
if (counter == 1) {
cout << "\nInvalid! You entered a four-letter word" << endl;
}
cout << "\n";
return 0;
}
4 Réponses :
Vous devez utiliser Vous devez donc corriger votre code afin que puis utilisez n code> a une valeur de 20, donc trier (arraystring, arraystring + n); code> Trie 20 chaînes. Mais vous avez seulement entré 4 chaînes. compteur code> non n code>. P> Compteur code> est calculé correctement, comme celui-ci p> compteur code> au lieu de n code> quand vous triez et imprimer les résultats. P> sort(arrayString, arrayString + counter);
cout << "\nFirst: " << arrayString[0] << endl;
cout << "Last: " << arrayString[counter - 1] << endl;
"Vous devez utiliser le comptoir non n." i> - c'est i code> qui compte (qui devra être déplacé vers la portée de la fonction), pas compteur code> code> (qui doit être incrémenté avant que le casse code> pour s'acquitter de son utilisation apparemment destinée à indiquer si un mot de quatre lettres a été rencontré).
@Tonydelroy Je n'ai pas initialement remarqué le problème avec compteur code>. C'est corrigé maintenant.
Je vous suggère de supprimer aussi, p> n = sizeof (arraystring) / sizeof (arraystring [0]); code>. #include <iostream>
#include <algorithm>
using namespace std;
int main() {
string arrayString[20];
int counter = 0;
cout << "String of words with lexical order and char limit" << endl;
cout << "\n";
for (int i = 0; i < 20; i++) {
cout << "Enter string: " << i + 1 << ": ";
cin >> arrayString[i];
if (arrayString[i].length() == 4) {
counter++;
cout<<"\nInvalid! You entered a four-letter word" << endl;
break;
}
counter++;
}
sort(arrayString, arrayString + counter);
cout << "\nFirst: " << arrayString[0] << endl;
cout << "Last: " << arrayString[counter - 1] << endl;
cout << "\n";
return 0;
}
Comme vous avez rempli moins que Le correctif est de mettre à jour note Ceci serait plus simple avec N code> Strings dans votre matrice lorsque vous les triez, la première chaîne est vide. n code> avec le numéro des chaînes entrées: p> compteur ++ code> est déplacé avant la pause code> sinon, sinon elle n'exécutera pas. P > std :: vecteur code>: p>
Vous avez surchargé le problème. Vous n'avez pas besoin de stocker toutes les cordes et de les trier. Vous pouvez comparer l'entrée avec la valeur MIN et MAX actuelle et le remplacer si nécessaire.
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string arrayString[2];
int counter = 0;
cout << "String of words with lexical order and char limit" << endl;
cout << "\n";
for (int i = 0; i < 20; ++i) {
cout << "Enter string: " << i + 1 << ": ";
std::string input;
cin >> input;
if (i == 0) {
arrayString[0] = input;
arrayString[1] = input;
} else {
arrayString[0] = std::min(input, arrayString[0]);
arrayString[1] = std::max(input, arrayString[0]);
}
if (input.length() == 4) {
counter = 1;
break;
}
}
cout << "\nFirst: " << arrayString[0] << endl;
cout << "Last: " << arrayString[1] << endl;
if (counter == 1) {
cout << "\nInvalid! You entered a four-letter word" << endl;
}
cout << "\n";
return 0;
}
Pourquoi lire les mots dans un tableau? Vous avez juste besoin de
std :: string code> s pour la première et dernière valeurs (lexographiquement) observées jusqu'à présent, que vous pouvez mettre à jour au fur et à mesure de votre nouvelle chaîne.n code> a une valeur de 20, donctrier (arraystring, arraystring + n); code> trie 20 chaîne. Mais vous avez seulement entré 4 cordes.C'est le même problème que la recherche des nombres minimum et maximum, mais avec des chaînes - vous n'avez pas besoin de stocker toutes les entrées et vous n'avez pas besoin de trier. (Le but de l'exercice est très probable que vous remariez cela.)