Problème en C pour une fonction sur un texte
Résolu/Fermé
jutabary
Messages postés
15
Date d'inscription
lundi 23 juin 2008
Statut
Membre
Dernière intervention
1 octobre 2011
-
23 juin 2011 à 02:55
jutabary Messages postés 15 Date d'inscription lundi 23 juin 2008 Statut Membre Dernière intervention 1 octobre 2011 - 23 juin 2011 à 18:15
jutabary Messages postés 15 Date d'inscription lundi 23 juin 2008 Statut Membre Dernière intervention 1 octobre 2011 - 23 juin 2011 à 18:15
A voir également:
- Problème en C pour une fonction sur un texte
- Fonction si et - Guide
- Transcription audio en texte word gratuit - Guide
- Mettre un texte en majuscule - Guide
- Excel cellule couleur si condition texte - Guide
- Transcription texte en audio - Guide
3 réponses
lucas06150
Messages postés
151
Date d'inscription
jeudi 17 décembre 2009
Statut
Membre
Dernière intervention
19 juillet 2012
11
23 juin 2011 à 14:46
23 juin 2011 à 14:46
Mais où est ton deuxième fichier ??
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
23 juin 2011 à 15:55
23 juin 2011 à 15:55
difficile de savoir comme ça. Il faudrait en dire plus : qu'est-ce qui se passe exactement avec le deuxième fichier ? à quoi il ressemble ?
les erreurs ?
les erreurs ?
jutabary
Messages postés
15
Date d'inscription
lundi 23 juin 2008
Statut
Membre
Dernière intervention
1 octobre 2011
23 juin 2011 à 18:15
23 juin 2011 à 18:15
alors pour le deuxième fichier c'était tout simplement remplacer text1. par text2.txt.
J'ai un peu avancer depuis j'arrive à lire mes deux fichiers mais je n'arrive pas à faire un trix sur mes mots. j'aimerais dans un premier temps les trier lettres par lettres (chien : cehin)puis mot par mot:
J'ai vu en cours les différents trix mais je n'arrive pas à les appliquer à mes textes.
J'utilise code blocks.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct
{
char mot[26];
}stockage;
stockage tab1[1500];
stockage tab2[15000];
stockage tabbis1[1500];
stockage tabbis2[15000];
void lectureFichier(char saisieFichier[], stockage tableau[]); //prototype
char extractnettoyage(FILE *fichier, stockage tableau[]); //prototype
void affichertable(int t[],int taille); //prototype
void triinsertion (char t[],int MAX);//prototype
//=========================DEBUT DU MAIN================================================================================================
int main()
{
char saisiefichier1[10];
char saisiefichier2[10];
//=======================Affichage du programme===================================
printf("\n\nModule de B23: Tabary Julien\n");
printf("Ce programme recherche les anagrammes entre deux textes.\n\n");
printf("Rentrer un texte numero 1 pour lancer la lecture: ");
scanf("%s", saisiefichier1);//saisi du text1.txt
printf("Rentrer un texte numero 2 pour lancer la lecture: ");
scanf("%s", saisiefichier2);//saisi du text2.txt
//=============================Lecture des textes===================================
int i=0;
int j=0;
int cpt=0;
lectureFichier(saisiefichier1, tab1); //On utilise la fonction lectureFichier pour lire le text1.txt, lafonction lecturefichier va elle utiliser la fonction extractnettoyage
lectureFichier(saisiefichier2, tab2); //On utilise la fonction lectureFichier pour lire le text2.txt, lafonction lecturefichier va elle utiliser la fonction extractnettoyage
printf("\n\nVerification de l'extraction :");
printf("\n%s\n", tab1[1].mot); //verification de l'extraction dans un tableau pour le text1.txt
printf("%s\n", tab2[1].mot); //verification de l'extraction dans un tableau pour le text2.txt
memcpy(tabbis1, tab1, sizeof tabbis1);//Copie le tableau 1 original
memcpy(tabbis2, tab2, sizeof tabbis2);//Copie le tableau 1 original
printf("\n\nVerification de la copie du tableau :");
printf("\n%s\n", tabbis1[1].mot); //verification de l'extraction dans un tableau pour le text1.txt
printf("%s\n", tabbis2[1].mot); //verification de l'extraction dans un tableau pour le text2.txt
//===============================trix=========================================
printf("\n%s\n", tabbis1[1].mot);
return 0;
}
//==============================FIN DU MAIN==============================================================================================
//==============================DEFINITION DE FONCTION===================================================================================
//Fonction lisant le fichier.
void lectureFichier(char saisieFichier[], stockage tableau[])
{
FILE* fichier = NULL;
fichier = fopen(saisieFichier, "r+");//r+ permet l'écriture
if (fichier != NULL)
{
printf("\nLecture reussie.");
extractnettoyage(fichier, tableau); //Extraction des deux textes dans tab1 et tab2.
fclose(fichier);
}
else
{
printf("Impossible d'ouvrir le fichier."); //message d'erreur
}
}
//Procédure permettant extraire les mots dans une structure et d'enlever la ponctuation et les majuscules.
char extractnettoyage(FILE *fichier, stockage tableau[])
{
char caractere;
int i = 0;
int j;
caractere = fgetc(fichier);
while(caractere != EOF)
{
j = 0;
while(caractere != ' ' && caractere != EOF)
{
if ( caractere >= 'A' && caractere <= 'Z') //Utilisation du code ASCII +32 entre 'A' et 'a'.
{
caractere += 32;
}
else if (!isalpha(caractere)) //supprime ce qui n'est pas un mot
{
caractere = ' ';
}
tableau[i].mot[j] = caractere; //On extrait les mots du fichier dans le tableau.
caractere = fgetc(fichier);
j++;
}
tableau[i].mot[j] = '\0';
caractere = fgetc(fichier);
i++;
}
return tableau;
}
// Fonction Affichage de tableau
void affichertable(int t[],int taille)
{
int i;
for (i=0;i<taille;i++)
printf("%d ",t[i]);
printf("\n");
}
//===========================Fonction Trix=======================================
//TRI SHELL
/*
void trishell(stockage tab[])
{
int h=1;
do
{
h=3*h+1;
}
while(h<N);
do
{
int i;
h=h/3;
for(i=h;i<N;i++)
{
int aux;
aux=tab[0].mot[i];
int j;
j=i;
while(j>=h && tab[0].mot[j-h]>aux)
{
tab[0][j]=tab[0].mot[j-h];
j=j-h;
}
tab[0].mot[j]=aux;
}
}
while ( h!= 0);
}
*/
//FONCTION TRI SELCTION
void triinsertion (char t[],int MAX){
int i,j,min,aux;
for(i=0;i<MAX;i++)
{
aux=t[i];
j=i;
while(j>0 && t[j-1]>aux)
{
t[j]=t[j-1];
j=j-1;
}
t[j]=aux;
}
}
J'ai un peu avancer depuis j'arrive à lire mes deux fichiers mais je n'arrive pas à faire un trix sur mes mots. j'aimerais dans un premier temps les trier lettres par lettres (chien : cehin)puis mot par mot:
J'ai vu en cours les différents trix mais je n'arrive pas à les appliquer à mes textes.
J'utilise code blocks.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct
{
char mot[26];
}stockage;
stockage tab1[1500];
stockage tab2[15000];
stockage tabbis1[1500];
stockage tabbis2[15000];
void lectureFichier(char saisieFichier[], stockage tableau[]); //prototype
char extractnettoyage(FILE *fichier, stockage tableau[]); //prototype
void affichertable(int t[],int taille); //prototype
void triinsertion (char t[],int MAX);//prototype
//=========================DEBUT DU MAIN================================================================================================
int main()
{
char saisiefichier1[10];
char saisiefichier2[10];
//=======================Affichage du programme===================================
printf("\n\nModule de B23: Tabary Julien\n");
printf("Ce programme recherche les anagrammes entre deux textes.\n\n");
printf("Rentrer un texte numero 1 pour lancer la lecture: ");
scanf("%s", saisiefichier1);//saisi du text1.txt
printf("Rentrer un texte numero 2 pour lancer la lecture: ");
scanf("%s", saisiefichier2);//saisi du text2.txt
//=============================Lecture des textes===================================
int i=0;
int j=0;
int cpt=0;
lectureFichier(saisiefichier1, tab1); //On utilise la fonction lectureFichier pour lire le text1.txt, lafonction lecturefichier va elle utiliser la fonction extractnettoyage
lectureFichier(saisiefichier2, tab2); //On utilise la fonction lectureFichier pour lire le text2.txt, lafonction lecturefichier va elle utiliser la fonction extractnettoyage
printf("\n\nVerification de l'extraction :");
printf("\n%s\n", tab1[1].mot); //verification de l'extraction dans un tableau pour le text1.txt
printf("%s\n", tab2[1].mot); //verification de l'extraction dans un tableau pour le text2.txt
memcpy(tabbis1, tab1, sizeof tabbis1);//Copie le tableau 1 original
memcpy(tabbis2, tab2, sizeof tabbis2);//Copie le tableau 1 original
printf("\n\nVerification de la copie du tableau :");
printf("\n%s\n", tabbis1[1].mot); //verification de l'extraction dans un tableau pour le text1.txt
printf("%s\n", tabbis2[1].mot); //verification de l'extraction dans un tableau pour le text2.txt
//===============================trix=========================================
printf("\n%s\n", tabbis1[1].mot);
return 0;
}
//==============================FIN DU MAIN==============================================================================================
//==============================DEFINITION DE FONCTION===================================================================================
//Fonction lisant le fichier.
void lectureFichier(char saisieFichier[], stockage tableau[])
{
FILE* fichier = NULL;
fichier = fopen(saisieFichier, "r+");//r+ permet l'écriture
if (fichier != NULL)
{
printf("\nLecture reussie.");
extractnettoyage(fichier, tableau); //Extraction des deux textes dans tab1 et tab2.
fclose(fichier);
}
else
{
printf("Impossible d'ouvrir le fichier."); //message d'erreur
}
}
//Procédure permettant extraire les mots dans une structure et d'enlever la ponctuation et les majuscules.
char extractnettoyage(FILE *fichier, stockage tableau[])
{
char caractere;
int i = 0;
int j;
caractere = fgetc(fichier);
while(caractere != EOF)
{
j = 0;
while(caractere != ' ' && caractere != EOF)
{
if ( caractere >= 'A' && caractere <= 'Z') //Utilisation du code ASCII +32 entre 'A' et 'a'.
{
caractere += 32;
}
else if (!isalpha(caractere)) //supprime ce qui n'est pas un mot
{
caractere = ' ';
}
tableau[i].mot[j] = caractere; //On extrait les mots du fichier dans le tableau.
caractere = fgetc(fichier);
j++;
}
tableau[i].mot[j] = '\0';
caractere = fgetc(fichier);
i++;
}
return tableau;
}
// Fonction Affichage de tableau
void affichertable(int t[],int taille)
{
int i;
for (i=0;i<taille;i++)
printf("%d ",t[i]);
printf("\n");
}
//===========================Fonction Trix=======================================
//TRI SHELL
/*
void trishell(stockage tab[])
{
int h=1;
do
{
h=3*h+1;
}
while(h<N);
do
{
int i;
h=h/3;
for(i=h;i<N;i++)
{
int aux;
aux=tab[0].mot[i];
int j;
j=i;
while(j>=h && tab[0].mot[j-h]>aux)
{
tab[0][j]=tab[0].mot[j-h];
j=j-h;
}
tab[0].mot[j]=aux;
}
}
while ( h!= 0);
}
*/
//FONCTION TRI SELCTION
void triinsertion (char t[],int MAX){
int i,j,min,aux;
for(i=0;i<MAX;i++)
{
aux=t[i];
j=i;
while(j>0 && t[j-1]>aux)
{
t[j]=t[j-1];
j=j-1;
}
t[j]=aux;
}
}