Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/04/2007, à 19:04

king2009

comparaison de 2 entier avec c

salut
voici un code :mais le pb que j'ai un fichier de 35940 lignes et dans chaque ligne j'ai 2 chiffres séparé par un virgule et ce code peut lire au maximum 6300 lignes
je veus une solution

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

#define CMAX 17 //nb colonne 
#define LMAX 6300 //nb ligne 
#define MAX_CHAR_PER_LINE 1650 //nb caractere par ligne (pas de probleme) 
#define SEP "," //separateur entre les chifre 
#define FICH "sortieF.txt" //fichier ou se trouve mes donnes 


int main(int argc, char* argv[])
{
FILE *m_File, *p;
int i = 0;
int j;
float Tab[LMAX][CMAX];
char szbuff[MAX_CHAR_PER_LINE];
char* token;



// On initialise le tableau a -1
for(i=0;i<LMAX;i++)
{
for(j=0;j<CMAX;j++)
{
Tab[i][j] = -1;
}
}

// On réinitialise le compteur de ligne car i;a été incrémenté lors de l'iniatialisation
i = 0;

// On ouvre le fichier en lecture seule et en mode texte
m_File = fopen(FICH,"rt");
//un autre fichier pour stoker le resulat
p=fopen("stockTab.txt","w");

if(!m_File) return 1;

// On lit le fichier ligne a ligne et on stocke les valeurs dans un tableau d'entier
while(!feof(m_File) && i < LMAX)
{

j = 0;

// On récupere la ligne courante du fichier
fgets(szbuff,MAX_CHAR_PER_LINE,m_File);

// On decoupe la ligne selon le charactere de séparation SEP (" ")
// strtok() -> decoupage de chaine de caracteres
token = strtok(szbuff,SEP);

// On lit les éléments découpés un à un et on les stocke dans le tableau Tab
while(token != NULL && j < CMAX)
{
// On stocke la valeur lue dans le tableau
Tab[i][j] = atof(token);
// On lit l'element suivant retourner par strtok
token = strtok(NULL,SEP);
// On incremente le compteur des ordonnées
j++;
}

// On incrémente le compteur des abscisses
i++;
}


// On stoke le tableau dans un fichier 

float n=0;
for(int x=0;x<i;x++)
{
for(int y=0;y<j;y++)
{
n=Tab[x][0]-Tab[x][1];
fprintf(p,"%0.6f\t",Tab[x][y]);
}

fprintf(p,"la difference est : %0.6f ",n);
fprintf(p,"\n");
}
fclose(p);
return 0;

}

pensez à utiliser la balise (code) wink

Dernière modification par mr_pouit (Le 30/04/2007, à 19:25)

Hors ligne

#2 Le 30/04/2007, à 19:18

TatSou-Max

Re : comparaison de 2 entier avec c

Bonjour,

Si tu pouvais résumer en quelques lignes ce que fait ton programme et surtout comment il le fait... merci

Parce que je pense que ton problème n'est pas un problème de programmation mais plutôt un problème d'algorithme.

Hors ligne

#3 Le 30/04/2007, à 19:21

TatSou-Max

Re : comparaison de 2 entier avec c

As-tu essayé en mettant:

#define LMAX 35940 //nb ligne

?

Hors ligne

#4 Le 30/04/2007, à 19:33

slapierre

Re : comparaison de 2 entier avec c

king2009 à écrit :
je veus (sic) une solution

<troll>
Si tu veux de l'aide, premièrement change de ton, ensuite sache qu'il existe des  forums spécialisés en programmation. Commence par formatter (indentation) le code, il est illisible...
</troll>

> Quand tu exécutes le code, reçois-tu une erreur de segmentation?

Simon


"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton

Hors ligne