Accueil > > > CALCUL DE RESISTANCE EQUIVALANTE DE PLUSIEURS RESISTANCES EN SERIE OU PARALLELE
CALCUL DE RESISTANCE EQUIVALANTE DE PLUSIEURS RESISTANCES EN SERIE OU PARALLELE
Information sur la source
Description
Alors voila c'est mon premier code, un exercice pour voir comment faire des allocations dynamiques surtout. merci de me dire ce que vous en pensez
Source
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h> // pour recuperer la partie decimale
- #include <string.h> // pour convertir un double en char
-
-
-
-
- void main ()
- {
-
- while (1) // boucle infinie pour que le programme ne se quitte pas tout seul
- {
-
- // on declare les varriables
-
- char ctype = 0 ; // Caractere taper par l'utilisateur pour l'appel des fonctions
- char caff_resultat [20] ; // Chaine contenant le resultat dont les zeros inutiles de la partie decimale ont été tronqués
-
- int inbresistor = 0 ; // Nombre de resistances
- int ilong ; // longueur de la chaine "caff_resultat" pour pouvoir tronquer les zeros superflux
-
- double Req = 0 ; // Resistance equivalante
- double dAd = 0 ; // inverse de la resistance euivalante
- double dec = 0 ; // parite decimale de la resistance equivalante
- double ent = 0 ; // partie entiere de la resistance equivalante
-
- // on declare les tableau pour allocation dynamique
-
- double *resistor ; // tableau contenant les valeur des resistances
- double *G ; // tableau contenant les inverses des resistances
-
-
- // On boucle pour que l'utilisateur ne puisse appuyer que sur les touches predifinies
-
- while ( ctype != '1' ) // on sort de la boucle si l'utilisateur appui sur "1"
- {
- if ( ctype == '2' )
- { break ; } // on sort de la boucle si l'utilisateur appui sur "2"
- if ( ctype == 'Q' )
- { exit (-1) ; } // on quitte le programme si l'utilisateur appui sur "Q"
-
- system ("cls") ;
-
- printf ( "1 : Resistances en serie.\n\n2 : resistances en parallele. \n\nQ : quiter le programme. " );
-
- scanf( "%s", &ctype ) ;
- }
-
- if ( ctype == '1' )
-
- {
- system ("cls") ;
- printf ( "vous avez selectionner des resistances en serie.\n\n" ) ;
- printf ( "combien de resistances avez vous?\n\n " ) ;
-
- scanf ( "%d", &inbresistor ) ;
- }
-
- else if ( ctype == '2' )
-
- {
- system ("cls") ;
- printf ( "vous avez selectionner des resistances en parallele.\n\n" ) ;
- printf ( "combien de resistances avez vous?\n\n " ) ;
-
- scanf ( "%d", &inbresistor ) ;
- }
-
- if ( inbresistor == 1 ) // avec cette condition on evite les aberances comme demander la resistance equivalante a une seul resistance ;)
- {
- system ("cls") ;
-
- printf ( "vous avez demander un calcul pour une seule resistance\n\n.....vous etes un idiot...\n\n" ) ;
-
- system ("pause") ;
-
- exit (-1) ;
- }
-
- //////////////////////////////////////////////////////////////////////
- // On initialise les tableau en leur alouant de la memoire //
- // la memoire allouer depend directement de la taille du tableau //
- // par exemple la valeur d'une resistance est sur un type double //
- // donc on allou comme memoire la taille d'un double multiplié //
- // par le nombre de valeur a entrer dans le tableau //
- //////////////////////////////////////////////////////////////////////
-
- resistor = ( double*) malloc (sizeof (double) * inbresistor ) ;
- G = (double*) malloc (sizeof (double) * inbresistor ) ;
-
-
- // on recupere dans cette boucle la valeur de chaque resistance
-
- for ( int i = 1; i <= inbresistor; i++ )
-
- {
- printf ( "veuillez entrer la valeur de la resistance R%d. \n\n", i ) ;
-
- scanf ( "%lf", &resistor [i - 1] ) ;
-
- if ( resistor [i - 1] <= 0 ) // cette condition permet de se proteger d'une division par zero au moment du calcule la la resistance equivalante
- {
- system ("cls") ;
-
- printf ( "vous avez choisi une resistance de nulle ou negative\n\n...vous etes un idiot...\n\n" ) ;
-
- system ("pause") ;
-
- exit (-1) ;
- }
- }
-
- // On calcule la resistante equivalante pour des resistances en serie
-
- if ( ctype == '1' )
- {
- for ( int i = 1; i <= inbresistor; i++ )
- {
- Req = Req + resistor [i - 1] ; // n'oublier pas le -1 car le tableau à un index 0,
- // le numero de resistance 1 corespond a l'index 0 du tableau
- // donc le numero n corespond a l'index "n-1" ;)
-
- }
-
- }
-
- // On calcule la resistante equivalante pour des resistances en parallele
-
- else if ( ctype == '2' )
- {
- for ( int i = 1; i <= inbresistor; i++ )
- {
- G [i - 1] = 1/resistor [i - 1] ;
-
- dAd = dAd + G [i - 1] ;
-
- }
-
- Req = 1/dAd ;
- }
-
- dec = modf ( Req, &ent ) ; // on recupere la partie decimale de la resistance equivalante
-
- if ( dec == 0 ) // si elle est nulle alors on affiche que la partie entiere
- {
- system ("cls") ;
-
- printf ("\n\nLa resistance equivalante est Req = %.0lf .\n\n", Req ); // ex : si Req = 22 on lira 22 et non pas 22.000000 ;)
- }
- else
- {
-
- sprintf (caff_resultat, "%lf", Req ) ; // ici on converti la valeur Req en chaine de caractere caff_resultat
-
- ilong = strlen (caff_resultat) ; //ilong recupere le nombre de caractere present dans la chaine
-
- for (int j = ilong - 1; j > 0; j--) // on tronque les zero inutile de la partie decimale
- {
- if ( caff_resultat [j] == '0' )
- {
- caff_resultat [j] = '\0';
- }
-
- else
- {
- break ;
- }
- }
- system ("cls") ;
-
- printf ("\n\nLa resistance equivalante est Req = %s .\n\n", caff_resultat ) ; // donc si la Req = 22.15 en affichan la chaine tronquée on lira 22.15 et non pas 22.150000
-
- }
-
- // ne pas oublier de liberer la memoire allouée
-
- free (resistor) ;
- free (G) ;
-
- system ("pause") ; // petite pause avant le rebouclage au debut du code
-
- }
-
-
- }
#include <stdio.h>
#include <stdlib.h>
#include <math.h> // pour recuperer la partie decimale
#include <string.h> // pour convertir un double en char
void main ()
{
while (1) // boucle infinie pour que le programme ne se quitte pas tout seul
{
// on declare les varriables
char ctype = 0 ; // Caractere taper par l'utilisateur pour l'appel des fonctions
char caff_resultat [20] ; // Chaine contenant le resultat dont les zeros inutiles de la partie decimale ont été tronqués
int inbresistor = 0 ; // Nombre de resistances
int ilong ; // longueur de la chaine "caff_resultat" pour pouvoir tronquer les zeros superflux
double Req = 0 ; // Resistance equivalante
double dAd = 0 ; // inverse de la resistance euivalante
double dec = 0 ; // parite decimale de la resistance equivalante
double ent = 0 ; // partie entiere de la resistance equivalante
// on declare les tableau pour allocation dynamique
double *resistor ; // tableau contenant les valeur des resistances
double *G ; // tableau contenant les inverses des resistances
// On boucle pour que l'utilisateur ne puisse appuyer que sur les touches predifinies
while ( ctype != '1' ) // on sort de la boucle si l'utilisateur appui sur "1"
{
if ( ctype == '2' )
{ break ; } // on sort de la boucle si l'utilisateur appui sur "2"
if ( ctype == 'Q' )
{ exit (-1) ; } // on quitte le programme si l'utilisateur appui sur "Q"
system ("cls") ;
printf ( "1 : Resistances en serie.\n\n2 : resistances en parallele. \n\nQ : quiter le programme. " );
scanf( "%s", &ctype ) ;
}
if ( ctype == '1' )
{
system ("cls") ;
printf ( "vous avez selectionner des resistances en serie.\n\n" ) ;
printf ( "combien de resistances avez vous?\n\n " ) ;
scanf ( "%d", &inbresistor ) ;
}
else if ( ctype == '2' )
{
system ("cls") ;
printf ( "vous avez selectionner des resistances en parallele.\n\n" ) ;
printf ( "combien de resistances avez vous?\n\n " ) ;
scanf ( "%d", &inbresistor ) ;
}
if ( inbresistor == 1 ) // avec cette condition on evite les aberances comme demander la resistance equivalante a une seul resistance ;)
{
system ("cls") ;
printf ( "vous avez demander un calcul pour une seule resistance\n\n.....vous etes un idiot...\n\n" ) ;
system ("pause") ;
exit (-1) ;
}
//////////////////////////////////////////////////////////////////////
// On initialise les tableau en leur alouant de la memoire //
// la memoire allouer depend directement de la taille du tableau //
// par exemple la valeur d'une resistance est sur un type double //
// donc on allou comme memoire la taille d'un double multiplié //
// par le nombre de valeur a entrer dans le tableau //
//////////////////////////////////////////////////////////////////////
resistor = ( double*) malloc (sizeof (double) * inbresistor ) ;
G = (double*) malloc (sizeof (double) * inbresistor ) ;
// on recupere dans cette boucle la valeur de chaque resistance
for ( int i = 1; i <= inbresistor; i++ )
{
printf ( "veuillez entrer la valeur de la resistance R%d. \n\n", i ) ;
scanf ( "%lf", &resistor [i - 1] ) ;
if ( resistor [i - 1] <= 0 ) // cette condition permet de se proteger d'une division par zero au moment du calcule la la resistance equivalante
{
system ("cls") ;
printf ( "vous avez choisi une resistance de nulle ou negative\n\n...vous etes un idiot...\n\n" ) ;
system ("pause") ;
exit (-1) ;
}
}
// On calcule la resistante equivalante pour des resistances en serie
if ( ctype == '1' )
{
for ( int i = 1; i <= inbresistor; i++ )
{
Req = Req + resistor [i - 1] ; // n'oublier pas le -1 car le tableau à un index 0,
// le numero de resistance 1 corespond a l'index 0 du tableau
// donc le numero n corespond a l'index "n-1" ;)
}
}
// On calcule la resistante equivalante pour des resistances en parallele
else if ( ctype == '2' )
{
for ( int i = 1; i <= inbresistor; i++ )
{
G [i - 1] = 1/resistor [i - 1] ;
dAd = dAd + G [i - 1] ;
}
Req = 1/dAd ;
}
dec = modf ( Req, &ent ) ; // on recupere la partie decimale de la resistance equivalante
if ( dec == 0 ) // si elle est nulle alors on affiche que la partie entiere
{
system ("cls") ;
printf ("\n\nLa resistance equivalante est Req = %.0lf .\n\n", Req ); // ex : si Req = 22 on lira 22 et non pas 22.000000 ;)
}
else
{
sprintf (caff_resultat, "%lf", Req ) ; // ici on converti la valeur Req en chaine de caractere caff_resultat
ilong = strlen (caff_resultat) ; //ilong recupere le nombre de caractere present dans la chaine
for (int j = ilong - 1; j > 0; j--) // on tronque les zero inutile de la partie decimale
{
if ( caff_resultat [j] == '0' )
{
caff_resultat [j] = '\0';
}
else
{
break ;
}
}
system ("cls") ;
printf ("\n\nLa resistance equivalante est Req = %s .\n\n", caff_resultat ) ; // donc si la Req = 22.15 en affichan la chaine tronquée on lira 22.15 et non pas 22.150000
}
// ne pas oublier de liberer la memoire allouée
free (resistor) ;
free (G) ;
system ("pause") ; // petite pause avant le rebouclage au debut du code
}
}
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
MATRICE TEMPLATEMATRICE TEMPLATE par hjr2610
Cliquez pour lire la suite par hjr2610 RE : SAC A DOS RE : SAC A DOS par hadjkaddour
Cliquez pour lire la suite par hadjkaddour
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|