Salut
j’ai essayé de compiler le code que tu a fait mais malheureusement ça n’a pas marché
je veux juste savoir ce que signifie cette ligne
Code:if (t[i]!=y) m=m+t[i];
Version imprimable
Salut
j’ai essayé de compiler le code que tu a fait mais malheureusement ça n’a pas marché
je veux juste savoir ce que signifie cette ligne
Code:if (t[i]!=y) m=m+t[i];
Euh, pas mieux. Il ne te dit rien ton compilateur ?
J'ai essayé de corriger, mais c'est le cirque avec les blocs... Toi seul sait ce que te voulais faire. Je te conseille d'utiliser systématiquement les blocs {} dans les structures de code (if etc.).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 Project : Forums Compiler : GNU GCC Compiler (called directly) Directory : C:\dev\forums\ -------------------------------------------------------------------------------- Switching to target: default Compiling: main.c main.c:5: warning: function declaration isn't a prototype main.c:5: warning: return type of 'main' is not `int' main.c: In function `main': main.c:11: error: syntax error before "if" main.c:13: error: syntax error before ')' token main.c:22: error: syntax error before "else" main.c:22: error: `n' undeclared (first use in this function) main.c:22: error: (Each undeclared identifier is reported only once main.c:22: error: for each function it appears in.) main.c:22: error: syntax error before ')' token main.c:6: warning: unused variable `b' main.c:6: warning: unused variable `y' main.c:8: warning: unused variable `v' main.c:13: warning: statement with no effect main.c: At top level: main.c:24: error: syntax error before "if" main.c:28: warning: type defaults to `int' in declaration of `c' main.c:28: error: `m' undeclared here (not in a function) main.c:28: error: `b' undeclared here (not in a function) main.c:28: error: initializer element is not constant main.c:28: warning: data definition has no type or storage class main.c:29: error: syntax error before string constant main.c:29: warning: type defaults to `int' in declaration of `printf' main.c:29: warning: function declaration isn't a prototype main.c:29: error: conflicting types for 'printf' main.c:29: note: a parameter list with an ellipsis can't match an empty parameter name list declaration main.c:29: error: conflicting types for 'printf' main.c:29: note: a parameter list with an ellipsis can't match an empty parameter name list declaration main.c:29: warning: data definition has no type or storage class Process terminated with status 1 (0 minutes, 1 seconds) 16 errors, 11 warnings
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 /* -ed- presentation deplorable. Reindentation... */ # include<stdio.h> #include <math.h> /* -ed- void main() main() retourne int. Toujours. Si une fonction n'a pas de parametres, on le précise avec (void). */ int main (void) { int i; char t[10], m = ' ', b = ' ', p = ' ', y = 'e'; int d, k, bool = 0; float v, c; for (i = 0; i <= 10; i++) if (t[i] == '-') { bool = 1; /* -ed- manquait un ';'. */ if (t[i] != y) m = m + t[i] /*} -ed- en trop ? */ ; else if (t[i + 1] == '-') { for (k = i + 1; k <= 10; k++) p = p + t[k]; if (bool == 1) /* nbre reele eleve a la puissance nbre negative */ c = pow (m, p); /* nbre positif eleve a la puissance nb negative*/ else { double v, m, p; v = pow (m, p); printf ("v =%f", v); } /* ; -ed- : inutile */ else { for (d = i + 1; d <= n; d++) b = b + t[d]; } /* ; -ed- : inutile */ if (bool == 0) /* nbre positif eleve a la puissance nbre positif */ /* nbre negative eleve a la puissance nbre positif*/ else { double c, m, b; c = pow (m, b); printf ("c =%f", c); } if (i == 10) printf ("m =%s", m); } }
alors ..si la valeur de t[i] est differente de 'e'(j'ai affecter e à y)alors je vais construire une chaine de caractere et ..donc j'abouti la parti entiére de nombre ..et apres le 'e' c'est la partie puissance :roll: j'espere que l'explication est clair
à vrai dire je ne sais si ça marche comme ça sur borland++ mais d’après ce que je sais la concaténation de caractères ne ce fait pas de cette manière.
je te propose de déclarer un autre tableau et y copier le premier caractère par caractère jusqu’à ce que tu atteints ‘e’ puis utilise atof() (dans stdlib.h)pour retourner sa valeur vers un float ainsi tu obtient la partie entière
..oui mais par exemple j'ai un tableau t1 qui contient les valeurs suivants :
2,3,4,5,e,-,4..l'operation est 2345*(10puissance -4)==0.2345
qd je recopies 2345 dans t2 .....et apres ...comment je peux savoir la puissance..(10puissance -4)....tu peux m'eclairer un peu;)
je veux savoir comment tu as fait pour copier la première partie (code)
car si tu a utilisé une boucle for alors tu as utilisé sûrement "break" dans ce cas le compteur garde toujours l'indice de la case de 'e' donc il suffit de vérifier si cette dernière contient 'e' pour continuer
la premiére partie j'ai un tableau de char :
1/je construi une autre chaine (k)de char sauf le e''
2/si je rencontre un'e'je teste la valeur apres le 'e's'il ya un '-' donc donc je continue construi une autre chaine(y) (la puissance)et je fais valeur =k puissance -y
3/s'il ya pas le'-' je fais valeur=k puissance y
tu n’as pas besoin de traiter les deux cas positif ou négatif car atof() s’encharge voila un code qui va bien avec ce que tu viens de décrire
si tu n’as pas comprit quelque chose, je suis là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 #include<stdio.h> #include <stdlib.h> #include<string.h> #include<math.h> int main() { double a=0,b=0; int i,j; char t1[10]="2345e-4",t2[10],t3[10]; for(i=0;i<strlen(t1);i++) { if(t1[i]!='e') { t2[i]=t1[i]; } else { break;//si t[i]='e' } } a=atof(t2);//convertir t2 en sa valeur if(t1[i]=='e')//verifier s'il y un exposant { for(j=i+1;j<strlen(t1);j++)//si oui on commence à partir de la case qui suit celle de 'e' { t3[j-(i+1)]=t1[j];//changement d'indice pour remplir t3 à partir du début } b=atof(t3);//convertir t3 en sa valeur a=a*pow(10,b);//conversion finale } printf("%f\n",a); return 0; }
tres joli ton programme simple et bien rediger.......:king: mais j'ai des petites soucis :
strlen(t1) pour calculer la taille det1
je peux pas faire void main() pas int main() et j'utilise pas return0
quand je fais atof (t2) il me rasemble les char comme un nombre!! c'est marrant
et grand merci
de rien, c’était un plaisir pour moi