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.
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);
}
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
------------------------------6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
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.
------------------------------6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
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.
Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.