J’ai besoin de con
Et stoker les valeurs dans un tableau Map[][]
Voici ce que j’ai réalisé :
Ça fonctionne sauf que le programme est long et ne calcul pas le nombre de chiffre en Largeur et en Hauteur.
bool read_number(FILE* fp, int* number)
{
char szWord[256];
int i = 0;
int b;
*number = 0.0;
naître le nombre de chiffre en Largeur et en Hauteur.
Et stoker les valeurs dans un tableau Map[][]
Voici ce que j’ai réalisé :
Ça fonctionne sauf que le programme est long et ne calcul pas le nombre de chiffre en Largeur et en Hauteur.
F0ra
Messages postés111Date d'inscriptionmardi 18 septembre 2007StatutMembreDernière intervention29 décembre 2008 19 janv. 2008 à 11:18
Tien, ça bug dans le forum!!!
Il y a du mélange dans l'air.
J'ai besoin de connaître le nombre de chiffre en Largeur et en Hauteur dans un fichier txt.
Et stoker les valeurs dans un tableau Map[][]
0 1 2 5 3 4 .... 1 2 5
1 1 5 2 2 6 .... 9 2 3
2 5 9 8 8 9 .... 0 1 4
....
2 5 2 3 8 6 .... 2 2 1
fstream fichier( nomFichier, ios::nocreate, filebuf::sh_read );
int index = 0;
while( !fichier.eof() )
{
int ligne = index % NbrMot;
int colonne = index / NbrMot;
fichier >> Map[ligne][colonne];
++index;
}
mezaya
Messages postés202Date d'inscriptiondimanche 18 mai 2003StatutMembreDernière intervention 6 mars 2010 19 janv. 2008 à 13:59
il faut inclure <fstream> et peut etre
#include // si nécessaire
#include <fstream>
le bout code fichier >> Map[ligne][colonne]; lit directement un entier écrit en mode texte et affecte la valeur dans le tableau. l'operateur ">>" lis le code texte en elevant les espaces, tabulations, saut de ligne automatiquement. ça marche pour toute les types de base :
fstream fichier;
float reel;
fichier >> reel; // on lit dans le fichier un reel en mode texte
// accepte le texte les fottants suivant : 0.1235 12 12.5 .25
Vous n’avez pas trouvé la réponse que vous recherchez ?
int index = 0;
while( fgetc(fp)!=EOF )
{
int ligne = index % NbrMot;
int colonne = index / NbrMot;
MAP[ligne][colonne]>>fgetc(fp);
index++;
}
il n'y a pas de bug, mais, il y a pas les bonne valeurs dans MAP de plus elle sont identique.
Dans mon code NbrMot correspondais à 63 pour la ligne et la colonne que mon programme ne calculait pas tout seul.
donc, je ne peux pas avoir les bonne la valeur de ligne et colonne
int ligne = index % NbrMot;
int colonne = index / NbrMot;
F0ra
Messages postés111Date d'inscriptionmardi 18 septembre 2007StatutMembreDernière intervention29 décembre 2008 19 janv. 2008 à 16:57
toujours le même problème avec ton code avec la ligne :
fstream fichier( nomFichier, ios::nocreate, filebuf::sh_read );
strcpy_s, Nocreate, sh_read undeclared identifier
avec:
#include
<stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <string.h>
#include <stdio.h>
#include
// si nécessaire
#include <fstream>
fstream fichier;
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 19 janv. 2008 à 20:07
Salut,
mezaya --> je doute kil programme en c++
luhtor --> si il est en mode release ca fonctionnera : int map[500][500];
Fora --> tu veux entrer des doubles dans un tableau deja alloue (non dynamiquement) sans savoir combien d'elements il y a . Ca ne marche pas.
j'ai 3 choses a te dire:
1- utilise un meilleur format de fichier qui te donne les dimensions de ta matrice
2- fixe toi un nombre MAX d'elements dans ta matrice ou utilise une matrice chainee (liste de liste)
3- utilise fgets (pour recuperer une ligne au complet) , puis double number = atof(chaine_de_caracteres_lues_avec_fgets) pour avoir ton nombre; le tout en verifiant a chaque iteration avec la valeur de feof(fp).
je suis heureux de faire partie d'une grande famille ...!
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 19 janv. 2008 à 21:10
Quelle différence y aurait il en release:
500*500*4 = 1000000
Pas question de mettre une telle quantité de mémoire sur la pile.
"3- utilise fgets (pour recuperer une ligne au complet) , puis double
number = atof(chaine_de_caracteres_lues_avec_fgets) pour avoir ton
nombre; le tout en verifiant a chaque iteration avec la valeur de
feof(fp)."
Imagine que ton fichier ai 10000 lignes. 10000 fgets + 10000 feof.
Lecture par bloc de plusieurs ko puis on navigue dans le buffer avec un pointeur.