Merci beaucoup pour cette réponse très détaillée, tu m'a enlevé plusieurs points sombres...
Je vais travailler tout ca et je reviendrai. Merci encore
Version imprimable
Alors en fait, dans le code a ce moment là, ce n'est pas les C(j) qui sont entrés par l'utilisateur mais les B(i)
On utilise les B(i) pour faire les C(j) >> (j) car il y en a un par ligne
C(1)=B(1) * X(1) + B(2) * X(2) .......
X(1) premier bit de la première ligne, X(2) deuxième...
pareil pour la deuxième ligne etc
je vais travailler cela.
Quoi qu'il en soit, ton programme est tres interessant, il va beaucoup m'aider.
En fait, c'est moi qui ait fait une confusion de variable entre C(i) et res(i) dans mon programme initial, merci, ca m'a permi de m'en rendre compte
en réalité C(i) >>> B(i) entrés par l'utilisateur
res (i) >>> C(i) un pour chaque ligne correspondant a la somme des xibi.
salut
Voici une autre solution qui tient compte de toutes les lignes du fichier texte
Reste à forcer l'utilisateur de taper les C[i] et de vérifier si le fichier ne contient que des 0 et des 1Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 int main(void) { FILE *fp; char tampon[512]; char ligne_lue[512]; int nombre_de_ligne = 0; // Les C[i] sont sous forme de tableau mais ils pourraient être tapés par l'user int C[8] = {5,5,5,5,5,5,5,5}; int res[8]; // test l'existance du fichier texte if ((fp = fopen("fichiertest.txt","r")) == NULL) { printf("Impossible d'ouvir le fichier\n\n"); return 0; } else { // Calcule le nombre de lignes dans le fichier texte while(fgets(ligne_lue, sizeof(ligne_lue), fp) != NULL) { nombre_de_ligne++; } // Positionne le curseur au début du fichier fseek(fp,0,SEEK_SET); for (int i = 0 ; i < nombre_de_ligne ; i++) { // Lire les données mises en forme fscanf(fp,"%s",tampon); for (int j = 0 ; j < 8 ; j++) { // Calcul le résultat voulu if (tampon[j] == '1') res[i] += C[j]; } // Affiche le contenu du fichier printf("%s",tampon); // Affiche les résultats voulus printf(" ------> Résultat de la ligne %d = %d \n",(i+1),res[i]); } fclose(fp); printf("\n\n"); printf("\n\n"); } return 0; }
Bonne recherche :)
Merci bobmidou !! je vais compiler ca et chercher pour compléter et finir cette fonction de mon programme.
Je ne comprends pas, ca ne marche pas, ca me fait comme hier, ca me donne des gros entiers comme 20848262695
alors que j'ai mit comme suite 1,2,3,4,5,6,7,8...
et fichiertest.txt contient 10000001
00110000
00000111
salut
avec quel code tu dis ça marche pas le mien ?
chez moi ça marche (Visual C++)
voici le résultat après la suite 1,2,3,4,...
http://www.uqtr.ca/~salmi/resultat.jpg.png
Bonne continuation :)
Je comprends pas, avec ton dernier prgramme que tu as posté, ca ne me donne pas du tout ca, bon je vais bidouiller un peu pour trouver ce qui ne va pas.
Merci de ton aide, elle m'a été très utile :yaisse2:
Voila ce que j'obtiens moi , compilé sous Dev cpp
http://damree.yasir.neuf.fr/ecr.JPG
:cry:
c'est ce que j'obtiens avec ce code
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 #include <stdio.h> #include <stdlib.h> int main(void) { int i,j; FILE *fp; char tampon[512]; char ligne_lue[512]; int nombre_de_ligne = 0; // Les C[i] sont sous forme de tableau mais ils pourraient être tapés par l'user int C[8] = {1,2,3,4,5,6,7,8}; int res[8]; fp = fopen("fichiertest.txt","r"); // test l'existance du fichier texte if ((fp = fopen("fichiertest.txt","r")) == NULL) { printf("Impossible d'ouvir le fichier\n\n"); return 0; } else { // Calcule le nombre de lignes dans le fichier texte while(fgets(ligne_lue, sizeof(ligne_lue), fp) != NULL) { nombre_de_ligne++; } // Positionne le curseur au début du fichier fseek(fp,0,SEEK_SET); for ( i = 0 ; i < nombre_de_ligne ; i++) { // Lire les données mises en forme fscanf(fp,"%s",tampon); for ( j = 0 ; j < 8 ; j++) { // Calcul le résultat voulu if (tampon[j] == '1') res[i] += C[j]; } // Affiche le contenu du fichier printf("%s ",tampon); // Affiche les résultats voulus printf(" ------> Resultat de la ligne %d = %d \n",(i+1),res[i]); } fclose(fp); printf("\n\n"); printf("\n\n"); } system("PAUSE"); return 0; }
salut
désolé je n'ai jamais travaillé avec dev cpp
Alors il doit y avoir qq chose de différent entre VC++ et Dev
Bonne chance en tout cas
PS : n'oublie pas que le fichier ne doit pas dépasser 8 lignes si tu veux mettre plus tu changes le tableau res[nombre voulu]
c'tait juste un code simple mais on pourrait faire mieux
:)
Ahhhhhhhhhhhhhhhhhh j'ai enfin trouvééééééééééé
il fallait simplement réinitialiser res[i] à 0 juste apres le scanf avant d'entrer dans la seconde boucle, logique !
Merci à tous, j'ai achevé là une petite partie de mon futur programme mais une partie fondamentale, merci encore !
:yaisse2::mouarf:
Voila le bon code
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 #include <stdio.h> #include <stdlib.h> int main(void) { int i,j; FILE *fp; fp = fopen("texte_bin.txt","r"); calcul_de_c(i,j); return 0; } int calcul_de_c(int i,int j) { FILE *fp; char tampon[512]; char ligne_lue[512]; int nombre_de_ligne = 0; // Les C[i] sont sous forme de tableau mais ils pourraient être tapés par l'user int C[8] = {1,2,5,10,20,30,40,50}; int res[8]; // test l'existance du fichier texte if ((fp = fopen("texte_bin.txt","r")) == NULL) { printf("Impossible d'ouvir le fichier\n\n"); return 0; } else { // Calcule le nombre de lignes dans le fichier texte while(fgets(ligne_lue, sizeof(ligne_lue), fp) != NULL) { nombre_de_ligne++; } // Positionne le curseur au début du fichier fseek(fp,0,SEEK_SET); for ( i = 0 ; i < nombre_de_ligne ; i++) { // Lire les données mises en forme fscanf(fp,"%s",tampon); res[i]=0; for ( j = 0 ; j < 8 ; j++) { // Calcul le résultat voulu if (tampon[j] == '1') res[i] += C[j]; } // Affiche le contenu du fichier printf("%s",tampon); // Affiche les résultats voulus printf(" ------> C (%d) = %d \n",(i+1),res[i]); } fclose(fp); printf("\n\n"); printf("\n\n"); } system("PAUSE"); }