begin process at 2012 05 29 16:48:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Autre

 > 

probabilité


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probabilité

mardi 20 avril 2010 à 15:10:12 | probabilité

abggba

Salut tout le monde!
bon voila je travaille actuellement sur un projet de math (de la probabilité), et j'aurai besoin d'un petit coup de main!
le but de l'exercice c'est de faire passer des chiffres en ligne de commande via une chaine de caractere, ces chiffres doivent etre utiliser pour calculer la formule de la probabilité qui est (4k + 5)/10k avec k = nombre passé en ligne de commande par exple :

> a.out "1+3+5"
0.978
> a.out "1x3"
0.510
>truc@bidule

En entrée : Chaîne de caractères représentant l’expression dont on veut calculer la probabilité
En sortie : Probabilité résultat avec 3 chffres après la virgule
le caractere + rrepresente union
le caractere x represente inter

j'ai reussi a pratiquement tout faire mais voila que je bloque sur la gestion des priorités (cad faire les calculs pour les inter (x) avant celui des unions (+))
j'espere que quelqu'un d'entre vous parviendra m'aider merci d'avance !!

voici mon code source (je suis sous pc bsd):

Code C/C++ :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int get_next_nbr(int *cpt,char *src)
{
  char  str[strlen(src) ];
  int i = 0;
  int j = *cpt;
  //  str = malloc ((strlen(src) + 1) * sizeof(char));
   
  while ((src[j] >= '0') && (src[j] <= '9') && j< strlen(src))
    {
      str[i] = src[j];
      i++;
      j++;
    }
  
  str[i] = '\0';
  *cpt = j;
  return(atoi(str));
}

int main (int argc, char ** argv)
{
  int i;
  int j;
  char *str;
  char operante;
  float resultat;
  float resultat_union;
  float resultat_inter;
  float p_res, p_nbr2;
  i = 0;
  j = 0;
  resultat = 0;
  resultat_union = 0;
  resultat_inter = 0;
  p_res = 0;
  p_nbr2 = 0;
  float   nbr,nbr2;
  int etat=0;
  int neg;
  
   if(argv[1][i] != '-')
     resultat = get_next_nbr(&i, argv[1]);
      else
	{
	  
	  i++;
	  resultat = get_next_nbr(&i, argv[1]) * (-1);
	  
	}


  while (argv[1][i] != '\0')
    {
      j = 0;
      
      operante = argv[1][i];
      
      i++;
      
      if(argv[1][i] != '-')
	nbr2 = get_next_nbr(&i, argv[1]);
      else
	{
	  
	  i++;
	  nbr2 = get_next_nbr(&i, argv[1]) * (-1);
	  
	}
      
      if(operante == 'x')
	{
	  
	  if (etat > 0)
	    { 
	      if (nbr2 < 0)
		{
		  p_nbr2 = (1-(((4.0*(-nbr2))+5)/(10*(-nbr2))));
		}
	      else
		{
		p_nbr2 =  (((nbr2*4.0)+5)/(10*nbr2));	
		}
		resultat = resultat * p_nbr2;		
	    }	      	      
	  else
		{
		  if (nbr2 < 0)
		    {
		      p_nbr2 = (1-(((4.0*(-nbr2))+5)/(10*(-nbr2))));
		    }
		  else
		    {
                      p_nbr2 = (((nbr2*4.0)+5)/(10*nbr2));
		    }
		  if (resultat < 0)
		   {
		    resultat = (1-(((4.0*(-resultat))+5)/(10*(-resultat))));
		   }
	        else
		  {
		   resultat = (((resultat*4.0)+5)/(10*resultat));
		  }	
	
		  resultat = resultat * p_nbr2;
		}
	}
	  
    
      
      

      if (operante == '+')
	{
	  if (etat > 0)
	    {
	      
	      if (nbr2 < 0)
		{
		 
		  p_nbr2 = (1-(((4.0*(-nbr2))+5)/(10*(-nbr2))));
		}
	      else 
		{
		  
		  p_nbr2 =  (((nbr2*4.0)+5)/(10*nbr2));
		}
	      resultat_union = resultat + p_nbr2;
	      resultat_inter = resultat * p_nbr2;
	    }


	  else
	    {	
	      if (nbr2 < 0)
		{
		  
		  p_nbr2 = (1-(((4.0*(-nbr2))+5)/(10*(-nbr2))));
		}
	      else
		{
		 
		  p_nbr2 = (((nbr2*4.0)+5)/(10*nbr2));
		  
		}
	      if (resultat < 0)
		{
		  resultat = (1-(((4.0*(-resultat))+5)/(10*(-resultat))));
		}
	      else
		{
		  resultat = (((resultat*4.0)+5)/(10*resultat));
		}
	      resultat_union = resultat + p_nbr2;
	      resultat_inter = resultat * p_nbr2;
	    }
	  resultat = (resultat_union  - resultat_inter);
	}
      etat = 1;
    }
  printf("%.3f\n", resultat);
  
}



ps: si vous avez besoin d'eclairecissement à propos du sujet n'hesitez pas!!




Cette discussion est classée dans : resultat, src, inter, nbr2, probabilité


Répondre à ce message

Sujets en rapport avec ce message

[C++] precision [ par kikiops ] comment faire pour avoir des resultats float avec deux decimalesj'vous donne un ch'tit exemple , ca sera plus simple pour m'faire comprendrefloat a = équation et tableaux [ par cabarrus ] je ne trouve pas l'erreur dans mon programme?#include#includeint deltanul(int);float deltainf(float);float deltasup(float);void main(void){float a,b,c ouvrir en lecture un fichier distant [ par FloZix ] Bonjour,Mon probleme : je voudrais ouvrir en lecture un fichier sur internet. J'ai essayé ça : if ( (src = fopen ( "http://www.google.fr/index.html" , Afficher le resultat d'une procedure ds un edit box [ par pipic ] comment faire pour afficher le resultat d'une procedure (void) ds un edit box ss visual c++ avec l'assistant MFC??pipic Affichage ss Visual C++ avec MFC [ par pipic ] G un souci:G réalise une appli win 32 qui me sortait le resultat a partir du code suivant : for (i=0;i for (i=0; i newbie install lib linux [ par mathieue ] je rencontre des pb pour installer une librairie sous linux.voici le résultat de make, sachant que je ne comprends rien a tout ce qui suit....for dir Probl avec float et int [ par David2907 ] Après un calcul, comment faire pour afficher un resultat sans virgule ou un resultat avec virugule???Merci video AVI-AVIFileOpen () [ par Pl_net ] Help j'ai un peu de mal avec cette fonction, elle doit me retourner 0 hors ce n'est pas la cas.Si quelqu'un peut m'aider ????#pragma hdrstop#include pb : lecture d'un fichier bmp, "decalage" [ par fiston_67 ] Le problème est le suivant : je souhaite lire un fichier bmp couleur 24 bits et 16 millions de couleur, et stocker le resultat dans 3 matrices rouge, exercice important>>>>> [ par porkapetan ] saluten fait je bloque sur un programmeje prends deux nombres de trois chiffreset je les additionne et les multiplieje dois ensuite verifier si le res


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,842 sec (4)

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