Langage C besoin de votre aide!!!!

Fermé
Sandyc008 Messages postés 10 Date d'inscription samedi 20 février 2010 Statut Membre Dernière intervention 29 mai 2010 - Modifié par Sandyc008 le 27/04/2010 à 23:40
tksteph Messages postés 204 Date d'inscription samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 - 28 avril 2010 à 10:18
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 samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
28 avril 2010 à 00:07
Avant toute chose , tu peux nous dire ce que le code est censé faire?
0
Sandyc008 Messages postés 10 Date d'inscription samedi 20 février 2010 Statut Membre Dernière intervention 29 mai 2010
28 avril 2010 à 07:24
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
28 avril 2010 à 08:06
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 samedi 20 mars 2010 Statut Membre Dernière intervention 3 janvier 2018 25
28 avril 2010 à 10:18
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