Besoin d'aide à toute la communauté
bienfaitmurhula
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir la communauté
je voulais savoir comment ecrire un programme en langage C qui permet à l'utilisateur de saisir une chaine de caractères après le programme affiche le temps(minutes) que vous avez saisie, le nombre des fautes et nombre des mots.
ex:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<time.h>
int main(){
char s[1000];
double minutes;
int mot;
printf("bonjour les informaticiens bientôt le delais de paiement est proche");
//l'utilisateur doit répeter la même phrase en bas
printf("repeter la même phrase");
scanf("%s",&s);
printf("vous avez saisis <mot> des mots dans <time> minutes", mot,minutes)
//alors s'il y a une erreur le programme affiche cette erreur, si non il affiche seulement le résultat
printf("vous avez saisis %d <mot> des mots dans %f <time> minutes et %d <faute>", mot,minutes;faute)
return 0;
}
votre suite me fera plaisir !!!
je voulais savoir comment ecrire un programme en langage C qui permet à l'utilisateur de saisir une chaine de caractères après le programme affiche le temps(minutes) que vous avez saisie, le nombre des fautes et nombre des mots.
ex:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<time.h>
int main(){
char s[1000];
double minutes;
int mot;
printf("bonjour les informaticiens bientôt le delais de paiement est proche");
//l'utilisateur doit répeter la même phrase en bas
printf("repeter la même phrase");
scanf("%s",&s);
printf("vous avez saisis <mot> des mots dans <time> minutes", mot,minutes)
//alors s'il y a une erreur le programme affiche cette erreur, si non il affiche seulement le résultat
printf("vous avez saisis %d <mot> des mots dans %f <time> minutes et %d <faute>", mot,minutes;faute)
return 0;
}
votre suite me fera plaisir !!!
A voir également:
- Besoin d'aide à toute la communauté
- Instagram votre compte ne respecte pas les règles de la communauté - Guide
- Compte facebook désactivé standards de la communauté - Guide
- Communauté whatsapp - Accueil - WhatsApp
- Ce message a été supprimé car il ne respecte pas nos standards de la communauté - Forum Facebook
- Nous restreignons certaines activités afin de protéger notre communauté - Forum Instagram
2 réponses
Bonjour bienfaitmurhula,
Tu insères l'entête
http://www.cplusplus.com/reference/ctime/
Le
Tu ne définis pas ce qu'est "une" faute. Cela se complique, si par exemple, en écrivant "infromaticien" tu dois compter deux fautes parce qu'il y a une permutation de lettres et qu'il manque le pluriel. Par contre, si tu dois juste comparer le mot tapé "infromaticien" et "informaticiens" et, s'ils sont différents, indiquer qu'il y a une faute, cela se fait très facilement avec
Si tu dois définir des fautes comme étant l'absence d'identité entre les mots les uns à la suite des autres, tu dois :
- définir comment délimiter les mots
- décider quoi faire si l'utilisateur oublie un mot (par exemple, s'il tape toute la phrase sauf le mot "les", est-ce que tu comptes 1 faute, ou 9 fautes ?)
Sinon, quelques détails non informatiques, mais puisque ton programme consiste à vérifier l'existence de fautes, c'est dommage que le programme en contienne lui-même :
- l'orthographe de "le delais" devrait être "le délai"
- l'orthographe de "repeter" devrait être "répéter" ou "répétez"
- l'orthographe "vous avez saisis" devrait être "vous avez saisi"
- je dirais "des mots en %f <time> minutes" plutôt que "des mots dans %f <time> minutes"
Dal
Tu insères l'entête
time.h... une étude des fonctions accessibles par cet entête devrait te permettre de décompter le temps assez facilement avec une précision à la seconde près. Par contre, je ne comprends pas pourquoi le temps devrait être représenté sous forme d'un
double.
http://www.cplusplus.com/reference/ctime/
Le
scanf("%s",&s);devrait être
scanf("%s",s);car
sétant un tableau de
char, en indiquant juste
stu passes déjà le pointeur vers le premier élément du tableau.
Tu ne définis pas ce qu'est "une" faute. Cela se complique, si par exemple, en écrivant "infromaticien" tu dois compter deux fautes parce qu'il y a une permutation de lettres et qu'il manque le pluriel. Par contre, si tu dois juste comparer le mot tapé "infromaticien" et "informaticiens" et, s'ils sont différents, indiquer qu'il y a une faute, cela se fait très facilement avec
strcmp()accessible par
string.hou simplement en comparant successivement les
chardes deux mots.
Si tu dois définir des fautes comme étant l'absence d'identité entre les mots les uns à la suite des autres, tu dois :
- définir comment délimiter les mots
- décider quoi faire si l'utilisateur oublie un mot (par exemple, s'il tape toute la phrase sauf le mot "les", est-ce que tu comptes 1 faute, ou 9 fautes ?)
Sinon, quelques détails non informatiques, mais puisque ton programme consiste à vérifier l'existence de fautes, c'est dommage que le programme en contienne lui-même :
- l'orthographe de "le delais" devrait être "le délai"
- l'orthographe de "repeter" devrait être "répéter" ou "répétez"
- l'orthographe "vous avez saisis" devrait être "vous avez saisi"
- je dirais "des mots en %f <time> minutes" plutôt que "des mots dans %f <time> minutes"
Dal
bienfaitmurhula
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
alors je voulais savoir comment imbriqué les boucles qui vont tournées pour comparer ces 2 phrases
[Dal]
Messages postés
6205
Date d'inscription
Statut
Contributeur
Dernière intervention
1 105
Cela se fait différemment selon ce que tu définis comme étant une "faute" et comment tu les comptes (cf. mon message précédent). Commence par cela, le choix de l'algorithme et des instructions particulières à mettre en oeuvre pour atteindre le but fixé doit se faire dans un second temps.
Un autre problème avec ton code est que
http://www.cplusplus.com/reference/cstdio/scanf/
En fait, tu peux te servir de cette propriété pour décider que les mots sont délimités par des espaces (ce qui est le cas dans ton exemple, qui ne comporte pas de ponctuation), et faire une boucle répétant l'instruction
Par exemple, comme cela :
cela donne ceci :
Dal
scanf("%s",s);va arrêter sa lecture au premier espace rencontré.
http://www.cplusplus.com/reference/cstdio/scanf/
| specifier | Description | Characters extracted | +-----------+-------------+----------------------------------------------------------------+ | s | String of | Any number of non-whitespace characters, stopping at the first | | | characters | whitespace character found. A terminating null character is | | | | automatically added at the end of the stored sequence. | +-----------+-------------+----------------------------------------------------------------+
En fait, tu peux te servir de cette propriété pour décider que les mots sont délimités par des espaces (ce qui est le cas dans ton exemple, qui ne comporte pas de ponctuation), et faire une boucle répétant l'instruction
scanf()ci-dessus tant qu'il y a des mots saisis disponibles dans le tampon de l'entrée standard
stdin.
Par exemple, comme cela :
#include <stdio.h> #define NB_MOTS_ATTENDUS 10 int main(void) { char s[1000]; int nb_mots = NB_MOTS_ATTENDUS; printf("tapez : \"bonjour les informaticiens bientôt le délai de paiement est proche\"\n"); while (1) { int recup = scanf("%s", s); nb_mots = nb_mots - recup; printf("J'ai récupéré : [%s] (il faut encore %d mots)\n", s, nb_mots); if (nb_mots == 0) break; } printf("J'ai récupéré %d mots\n", NB_MOTS_ATTENDUS); return 0; }
cela donne ceci :
$ gcc -Wall 35977319.c
$ ./a.out
tapez : "bonjour les informaticiens bientôt le délai de paiement est proche"
bonjour les informaticiens bientôt le délai de paiement est proche
J'ai récupéré : [bonjour] (il faut encore 9 mots)
J'ai récupéré : [les] (il faut encore 8 mots)
J'ai récupéré : [informaticiens] (il faut encore 7 mots)
J'ai récupéré : [bientôt] (il faut encore 6 mots)
J'ai récupéré : [le] (il faut encore 5 mots)
J'ai récupéré : [délai] (il faut encore 4 mots)
J'ai récupéré : [de] (il faut encore 3 mots)
J'ai récupéré : [paiement] (il faut encore 2 mots)
J'ai récupéré : [est] (il faut encore 1 mots)
J'ai récupéré : [proche] (il faut encore 0 mots)
J'ai récupéré 10 mots
$
Dal