problem pour un crack - C - Programmation
Marsh Posté le 08-04-2006 à 13:28:07
topic en double !
pour les balises code c'est pas dur :
Tu édites ton message et tu mets [ code ] avant et [ / code ] à la fin de ta portion de code (sans les espaces entre les [ ] )
Marsh Posté le 08-04-2006 à 13:30:30
keep_school a écrit :
|
Pas du C. C++, c'est à coté.
Marsh Posté le 08-04-2006 à 13:39:52
tous le monde critiqque mon sujet, mais je suis debutant
mais j'ai pas une seule réponse qui me dit pk ça marche pas
Marsh Posté le 08-04-2006 à 13:56:02
keep_school a écrit : tous le monde critiqque mon sujet, mais je suis debutant |
Commence par choisir si tu fais du C ou du C++, ce sera plus clair...
Supposons en C. De nombreux problèmes :
#include <fstream> #include <malloc.h> |
n'existent pas en C.
int argc, char* argv[] |
ne sont pas utilisés.
Code :
|
Marsh Posté le 08-04-2006 à 15:34:58
Taz a écrit : while(fgets( ... ) != NULL) d'abord |
je lui ai déjà dit dans le précédent topic, de même pour la taille des lignes, de "rt", il n'en a pas tenu compte ...
Le source du programme a-t-il l'extension c ou cpp ?
Ton problème vient sans doute qu'il voit des virgules au lieu des points décimaux.
Marsh Posté le 08-04-2006 à 16:01:40
je le compile avec visual studio net, mais je le fait principalement en C
pk ? le compilateur ne comprend pas le mix des deux ?
Marsh Posté le 08-04-2006 à 16:03:57
Le problème est que tu dois choisir ton langage, tu fais du mauvais C et du mauvais C++, donc je choisis le C car tout ton prog est fait en C.
PS je t'ai donné le noeud du problème, essaye de tenir compte de ce qu'on t'a dit.
Marsh Posté le 08-04-2006 à 16:11:05
keep_school a écrit : je le compile avec visual studio net, mais je le fait principalement en C |
Il n'existe pas de 'mix des 2'. Le code il va êre compilé soit en C soit en C++, pas dans un 'mix des deux'.
Franchement, tu t'imagines quoi ? Une IA qui va faire le tri instruction par instruction ?
Marsh Posté le 09-04-2006 à 12:53:15
keep_school a écrit : #define PATH "C:\\MESURE1.txt" // Mets l'emplacement de ton fichier contenant les valeurs |
C'est pas bien de travailler directement sous "C:\". C'est un coup à polluer sa machine de fichiers de travail qui vont se mélanger avec les fichiers du système. Ensuite, pour nettoyer...
Pourquoi ne pas bosser dans ton propre répertoire "C:\Documents and Settings\keep_school\Mes documents" ou alors au pire dans "C:\temp" qui est fait pour ça ?
Bon, ça n'a rien à voir avec le schmiliblik mais il fallait que ce soit dit...
Marsh Posté le 08-04-2006 à 13:22:13
voilà, je dois acquérir un fichier de ce type :
79,74 -2,15 6,76 1,70
83,46 4,71 3,79 4,33
91,36 2,73 5,68 5,61
92,60 1,24 6,33 11,44
101,58 2,48 3,30 19,94
102,94 -4,47 6,97 22,74
107,29 4,27 5,77 31,30
116,45 4,00 5,51 32,54
126,33 1,85 3,65 33,27
135,14 4,21 6,61 39,13
135,88 0,11 4,53 40,97
140,04 3,22 3,86 46,87
143,63 3,22 3,96 51,29
143,63 -1,60 3,19 55,35
149,36 -1,82 5,35 61,55
154,28 3,23 4,29 68,92
154,86 0,71 3,86 77,24
157,25 4,01 6,82 81,54
161,72 3,21 6,77 89,73
171,27 -3,87 3,92 90,50
180,74 -1,30 6,06 94,30
189,06 -1,11 6,79 97,43
196,57 -0,57 3,34 105,24
196,68 3,45 6,98 106,13
199,86 4,16 4,61 106,37
208,05 -0,07 5,30 107,10
214,27 3,87 6,72 112,01
223,34 -3,35 6,57 121,74
229,04 -3,00 4,61 127,55
236,42 3,89 4,30 128,47
240,01 3,62 5,21 131,62
249,77 0,08 3,47 132,55
257,30 1,02 4,56 141,02
262,94 -0,15 3,94 145,55
272,81 -2,27 5,82 151,94
dans un tableau de dimension 2 .
JE PROGRAMME EN VISUAL STUDIO NET
voici le pgm que j'utilise :
#include <fstream>
#include <malloc.h>
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// strtok() -> decoupage de chaine de caracteres
// atoi -> convertir une chaine de caractere en un entier
// Nombre de colonne maximum du tableau
#define MAX_CHAR_PER_LINE 12 // Nombre de caratere maximum par ligne dans le fichier lu : 3*400+400+1 = 1601 mais j'ai mis 1650 pour arrondir
#define SEP " " // Séparateur utilisé dans le fichier
#define PATH "C:\\MESURE1.txt" // Mets l'emplacement de ton fichier contenant les valeurs
int main(int argc, char* argv[])
{
FILE* m_File;
int i = 0;
int j;
float Tab[4000][5];
char szbuff[MAX_CHAR_PER_LINE];
char* token;
// On initialise le tableau a -1
for(i=0;i<4000;i++)
{
for(j=0;j<5;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(PATH,"rt";
// On vérifie qu'il n'y ai pas eu d'erreur pendant l'ouverture du fichier
if(!m_File) return 1;
// On lit le fichier ligne a ligne et on stocke les valeurs dans un tableau d'entier
// La boucle while a l'avantage de permettre la lecture d'un fichier sans connaitre son nombre de ligne exact
// et nous évite donc de faire bugger le programme
// Le "feof" veut "End Of File". On lit donc jusuqu'à la fin du fichier
while(!feof(m_File) && i < 4000)
{
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 (" "
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 < 5)
{
// 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 affiche le tableau pour etre sur que tout s'est bien passé... Le \t correspond au caractere tabulation
// Le 0.2f indique qu'on doit afficher un float avec 2 decimales après la virugle
for(int x=0;x<i;x++)
{
for(int y=0;y<j;y++)
{
printf("%0.2f\t",Tab[x][y]);
}
printf("\n";
}
return 0;
}
mais le pgm defile et le compilateur me met ça à la fin :
'site.exe': Loaded 'C:\Documents and Settings\lefrancois\Mes documents\C++\site\Debug\site.exe', Symbols loaded.
'site.exe': Loaded 'C:\WINDOWS\SYSTEM32\ntdll.dll', No symbols loaded.
'site.exe': Loaded 'C:\WINDOWS\SYSTEM32\kernel32.dll', No symbols loaded.
The program '[204] site.exe: Native' has exited with code 0 (0x0).
merci de m'aider, je suis en C/C++