68Yam
Messages postés2Date d'inscriptionmardi 15 avril 2008StatutMembreDernière intervention15 avril 2008
-
15 avril 2008 à 09:18
68Yam
Messages postés2Date d'inscriptionmardi 15 avril 2008StatutMembreDernière intervention15 avril 2008
-
15 avril 2008 à 10:16
Bonjour
Voila un exercice que j'ai réalisé mais que je n'arrive pas à finir. Quelqu'un pourrait-il m'aider.
Donc c'est un programme qui permet à un utilisateur de rentré une valeur d'une résistance et ce programme va l'informé comment il doit monter ces résistances (parallèle ou série) en fonction de ce qu'il dispose en stock.
Mon problème est donc que je n'arrive pas à insérer cette fonction dans mon programme :
"Pour les résistances disponibles on peut considérer avoir à disposition un assortiment de résistance de la série E12. En effet, il existe plusieurs série de résistances, en fonction de leur précision. Les plus répandues sont la E12 et la E24. Les tolérances sont de 10% pour la série E12 et 5% pour la série E24, E12 signifie que sur une décades (par ex : 10 à 100 ohms), on trouve 12 valeurs possibles. Ces valeurs sont : 10 - 12 - 15 - 18 - 22 - 27- 33 - 39 - 47 - 56 - 68- 82 ohms.
Pour les résistances dons la valeur est comprise entre 100k et 1000k nous aurons : 100 - 120 - 150 - 180 - 220 - 270 - 330 -390 - 470 - 560 - 680 - 820 ohms. "
Voici le programme :
#include <stdio.h>
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
#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
resultat[])
{
int
curseur1 =
0
;
int
curseur2 = curseur1 +
1
;
int
meilleureValeur =
0
;
int
trouve =
0
;
int
continuer =
1
;
while
(curseur1 < nbResistances -
1
)
{
while
(continuer && curseur2 < nbResistances)
{
int
valeurSerie = resistances[curseur1] + resistances[curseur2];
int
valeurParallele = (resistances[curseur1] * resistances[curseur2]) / (resistances[curseur1] + resistances[curseur2])
if
((meilleureValeur ==
0
|| valeurSerie < meilleureValeur)
&& valeurSerie >= valeurRecherchee)
{
meilleureValeur = valeurSerie;
*typeMontage = SERIE;
resultat[
0
] = resistances[curseur1];
resultat[
1
] = resistances[curseur2];
trouve =
1
;
}
if
((meilleureValeur ==
0
|| valeurParallele < meilleureValeur)
&& valeurParallele >= valeurRecherchee)
{
meilleureValeur = valeurParallele;
*typeMontage = PARALLELE;
resultat[
0
] = resistances[curseur1];
resultat[
1
] = resistances[curseur2];
trouve =
1
;
}
/* Inutile de continuer à parcourir le tableau, on ne trouvera pas mieux */
if
(valeurSerie >= valeurRecherchee
&& valeurParallele >= valeurRecherchee)
{
continuer =
0
;
}
else
curseur2++;
}
curseur1++;
curseur2 = curseur1 +
1
;
continuer =
1
;
}
return
trouve;
}
int
main (
void
)
{
int
nbResistances =
0
;
printf (
"Nombre de resistances en stock : "
);
scanf (
"%d"
, &nbResistances);
int
*resistances = (
int
*) malloc (nbResistances *
sizeof
(
int
));
faiblard
Messages postés337Date d'inscriptionsamedi 3 février 2007StatutMembreDernière intervention 4 janvier 2011 15 avril 2008 à 09:41
Bonjour,
Ton code ne contient que des ligne vide? Oo
SI c'est le cas c'est normal que cela ne fonctionne pas... :)
-------------------------------------------------------------------
La recherche est ton amie ! Promis elle ne te mordra pas...
Enjoy
Don't forget accept
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 resultat[])
{
int curseur1 = 0;
int curseur2 = curseur1 + 1;
int meilleureValeur = 0;
int trouve = 0;
int continuer = 1;
while (curseur1 < nbResistances - 1)
{
while (continuer && curseur2 < nbResistances)
{
int valeurSerie = resistances[curseur1] + resistances[curseur2];
int valeurParallele = (resistances[curseur1]*resistances[curseur2])/(resistances[curseur1] + resistances[curseur2]);
/* Inutile de continuer à parcourir le tableau, on ne trouvera pas mieux */
if (valeurSerie >= valeurRecherchee
&& valeurParallele >= valeurRecherchee)
{
continuer = 0;
}
else
curseur2++;
}
TypeMontage typeMontage;
int resultat[2];
int ok=trouveMeilleureAssociation (resistances, nbResistances, valeurSouhaitee,
&typeMontage, resultat);
if (ok)
{ char const *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);
system("pause");
}
else
printf ("Aucune association de résistances n'a pu être trouvée");
system("pause");
getchar ();