Quelqu'un pourrais t'il m'aidé a trouver l'erreur dans mon programme.Mon programme fonctionne bien quand j'utilise Visual C++ mais dès que je veut l'utilisé dans Dev C++ il ne fonctionne plus.
Et serait il possible de simplifier le programme.
Voici le sujet de mon programme
Question 1. De temps en temps, on ne dispose pas de la résistance dont on a besoin. On pourra utiliser plusieurs autres résistances correctement disposées (en série Req=R1+R2 ou en parrallèles 1/Req=1/R1+1/R2). Nous supposons disposer d'un tableau contenant toutes les valeurs de résistances actuellement disponibles.Proposez un algo permettant de trouver une association de résistance disponibles, la plus proche possible d'une valeur désirée. On suppose que l'on fait une association de 2 resistances en parrallèle ou série.Ecrire le Programme.
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
typedef enum TYPE_MONTAGE {SERIE, PARALLELE} TypeMontage;
 
void triBulle(int* tableau, int nbElems)
{
	 int curseur = nbElems - 1;
	 int tmp;
 
	 while(curseur>0)
	 {
		 int index=0;
		 while(index<curseur)
		 {
			 if(tableau[index]>tableau[index+1])
			 {
				 tmp=tableau[index+1];
				 tableau[index+1]=tableau[index];
				 tableau[index]=tmp;
			 }
			 index++;
		 }
		 curseur--;
	 }
}
 
int* trouveMeilleureAssociation(int* resistances, int nbResistances, int valeurRecherchee, TypeMontage* typeMontage)
{
	int curseur1 = 0;
	int curseur2 = curseur1 + 1;
	int meilleureValeur = 0;
	int resultat[2];
	bool trouve = false;
	bool continuer = true;
 
	while (curseur1 < nbResistances - 1)
	{
		while (continuer && curseur2 < nbResistances)
		{
			int valeurSerie = resistances[curseur1] + resistances[curseur2];
			int valeurParallele = pow((double) 1/resistances[curseur1] + 1/resistances[curseur2], -1) ;
 
			if ((meilleureValeur == 0 || valeurSerie < meilleureValeur) && valeurSerie >= valeurRecherchee)
			{
				meilleureValeur = valeurSerie;
				*typeMontage = SERIE;
				resultat[0] = resistances[curseur1];
				resultat[1] = resistances[curseur2];
				trouve = true;
			}
 
			if ((meilleureValeur == 0 || valeurParallele < meilleureValeur) && valeurParallele >= valeurRecherchee)
			{
				meilleureValeur = valeurParallele;
				*typeMontage = PARALLELE;
				resultat[0] = resistances[curseur1];
				resultat[1] = resistances[curseur2];
				trouve = true;
			}
 
			/* Inutile de continuer à parcourir le tableau, on ne trouvera pas mieux */
			if (valeurSerie >= valeurRecherchee && valeurParallele >= valeurRecherchee)
			{
				continuer = false;
			}
			else
				curseur2++;
		}
 
		curseur1++;
		curseur2 = curseur1 + 1;
		continuer = true;
	}
 
	if (trouve)
		return resultat;	
	else
		return NULL;
}
 
int main(int argc, char* argv[])
{
	int nbResistances = 0;
	printf("Nombre de resistances en stock : ");
	scanf("%d", &nbResistances);
 
	int* resistances = (int*) malloc(nbResistances * sizeof(int));
 
	for (int i = 0; i < nbResistances; i++)
	{
		printf("\nSaisir valeur résistance %d : ", i);
		scanf("%d", &resistances[i]);
	}
 
	int valeurSouhaitee = 0;
	printf("\nValeur souhaitée : ");
	scanf("%d", &valeurSouhaitee);
 
	triBulle(resistances, nbResistances);
 
	TypeMontage typeMontage;
	int* resultat = trouveMeilleureAssociation(resistances, nbResistances, valeurSouhaitee, &typeMontage);	
 
	if (resultat != NULL)
	{
		char* montage = typeMontage == SERIE ? "série" : "paralèlle";
		printf("Les deux meilleurs résistances sont R1=%d et R2=%d lorsqu'elles sont montées en %s", resultat[0], resultat[1], montage);
	}
	else
		printf("Aucune association de résistances n'a pu être trouvée");
 
	getchar();
 
	return 0;
}