Bonjour,

Je viens vous faire part d'un problème pour le moins étonnant.
J'ai un programme qui permet de faire des calculs et de retrouver le signe astrologique chinois.
Sous les systèmes basé sur Linux (testé sous Ubuntu) et OSX (leopard et Snow Leopard) tout fonctionne comme prévu.

Mais sous windows ce n'est pas le cas. Le programme fonctionne dans un sens mais pas dans l'autre.

Si vous entrez :

Quel est le prenom de la personne :
Jack

Quel est son annee de naissance?
1900

Voulez vous rentrer une autre personne (o pour oui, n pour non)?
o

Quel est le prenom de la personne :
Bob

Quel est son annee de naissance?
1988

Vous Obtenez qu'ils sont compatibles. Que vous entriez dans un sens ou dans l'autre rien n'y change et c'est marche sous Linux et OSX.... Mais sous Windows ce n'est pas le cas. Par défaut, la première date entrée ne s'enregistre pas.

Ci dessous les screenshot :

ne fonctionne pas sous Windows dans un sens



OK dans l'autre sens


OK dans les deux sens sous OSX et Linux



Merci d'avance.... je ne comprends pas.
Je compile sous Windows sous Parallels avec DevC++ et MinGW32 3.4.2

Voici le code source :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <stdio.h>
 
#define TAB_LENGTH 100
#define NAME_LENGTH 30
 
int getSigne(int annee)
{
    return annee % 12;
}
 
char isCompatible(int annee1, int annee2)
{
    int compatibilites[] = {  4, //à la case 0, on met la valeur 4 pour associer singe(0) à rat(4)
                                -1, //à la case 1 pas de compatibilité pour coq(1)
                                -1,
                                -1,
                                8,
                                4,
                                2,
                                3,
                                -1,
                                1,
                                2,
                                3
                            }; 
    int signe1 = getSigne(annee1), signe2 = getSigne(annee2);
    printf("annee : %d = %d et annee : %d = %d\n",annee1,signe1,annee2,signe2);
    return ( compatibilites[signe1] == signe2 || compatibilites[signe2] == signe1);
}    
int main(void)
{
    char* signes[] = { "singe",     //0
                            "coq",       //1
                            "chien",     //2
                            "porc",      //3
                            "rat",       //4
                            "buffle",    //5
                            "tigre",     //6
                            "lièvre",    //7
                            "dragon",    //8
                            "serpent",   //9
                            "cheval",    //10
                            "chevre"     //11
    };
    char prenoms[TAB_LENGTH][NAME_LENGTH];
    int  annees[TAB_LENGTH];
    char next = 'o';
    int i = 0;
    while (next == 'o' && i < TAB_LENGTH)
    {
        int j=0;
        printf("Quel est le prenom de la personne? ");
        scanf("%s", &prenoms[i]);
        printf("\nQuel est son annee de naissance? ");
        scanf("%d", &annees[i]);
        printf("Merci. %s est de signe %s.\n", prenoms[i], signes[getSigne(annees[i])]);
 
        for (j = 0; j < i; j++)
        {
        printf("annee : %d et annee : %d\n",annees[i],annees[j]);
            if (isCompatible(annees[i], annees[j]))
            {
                printf("%s est compatible avec %s.\n", prenoms[i], prenoms[j]);
            }
        }        
 
        printf("\nVoulez vous rentrer une autre personne (o pour oui, n pour non)? ");
        scanf("%s", &next);
        i++;
    }
    return 1;
}
Si vous pouviez m'éclairer ? Merci d'avance à tous !