Langage C besoin de votre aide!!!!

Sandyc008 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
tksteph Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,

après consultation de nombreux sites sur le langage C j'ai transformé un algo (donné par mon prof) en C mais il ne fonctionne pas c'est un vrai casse tête !!! pourriez vous m'aider pour finir mon code???
un grand merci d'avance,
Sandy

voici le code que j'ai écrit:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
main() //fonction principale
{
#define nb 8; // définir le nb de caractères
char sp[8];
int i,l,cpt;
l = nb;
bool correct;

printf ("entrez votre chaine de parenthese:\n"); // affichage message
scanf("%d",&sp[8]); //saisie caractères

correct = false; //initialisation
i = 1;

while(correct == true && i <= l) // début Tant que
{
if(sp[i] != '(' && sp[i] != ')') //début condition Si
{
correct = false;
}
else
{
i++;
}
}


if (correct == true)
{
printf ("le [sp] est valide\n");
}
else
{
printf("le [sp] est invalide\n");
}

if (correct==true)
{
while(correct == true && i <= l) // début Tant que
{
if(sp[i] == '(')
{
cpt++;
}
else
{
if (sp [i] == ')')
{
if(cpt > 0)
{
cpt = cpt-1;
i++;
}
else
{
correct = false;
}
}
}

}
}

if (correct == true)
{
printf ("sp est correct\n");
}
else
{
printf ("sp est incorrect\n");
}

getch();

}
A voir également:

4 réponses

tksteph Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   25
 
Avant toute chose , tu peux nous dire ce que le code est censé faire?
0
Sandyc008 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour ta réponse!!
je dois tester une chaine de parenthèses s'il n'y a pas que des parenthèse il dois me dire que c'est faux et s'il n'y a pas le bon nombre également;
ensuite il dois tester pour voir si une parenthèse ouverte est bien fermée...

merci de votre aide
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour,

main() //fonction principale
Le prototype de main sans argument est : int main(void)

#define nb 8; // définir le nb de caractères
Il vaut mieux mettre cette instruction en dehors de la fonction, c'est plus propre.
De plus généralement on met le nom en majuscule et enfin on ne met surtout pas de ; à la fin. Ce n'est pas une fonction, mais une directive préprocesseur. Il faut donc plutôt mettre #define NB 8

bool>/ital>
Le type bool n'est pas natif en C. Soit tu fais sans, soit tu utilises stdbool.h et le type _Bool en ISO C99.

<ital>scanf("%d",&sp[8]); //saisie caractères

sp est un tableau de caractère, pas d'entiers.

correct = false; //initialisation
Même remarque que pour bool.

Et enfin n'oublie pas le return 0; final pour signaler que le programme s'est bien déroulé.

Corrige d'abord ces remarques et reposte le code en mettant les remarques de ton compilateur. Et n'oublie pas de mettre dans ton code dans les balises appropriées (à droite du bouton souligné) pour garder l'indentation.

Cdlt,
0
tksteph Messages postés 204 Date d'inscription   Statut Membre Dernière intervention   25
 
En plus des remarques qui ont etés faites par fiddy , que je trouve tout à fait correctes , je penses que ton programme n'aurra pas accès à la boucle while (la premiere ) que tu utilises car tu initialise ton correct à false. et tu teste si correct== true en plus nul part en dessous tu ne modifie sa valeur avant d'entrer dans une structure de controlle ou une boucle.
0