Aider a traduire en pascal
Résolu
sfrsky
Messages postés
125
Date d'inscription
Statut
Membre
Dernière intervention
-
sfrsky Messages postés 125 Date d'inscription Statut Membre Dernière intervention -
sfrsky Messages postés 125 Date d'inscription Statut Membre Dernière intervention -
bonsoir a tous ;
je voudrais bien traduire ce programme en pascal car je ne my connais pas du tout en C, je sais que le C est important mais je l'apprendrais plus tard
merci d'avance.
voila le programme :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define LONGMAX 25
typedef struct noeud
{
char *mot;
int nb_occ;
struct noeud *gauche;
struct noeud *droit;
} Noeud;
typedef Noeud *Adr_noeud;
void trier(FILE *, FILE *);
Adr_noeud entree_vers_arbre(FILE *);
void arbre_vers_sortie(Adr_noeud, FILE *);
Adr_noeud inser_arbre(Adr_noeud, char *);
int lire_mot(FILE *, char *);
int main(int argc, char *argv[])
{
char nom[LONGMAX];
FILE *lecture, *ecriture;
if (argc > 2)
{
if (strcmp(argv[1], "clavier"))
{
lecture = fopen(argv[1], "r");
while (lecture == NULL)
{
printf("le fichier d'entrée indiqué n'existe pas\n"
"indiquer un autre nom de fichier d'entrée\n");
scanf("%s", &nom)
lecture=fopen(nom, "r");
}
}
else
{
lecture = stdin;
printf("Entrez votre texte et terminez-le par \"ctrl z\"\n");
}
if (strcmp(argv[2], "ecran")) ecriture=fopen(argv[2], "w");
else ecriture = stdout;
trier(lecture, ecriture);
if (strcmp(argv[1], "clavier")) fclose(lecture);
if (strcmp(argv[2], "ecran")) fclose(ecriture);
}
else printf("vous devez donner deux arguments ,"
"le premier étant clavier\nsi vous voulez indiquer"
" les données au clavier\net le second écran"
" si vous voulez récupérer les résultats à l'écran\n");
return 0;
}
void trier(FILE *fich1, FILE *fich2)
{
Adr_noeud racine = NULL;
racine= entree_vers_arbre(fich1);
fprintf(fich2, "\nVoici la liste des mots\n");
arbre_vers_sortie(racine, fich2);
}
Adr_noeud entree_vers_arbre(FILE *fichier)
{
char le_mot[LONGMAX];
Adr_noeud la_racine = NULL;
while (lire_mot(fichier, le_mot) != EOF) la_racine = inser_arbre(la_racine, le_mot);
return la_racine;
}
int lire_mot(FILE *fichier,char *un_mot)
{
int c;
int i;
while ((isspace(c = getc(fichier)) || ispunct(c))&&(c != '_') && (c != EOF));
if (c==EOF) return EOF;
else
{
for (i = 0; !(isspace(c) || ispunct(c) || c == EOF) || (c == '_');i++)
{
un_mot[i]=c;
c = getc(fichier);
}
un_mot[i] = '\0';
return un_mot[0];
}
}
Adr_noeud inser_arbre(Adr_noeud rac, char *un_mot)
{
int comp;
if (rac==NULL)
{
rac = (Adr_noeud) malloc(sizeof(Noeud));
rac->mot = (char *) malloc(strlen(un_mot)+1);
rac->nb_occ = 1;
strcpy(rac->mot,un_mot);
rac->gauche = rac->droit = NULL;
}
else if ((comp = strcmp(un_mot, rac->mot)) == 0) rac->nb_occ++;
else if (comp < 0) rac->gauche = inser_arbre(rac->gauche, un_mot);
else rac->droit = inser_arbre(rac->droit, un_mot);
return rac;
}
void arbre_vers_sortie(Adr_noeud rac, FILE *fichier)
{
if (rac != NULL)
{
arbre_vers_sortie(rac->gauche, fichier);
fprintf(fichier, "%s (%d fois)\n", rac->mot, rac->nb_occ);
arbre_vers_sortie( rac->droit,fichier);
}
}
je voudrais bien traduire ce programme en pascal car je ne my connais pas du tout en C, je sais que le C est important mais je l'apprendrais plus tard
merci d'avance.
voila le programme :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define LONGMAX 25
typedef struct noeud
{
char *mot;
int nb_occ;
struct noeud *gauche;
struct noeud *droit;
} Noeud;
typedef Noeud *Adr_noeud;
void trier(FILE *, FILE *);
Adr_noeud entree_vers_arbre(FILE *);
void arbre_vers_sortie(Adr_noeud, FILE *);
Adr_noeud inser_arbre(Adr_noeud, char *);
int lire_mot(FILE *, char *);
int main(int argc, char *argv[])
{
char nom[LONGMAX];
FILE *lecture, *ecriture;
if (argc > 2)
{
if (strcmp(argv[1], "clavier"))
{
lecture = fopen(argv[1], "r");
while (lecture == NULL)
{
printf("le fichier d'entrée indiqué n'existe pas\n"
"indiquer un autre nom de fichier d'entrée\n");
scanf("%s", &nom)
lecture=fopen(nom, "r");
}
}
else
{
lecture = stdin;
printf("Entrez votre texte et terminez-le par \"ctrl z\"\n");
}
if (strcmp(argv[2], "ecran")) ecriture=fopen(argv[2], "w");
else ecriture = stdout;
trier(lecture, ecriture);
if (strcmp(argv[1], "clavier")) fclose(lecture);
if (strcmp(argv[2], "ecran")) fclose(ecriture);
}
else printf("vous devez donner deux arguments ,"
"le premier étant clavier\nsi vous voulez indiquer"
" les données au clavier\net le second écran"
" si vous voulez récupérer les résultats à l'écran\n");
return 0;
}
void trier(FILE *fich1, FILE *fich2)
{
Adr_noeud racine = NULL;
racine= entree_vers_arbre(fich1);
fprintf(fich2, "\nVoici la liste des mots\n");
arbre_vers_sortie(racine, fich2);
}
Adr_noeud entree_vers_arbre(FILE *fichier)
{
char le_mot[LONGMAX];
Adr_noeud la_racine = NULL;
while (lire_mot(fichier, le_mot) != EOF) la_racine = inser_arbre(la_racine, le_mot);
return la_racine;
}
int lire_mot(FILE *fichier,char *un_mot)
{
int c;
int i;
while ((isspace(c = getc(fichier)) || ispunct(c))&&(c != '_') && (c != EOF));
if (c==EOF) return EOF;
else
{
for (i = 0; !(isspace(c) || ispunct(c) || c == EOF) || (c == '_');i++)
{
un_mot[i]=c;
c = getc(fichier);
}
un_mot[i] = '\0';
return un_mot[0];
}
}
Adr_noeud inser_arbre(Adr_noeud rac, char *un_mot)
{
int comp;
if (rac==NULL)
{
rac = (Adr_noeud) malloc(sizeof(Noeud));
rac->mot = (char *) malloc(strlen(un_mot)+1);
rac->nb_occ = 1;
strcpy(rac->mot,un_mot);
rac->gauche = rac->droit = NULL;
}
else if ((comp = strcmp(un_mot, rac->mot)) == 0) rac->nb_occ++;
else if (comp < 0) rac->gauche = inser_arbre(rac->gauche, un_mot);
else rac->droit = inser_arbre(rac->droit, un_mot);
return rac;
}
void arbre_vers_sortie(Adr_noeud rac, FILE *fichier)
{
if (rac != NULL)
{
arbre_vers_sortie(rac->gauche, fichier);
fprintf(fichier, "%s (%d fois)\n", rac->mot, rac->nb_occ);
arbre_vers_sortie( rac->droit,fichier);
}
}
A voir également:
- Aider a traduire en pascal
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Traduire une page en français - Guide
- Dev pascal - Télécharger - Édition & Programmation
- Traduire image - Guide