Se connecter / S'enregistrer
Votre question

Langage C programme traduction

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
17 Novembre 2008 22:41:30

Bonjour, je n'arrive pas à creer un programme sur DOS qui va demander à l'utilisateur des traductions des mots de francais à angais :??: 

(je m'explique,en faite le mot en francais s'inscrit sur l'écran et l'utilistateur doit le traduire en anglais et lorsque la traduction est correcte l'ordinateur passe à un autre mot...)

Le but du programme est en faite d'apprendre du vocabulaire anglais...
En mettant des mots aléatoirement, j'apprendrais beaucoup plus simplement.


Merci beaucoup à tous ceux qui pourront m'aider :) 

Autres pages sur : langage programme traduction

18 Novembre 2008 07:40:23

ok. et qu'est-ce qui te bloque ?
18 Novembre 2008 17:43:01

Ba en faite , je ne sais pas comment le creer le plus simplement possible...

Merci de ta réponse
Contenus similaires
a b L Programmation
18 Novembre 2008 19:48:54

Et tu as appris un minimum en C ou tu ne connais pas du tout ?
18 Novembre 2008 20:06:23

Si, mais ce que j'ai fait en C, c'est plus des calculs,nombres parfaits,
mais je ne sais pas faire ce genre de programme...

Si vous avez une solution merci de m'aider
a b L Programmation
18 Novembre 2008 20:29:27

Déjà commence à faire ton programme, et quand tu bloques, tu le postes ici (en disant ce qui te fait bloquer).
18 Novembre 2008 21:01:12

J'ai commencé à faire ça mais je ne sais pas pour quelle raison ça ne marche pas... Je voudrais en faite faire ce genre de programme mais avec plusieurs mots demandé aléatoirement.

#include <stdio.h>
#include <conio.h>

int main()
{char tomber,fall;

do
{ printf("tomber: ");
scanf("%c",&fall);
if (tomber=fall)
{printf("\njuste\n");}
}
while (tomber=!fall);
}

Merci de ton aide
a b L Programmation
18 Novembre 2008 22:17:00

Ta variable tomber n'est jamais initialisée :) 
Pour initialiser le générateur aléatoire, le mieux est de l'initialiser avec le temps par srand(time(NULL));
Ensuite pour récupéréer une valeur aléatoire, il suffit de faire, par exemple pour prendre une valeur entre 0 et 9 compris: tomber=rand() % 10
18 Novembre 2008 22:45:27

Pourrez tu me montrer ce que ça ferait stp, parce que j'ai pas trop compris ou faudrait mettre tout ça....
19 Novembre 2008 09:28:58

je pense qu'il faudrait que tu approfondisses tes notions de C.

a b L Programmation
19 Novembre 2008 20:36:36

Oui, mais au moins, il n'attend pas la solution sans rien faire.

L'initialisation du générateur aléatoire avec srand, tu l'as met au moins avant ta boucle (après les déclarations de variables), et le rand tu le mets où tu veux selon ce que tu veux faire.
Fait des essais, et si tu n'y arrive pas, montre ton essai qui te parait le mieux.
25 Novembre 2008 21:42:23

#include <stdio.h>
#include <conio.h>

int main()
{char eng[5]="fall";
char eng2[10];

printf("tomber:" );
gets(eng2);
if (eng2==eng)
printf("\njuste\n");

else
printf("\nfaux\n");
}

Si quelqu'un verrait mon erreur, il devrait normalment afficher "juste"...

Merci
a b L Programmation
26 Novembre 2008 19:23:33

En C la particularité des chaines de caractères c'est que ce sont en fait des tableaux de "char".
Quand tu fais char eng[5]="fall"; , en fait eng est un tableau de 5 caractères, et la variable eng n'est en fait qu'une adresse mémoire. C'est-à-dire que c'est l'endroit dans la mémoire du PC où est stocké le tableau (et ça s'appelle un pointeur), et pour être plus précis eng est un pointeur qui pointe sur le premier élément du tableau (l'adresse mémoire du premier élément du tableau).
Quand tu déclares un autre tableau (eng2), le programme met ton tableau à un autre endroit en mémoire. Donc, tu as 2 tableau en mémoire de ton PC eng et eng2 qui sont donc en fait 2 pointeurs qui pointent à 2 endroits différents en mémoire (puisque que les 2 tableaux ne sont pas au même endroit pour le pas qu'ils écrasent leurs valeurs).
Quand tu fais le test "if (eng2==eng)", en fait tu ne compares pas le contenu des tableaux, mais la valeurs des adresses mémoires, et comme ils ne sont pas placés au même endroit, ce test sera toujours faux.
En fait pour comparer les 2 chaines de caractères, il faut comparer les caractères un à un. Mais pas de panique, il existe la fonction strcmp(eng, eng2) qui renvoit:
- un entier négatif si chaine eng < chaine eng2
- 0 si chaine eng = chaine eng2
- un entier positif si chaine eng > chaine eng2
Toi, tu veux tester si les chaines sont égales, il te faut donc tester si strcmp(eng, eng2) == 0.
26 Novembre 2008 19:47:35

Merci CRicky pour ta réponse, en faite,je ne connaissais pas cette fonction.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS