BUT2/DEV/DEV1.1_suite/TP_Piles/Parenthèse/main.c~
2023-10-23 13:23:36 +02:00

63 lines
1.3 KiB
C

#include<stdio.h>
#include<stdlib.h>
//#include"tableau.h"
#include"chaine.h"
char parenthese(char symbole){
if (symbole==')'){
return '(';
}
if (symbole=='}'){
return '{';
}
if (symbole==']'){
return '[';
}
return '0';
}
int main(int argc, char** argv){
int numFichier;
FILE* fichier;
char caractere[2];
pile p_pile;
creerPile(&p_pile);
if (argc==1){
fprintf(stderr,"Utilisation : \n%s <fichier>\n",argv[0]);
return 1;
}
for (numFichier=1; numFichier<argc; numFichier++){
fichier = fopen(argv[numFichier],"r");
if (fichier==NULL){
fprintf(stderr,"Erreur : Impossible d'ouvrir le fichier \"%s\" en écriture\n",argv[numFichier]);
return 1;
}
while (fread(caractere,sizeof(char),1,fichier)){
if (caractere[0]=='(' || caractere[0]=='{' || caractere[0]=='['){
push(&p_pile,caractere[0]);
}
if (caractere[0]==')' || caractere[0]=='}' || caractere[0]==']'){
if (empty(p_pile)){
if (top(p_pile)==parenthese(caractere[0])){
pop(&p_pile);
}
else{
push(&p_pile,caractere[0]);
}
}
else{
push(&p_pile,caractere[0]);
}
}
}
if (empty(p_pile)){
printf("%s incorrect\n", argv[numFichier]);
clear(&p_pile);
}
else{
printf("%s correct\n", argv[numFichier]);
}
}
}