J'écris un code A qui invite l'utilisateur à entrer une chaîne
& p>
Créer une fonction de type void qui imprime le caractère utilisé le plus p >
(comme dans l'endroit où il est apparu plus que tout autre) p>
& p>
montre également le nombre de fois qu'il était dans cette chaîne. P>
Voici ce que j'ai jusqu'à présent ... p> Je reçois aussi le mauvais résultat. p> sortie: p> entrez une chaîne Bonjour
Le caractère le plus fréquent était: 'h' avec 2 occurrences
5 caractères ont été utilisés p> doivent être p> Le caractère le plus fréquent était: "L 'avec 2 occurrences
5 caractères ont été utilisés p> p>
3 Réponses :
Faisons-le court (les autres me corrigeront si j'écris quelque chose de mal ^ _ ^)
Vous déclarez un Int comme ceci: l'utiliser comme ceci: p> Vous déclarez un pointeur comme celui-ci: p> < Pré> xxx pré> et utilisez la valeur pointue comme ceci: p> Si vous avez déclaré une variable et que vous devez transmettre un pointeur en tant que paramètres de fonction, Utilisez l'opérateur et l'opérateur comme ceci: p> ou simplement enregistrer son adresse dans un pointeur var: p> c'est les bases . J'espère que cela vous aidera ... P> p>
Merci! J'ai compris ma réponse à ma question. Je vais le poster bientôt. Cela a aidé!
J'ai posté la solution à ma question ci-dessus.
Le prototype de fonction que vous êtes censé utiliser semble inclure au moins un paramètre superflu. (Vous avez le nombre total de caractères disponible dans Dans votre fonction, votre objectif est de boucler sur chaque caractère de votre chaîne. Dans la matrice de fréquence (que vous avez initialisé tout zéro), vous ferez mapper chaque caractère sur un élément de la matrice de fréquence et incrémenterez la valeur à cet élément chaque fois que le caractère est rencontré. Par exemple, pour ci-dessus, vous pouvez voir lorsque vous avez terminé, l'élément (qui est également pourquoi vous obtiendrez le premier de tous les caractères qui apparaissent de ce nombre de fois. Si vous passez à Dans votre cas, mettez-le tout à fait, vous pouvez faire quelque chose de similaire à: p> ( ( Note: STRUT> Si vous Utilisez Il existe de nombreuses façons de gérer les problèmes de fréquence, mais ils travaillent tous de la même manière. Avec des caractères ASCII, vous pouvez capturer à la fois le caractère le plus fréquent et le nombre de fois où il se produit dans un seul tableau de Pour des types plus complexes, vous utiliserez généralement une structure simple pour contenir le compte et L'object. Par exemple, si vous recherchiez le mot fort> le plus fréquent fort>, vous utiliserez généralement une structure telle que: p> alors vous utilisez simplement un tableau de principal () code>). Afin de trouver le caractère le plus souvent apparaissant (au moins le 1er des caractères qui se produisent ce nombre de fois), tout ce dont vous avez besoin pour fournir votre fonction est:
non signé Char code>,
256 code> fera); et enfin li>
"bonjour" code>, vous incrempériez: p>
fréquence [' l ']; code> tiendra la valeur de
2 code>. Ainsi, lorsque vous avez terminé, vous venez de boucler sur tous les éléments en fréquence et de trouver l'index
> = code> vous allez Obtenez le dernier de cet ensemble de caractères. En outre, dans votre personnage Comptez, vous ignorez le 6ème caractère, le
'\ n' code>, qui convient parfaitement à une entrée à une seule ligne, mais pour une entrée multi-lignes que vous Besoin de considérer comment vous voulez gérer cela) p>
ISALPHA () CODE> Dans la comparaison, il gérera les deux caractères majuscules / minuscules, vous pouvez ajuster comme vous le souhaitez en vérifiant simplement les majuscules / minuscules ou simplement convertir tous les caractères à un cas ou un autre) p>
"heello" code>, vous recevrez toujours
"le plus fréquent Char: E (survient 2 fois, 6 caractères utilisés)" code> en raison de
'e' code > Être le premier des deux personnages qui sont observés le même nombre de fois) p>
int code> et un
int code> détenant l'index à l'endroit où le max se produit. . (Vous n'avez pas vraiment besoin de l'index non plus - il suffit d'économiser une boucle pour le trouver à chaque fois qu'il est nécessaire). P>
struct wfreq code> de la même manière que vous utilisez votre tableau de
int code> ici. Regardez les choses et laissez-moi savoir si vous avez d'autres questions. P> p>
Voici ce que je suis venu. J'ai foiré avec les pointeurs.
bon d'entendre. Juste un petit conseils pour raccourcir votre code: votre boîte peut zéro un tableau pendant la déclaration juste avec une ligne -> Char String [100] = {0};
Veuillez corriger l'indentation de votre code. Ce n'est pas lisible tel quel.
@Eugenesh. Je contrôlais K, je ne sais pas si c'est mieux.
Veuillez adresser toutes vos avertissements de votre compilateur. Cela va nettoyer la plupart de vos problèmes. Si vous utilisez GCC, l'option -wall sera utile.
@JMQ Je reçois les mauvais chiffres sur ma sortie. Je vais les énumérer.
Le troisième paramètre de votre fonction la plus fraîche est déclaré comme un pointeur à un INT, mais vous ne le faites que comme une variable normale ....
Comment pourrais-je le réparer? Je lutte avec des pointeurs ..
Lire Ce .
Tout d'abord dans votre fonction lafrequent, vous devez vous reporter à la valeur pointue et non au pointeur lui-même en précédant le nom de la variable avec une étoile (*) comme * qty_pros_freq = tableau [0]; puis transmettez un pointeur sur un VaR sur votre fonction Call InT Ruls = 0; MOSTFREQUENT (compte, tableau et int, 0);
Résolvez un problème plus simple: donné une chaîne, créez un histogramme du nombre de caractères dans cette chaîne et imprimez-les.
"Créer une fonction qui est un type
void code> que retourne i> b> le personnage utilisé le plus" oxymoron.
Je n'ai pas remarqué auparavant que vous avez également abusé de Pointet sur le premier et le dernier paramètre. Les premiers paramètres sont supposés être un pointeur à un int, mais vous passez l'int-lui-même sur l'appel. Si vous n'avez pas besoin de vos variables INT pour être mises à jour dans votre fonction principal, n'utilisez pas de pointeurs, il est inutile. De plus, pour les 3e et 4e paramètres, si vous n'avez pas besoin de passer une valeur spécifique, déclarez-les localement dans votre fonction.
@nobur les déclarer localement sous forme d'INTS?
Oui! Pour INT * QTy_PLOST_FREQ SONT INT NUM_COUNTS_ Vous passez une valeur statique 0 de Main. C'est un peu inutile. Pourquoi ne créez-vous pas seulement 2 INTS dans votre fonction initialisée avec 0.
d'accord ! Je n'ai pas remarqué les commentaires ... Est-ce que les devoirs de l'école? si oui! Essayez de modifier votre code par vous-même en utilisant ma réponse. N'oubliez pas que si votre fonction attend un pointeur (int * qty_prost_freq), vous ne pouvez pas l'aligner avec une valeur (0). Vous devez créer une variable et transmettre un pointeur à celui-ci (avec &). Dans la fonction, vous pouvez lire la valeur pointue à l'aide d'un préfixe étoile (* var)
@nobur que je l'ai compris. Merci de votre aide.