Programme en c aidez moi
Résolu/Fermé
DevGl
Messages postés
136
Date d'inscription
samedi 23 novembre 2013
Statut
Membre
Dernière intervention
16 mai 2015
-
Modifié par jipicy le 26/03/2014 à 23:26
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015 - 14 avril 2014 à 14:50
DevGl Messages postés 136 Date d'inscription samedi 23 novembre 2013 Statut Membre Dernière intervention 16 mai 2015 - 14 avril 2014 à 14:50
A voir également:
- Programme en c aidez moi
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Mettre en veille un programme - Guide
- Programme démarrage windows 10 - Guide
- Forcer la fermeture d'un programme - Guide
4 réponses
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 27/03/2014 à 18:28
Modifié par [Dal] le 27/03/2014 à 18:28
Salut DevGl,
Pourquoi 27 lettres alors que l'alphabet (français) en comporte 26 ?
Je crois que tu fais trop compliqué.
Si j'ai bien compris, ce que tu veux c'est :
- afficher les lettres de l'alphabet une fois
- en commençant par les lettres du mot "MARRAKECH" dans leur ordre d'apparition
- et en continuant dans l'ordre alphabétique des lettres restantes à partir de la lettre suivante en bouclant sur le début de l'alphabet si nécessaire
Le plus simple est de créer un tableau de char de la taille de l'alphabet, comportant les caractères dans l'ordre alphabétique, et d'utiliser les valeurs ASCII des caractères saisis du mot "MARRAKECH" ramenées à 0 pour A, 1 pour B, etc., comme index du tableau pour noter dans ce tableau que telle lettre est prise en compte (en "l'effaçant" par exemple) ou en la remplaçant par
En faisant cela, tu crées une sorte de table de hachage, qui t'évite toutes ces boucles.
Tu n'auras d'une boucle à faire : une fois les lettres du mot entrées dans la table de hachage, et affichées, afficher les lettres restantes à partir de l'index traité (en revenant au début du tableau comme tu le fais).
Sinon utiliser gets est très déconseillé pour une saisie, et il faudrait aussi que tu t'assures que ce sont bien des majuscules et des lettres que l'utilisateur saisit et qu'il se limite au maximum à 26 lettres, et ton main devrait être prototypé
Dal
Pourquoi 27 lettres alors que l'alphabet (français) en comporte 26 ?
Je crois que tu fais trop compliqué.
Si j'ai bien compris, ce que tu veux c'est :
- afficher les lettres de l'alphabet une fois
- en commençant par les lettres du mot "MARRAKECH" dans leur ordre d'apparition
- et en continuant dans l'ordre alphabétique des lettres restantes à partir de la lettre suivante en bouclant sur le début de l'alphabet si nécessaire
Le plus simple est de créer un tableau de char de la taille de l'alphabet, comportant les caractères dans l'ordre alphabétique, et d'utiliser les valeurs ASCII des caractères saisis du mot "MARRAKECH" ramenées à 0 pour A, 1 pour B, etc., comme index du tableau pour noter dans ce tableau que telle lettre est prise en compte (en "l'effaçant" par exemple) ou en la remplaçant par
'\0').
En faisant cela, tu crées une sorte de table de hachage, qui t'évite toutes ces boucles.
Tu n'auras d'une boucle à faire : une fois les lettres du mot entrées dans la table de hachage, et affichées, afficher les lettres restantes à partir de l'index traité (en revenant au début du tableau comme tu le fais).
Sinon utiliser gets est très déconseillé pour une saisie, et il faudrait aussi que tu t'assures que ce sont bien des majuscules et des lettres que l'utilisateur saisit et qu'il se limite au maximum à 26 lettres, et ton main devrait être prototypé
int main(void)et la dernière ligne du main se terminer par
return 0;.
Dal
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
28 mars 2014 à 17:01
28 mars 2014 à 17:01
alors on obtien la chaine suivant "MARKECHIJKLNOPQSTUVWXYZBDFG"
Il y a deux fois la lettre "K" ci-dessus, ce qui explique que tu aies 27 lettres. Je suppose que c'est une erreur, et que c'est bien 26 lettres que tu dois afficher.
Il y a deux fois la lettre "K" ci-dessus, ce qui explique que tu aies 27 lettres. Je suppose que c'est une erreur, et que c'est bien 26 lettres que tu dois afficher.
#include <stdio.h> #include <string.h> int main(void) { char alpha[27]; int n,i; char * mot = "MARRAKECH"; /* remplir la table de hachage */ for (n=0; n<26; n++) alpha[n] = 'A' + n; /* on commence par les lettres de mot */ for (n=0; n<strlen(mot); n++){ if (alpha[mot[n] - 'A']) { printf("%c", alpha[mot[n] - 'A']); alpha[mot[n] - 'A'] = '\0'; }} /* le resté de programme */ for(i=0;i<26;i++) if(alpha[i]!='\0'){ printf("%c",alpha[i]);} return 0; }
http://tutodev1.blogspot.com/
karara20
Messages postés
32
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
13 juillet 2014
9
Modifié par karara20 le 28/03/2014 à 22:51
Modifié par karara20 le 28/03/2014 à 22:51
#include <stdio.h> #include <string.h> int main(void) { char alpha[27]; int n,i; char * mot = "MARRAKECH"; /* remplir la table de hachage */ for (n=0; n<26; n++) alpha[n] = 'A' + n; /* on commence par les lettres de mot */ for (n=0; n<strlen(mot); n++){ if (alpha[mot[n] - 'A']) { printf("%c", alpha[mot[n] - 'A']); alpha[mot[n] - 'A'] = '\0'; }} /* le reste de programme*/ for(i=0;i<26;i++) if(alpha[i]!='\0'){ printf("%c",alpha[i]);} return 0; }
https://tutodev1.blogspot.com/
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
31 mars 2014 à 10:16
31 mars 2014 à 10:16
Cela ne produit pas l'affichage recherché.
Vois l'énoncé.
De plus, je crois que c'est à DevGl de poursuivre le code. C'est elle qui doit faire l'exercice, et ainsi, elle se l'appropriera et en comprendra le fonctionnement.
Dal
Vois l'énoncé.
De plus, je crois que c'est à DevGl de poursuivre le code. C'est elle qui doit faire l'exercice, et ainsi, elle se l'appropriera et en comprendra le fonctionnement.
Dal
DevGl
Messages postés
136
Date d'inscription
samedi 23 novembre 2013
Statut
Membre
Dernière intervention
16 mai 2015
14 avril 2014 à 14:50
14 avril 2014 à 14:50
J'apprecie vrement votre aide les amis : Dal , karara20 ,language c , merci encore une fois !!
27 mars 2014 à 18:44