begin process at 2010 02 10 07:46:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > RESISTANCE EQUIVALANTE DE RESISTANCES EN SERIE OU PARALLELE

RESISTANCE EQUIVALANTE DE RESISTANCES EN SERIE OU PARALLELE


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Classé sous :resistance, allocation, memoire Niveau :Débutant Date de création :26/06/2008 Vu :4 598

Auteur : neocoder

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Alors voila, c'est mon tout premier code, il permet de choisir le nombre de resistances puis de calculer la resistance equivalante de toutes ce resistances qu'elles soient en serie ou en parallele dites moi ce que vous en pensez

Source

  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <math.h> //Permet de recuperer la partie decimale de la resistance equivalante
  • #include <string.h> // permet de convertir une varriable numerique en chaine de caractere
  • 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>    //Permet de recuperer la partie decimale de la resistance equivalante
#include <string.h>  // permet de convertir une varriable numerique en chaine de caractere




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

	}


}

 Conclusion

j'attends vos commentaires ou critiques


 Sources du même auteur

CALCUL DE RESISTANCE EQUIVALANTE DE PLUSIEURS RESISTANCES EN...

 Sources de la même categorie

GESTIONNAIRE DE BIBLIOTHEQUE par eishtein
FICHIER ALBUM MUSICAL par imenouuuuuuuuuche
LOUISDU81 HTTP EDITOR par louisdu81
Source avec Zip Source avec une capture Source .NET (Dotnet) CLIENT IRC BASIQUE par king67
Source avec Zip CONVERTISSEUR NOMBRE ARABE => NOMBRE ROMAIN (1 À 4999) par Calli95

 Sources en rapport avec celle ci

Source avec Zip LOGICIEL DE CALCUL NUMÉRIQUE AVEC GESTION DE LA MEMOIRE VIDE... par ousin
Source avec Zip Source avec une capture [C++/WIN32] RECHERCHE DE FUITES DE MEMOIRE par yann_lo_san
Source avec Zip JEU DE MEMORY DÉBUTANT par jimmypage64
Source avec Zip Source avec une capture 2.0 GESTION DE LA RAM EN PROGRESS BAR [VC++] API WIN32 par wxccxw
Source avec Zip Source avec une capture [VC++] API WIN32 : GESTION DE LA RAM EN PROGRESS BAR V 1.1 par wxccxw

Commentaires et avis

Commentaire de BruNews le 26/06/2008 14:48:07 administrateur CS

Si tu indexais l'itérateur à 0, tu écrirais simplement:
for(int i = 0; i < inbresistor; i++) resistor[i]....plus besoin de '-1' partout.

Commentaire de kle500 le 27/06/2008 15:42:14

salut que c'est long mais bon
cela est plus rapide de le faire avec une calculatrice programmable
pour les r//
rx = 1/(1/r1 + 1/r2 + 1/r3 +.....)

jack

Commentaire de Nicoschmeii le 30/06/2008 09:37:42 6/10

Oui je suis d'accord avec kle500, il devrait y avoir moyen de réduire un peu le code.

Dommage qu'il n'y a pas la possibilité d'associer des résistance en parallèle ET en série, sinon l'intérêt est assez limité.

Ca ne commencerait à devenir intéressant qu'avec un GUI où on associerait les résistance par drag and drop, et là l'avantage du programme apparaîtrait: on a plus besoin de savoir si tel ou tel résistance est en série ou en parallèle, le logiciel le trouve pour nous ^^

C'est clair que c'est beaucoup plus compliqué.

L'application actuelle, je lui met quand même un 6/10, parce que c'est pour niveau Débutant et que les calculs ne sont pas faux.

Commentaire de verdy_p le 06/07/2008 03:22:40

et pourquoi ne pas plutôt créer un analyseur de formule, dans laquelle on aurait un opérateur supplémentaire pour les résistanes en parallèle? Les résistances en série étant notées avec l'opérateur diadique "+", celles en parallèle notées avec l'opérateur diadique "!" (qui aurait alors une priorité opératoire intermédiaire entre addition/soustraction et multiplication/division).
Exemple: "42 ! 42" = 1/(1/42+1/42) = 21
Du coup on peut faire des formules plus compliquées, où sont notées uniquement les parenthèses nécessaires:
(10 + 10) ! 100 = 20 ! 100 = 2 * 10 ! 100 = (10 + 10) ! 100 = 1 / (1/(10 + 10) + 1/100)
On voit l'intérêt de l'opérateur "parallèle", il simplifie nettement les formules.
Pas besoin d'opérateur spécifique pour la mise en série.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Allocation memoire [ par youga ] Bonjour je fais un programme de filtrage d'images en C sur VisualDSP++. J'ai donc une matrice d'entrée et je dois absolument pouvoir determiner l'add projet allocation efficace de memoire [ par gildaso ] Salut &#224; tous! Alors voila je suis en licence d'informatique et j'ai un projet &#224; rendre&nbsp;&nbsp;pour la mi-mai.Ce projet consiste &#224; i allocation efficace de memoire [ par gildaso ] Salut &#224; tous! Alors voila je suis en licence d'informatique et j'ai un projet &#224; rendre&nbsp;&nbsp;pour la mi-mai.Ce projet consiste &#224; i [ c ] Allocation memoire [ par Titi035 ] Bonjour, Je recherche quel serait le meilleur allocateur m&#233;moire pour mon appli embarqu&#233;e. J'ai 10 Mo de RAM + flash &#224; g&#233;r fonction malloc [ par Trollien ] Salut,j'aurai une question concernant le fonctionnement de l'allocation de memoire en c.Si j'alloue de la memoire avec la fonction malloc(...), est ce allocation memoire qui echoue, mais pourquoi?? [ par Seomaz ] Bonjour,je pense que le titre est assez explicite...mais je détaille quand même:lors d'une allocation dynamique (avec l'operateur new), je me retrouve allocation de memoire [ par tcok ] salut a tousje voudrais juste savoir quelle est la difference entre LocalAlloc et GlobalAlloc car je dois resever un gros espace en memoire et je me d COMPLEXITE, TEMPS ET MEMOIRE utilise par un ALGORITHME [ par RaZoR ] J'ai découvert, il n'y a pas longtemps de cela, un concours de programmation réservé aux jeunes français de moins de 18 ans et créer par des étudiants Fuite memoire + Debug [ par Manson ] Bonjour a tous.Voila j'ai un gros probleme, voila un bout de code qui me met la tete a l'envers, et j'aimerai que l'on m'explique ce qui se passe :#pr Afficher charge CPU disponibilite memoire et disque [ par kobee12 ] J'aimerais faire un prog qui me permette d'afficher en temps reel la charge CPU la disponibilite memoire et disque de mon pc, et out ca en C.Si quelqu


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales