begin process at 2012 05 27 18:55:44
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > NOM: BIENPARENTHÉSÉ()()()(() VERIFIE SI LA CHAINE PASSÉE EN PARAMETRE EST BIEN PARENTHÉSÉE

NOM: BIENPARENTHÉSÉ()()()(() VERIFIE SI LA CHAINE PASSÉE EN PARAMETRE EST BIEN PARENTHÉSÉE


 Information sur la source

Note :
Aucune note
Catégorie :Divers Niveau :Débutant Date de création :27/12/2002 Date de mise à jour :27/12/2002 18:46:31 Vu :1 779

Auteur : slims

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

 Description

Le titre veut tout dire on m a dit que mon code ne fonctionne pas moi je dis que si.J attends des commentaires. Amicalement

Source

  • #include <stdio.h>
  • #include <stdlib.h>
  • int parenthesee(int size, char* expression)
  • {
  • char a = '(';
  • char b = ')';
  • int i;
  • int gauche = 0;
  • int droite = 0;
  • for(i=0; i<=size; i++)
  • {
  • if (expression[i] == a) gauche = gauche + 1;
  • }
  • for(i=0; i<=size; i++)
  • {
  • if(expression[i] == b) droite = droite + 1;
  • }
  • if(gauche == droite)
  • {
  • return 1;
  • }
  • else
  • {
  • return 0;
  • }
  • }
  • int main()
  • {
  • int size;
  • char* expression;
  • scanf("%d\n", &size);
  • expression = malloc(size+1);
  • scanf("%s", expression);
  • printf("%d\n", parenthesee(size, expression));
  • return 0;
  • }
#include <stdio.h>
#include <stdlib.h>
int parenthesee(int size, char* expression) 
{
	char a = '(';
	char b = ')';
   int i;
   int gauche = 0;
   int droite = 0;
   for(i=0; i<=size; i++)
   {
	   if (expression[i] == a) gauche = gauche + 1;  
	  
   }

   for(i=0; i<=size; i++)
   {
	   if(expression[i] == b) droite = droite + 1;
   }

   if(gauche == droite)
   {
	   return 1;
   }
   else
   {

	   return 0;
   }
}

 

int main() 
{ 
   int size; 
   char* expression;
   scanf("%d\n", &size); 
   expression = malloc(size+1); 
   scanf("%s", expression); 
   printf("%d\n", parenthesee(size, expression)); 
   return 0; 
} 




 Sources du même auteur

Source avec Zip SALUT, UNE FONCTION DE RECHERCHES DE SOUS CHAINES
Source avec Zip TRI_PAR_INSERTION
Source avec Zip TRI_PAR_ORDRE_ALPHABETIQUE
ASCII TT COURT EN C

 Sources de la même categorie

Source avec Zip KISIEL CD INFO DRIVE par kisiel0147852
Source avec une capture SUPPRESSION DES REDONDANCES DE FICHIERS par cyberntique
Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro

Commentaires et avis

Commentaire de Kaid le 27/12/2002 20:03:44

Ton code est optimisable en ne fesant qu'un seul parcours pour compter les parenthèses et en incrémentant les variables avec l'opérateur ++.

Commentaire de jcecchi le 27/12/2002 20:42:21

Salut,

Ceux qui disent que ton code ne marche n'ont pas tout a fait tort.
Je m'explique, en fait ton code compte le nombre de parentheses ouvrantes et fermantes mais imagine que :
expression = "Test )-:("
Et bien tu auras droite = gauche = 1 et ton programme renverra "OK c'est bon", mais ce n'est pas bon.
Il faudra donc aussi que tu penses a verifier les positions des parentheses.

Sinon a part ca, tu prend des risques a demander a l'utilisateur le nombre de caracteres de l'expression, c'est tellement vite fait d'oublier de compter une lettre.
Prefere plutot l'utilisation de la ligne de commande pour passer l'expression a tester + strlen.

Voila.

Commentaire de slims le 28/12/2002 09:53:13

Merci kaid pour le commentaire fait sur l optimisation possible de mon code.
Merci beaucoup jcecchi pour ton commentaire sur mon code.
Amicalement.

Commentaire de khayyam le 07/06/2004 19:16:51

c'est un code sympathique que celui-ci !
une autre chose pour optimiser : les déclarations de a et de b sont totalement inutile en utilisant directement ')' et '(' dans les conditions. 2 octets de gagnés.
le dernier if peut aussi être retiré en mettant
return (gauche == droite);

je trouve que tu prends aussi un risque en faisant la saisie de la chaine avec scanf. suffit que tu entres un ' ' (espace) et c'est foutu. et comme l'a dit jcecchi, la demande de la taille est maladroite.

et pour régler le problème du cas )(  , il faudrait faire une boucle tant que le nombre de parethèses ouvertes - nombre de parenthèses fermées &gt;=0. en gros, une seule grande boucle qui vérifie si c'est un '(', ou un ')' et que gauche-droite&gt;=0

Commentaire de fahdouch le 10/11/2009 12:40:23

ton programme cher ami va dire ke l'expression " ))(( " est valide, or c'est pa les cas
attetion!!!

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

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,062 sec (3)

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