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 -
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();
}
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:
- Langage C besoin de votre aide!!!!
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
4 réponses
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
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
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,
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,
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.