Se connecter avec
S'enregistrer | Connectez-vous

Langage C programme traduction

Dernière réponse : dans Programmation

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

Lassé par la pub ? Créez un compte

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
Expert Programmation

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
Expert Programmation

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.

#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
Expert Programmation

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.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde