[C] ah la la .... comment chercher la complication ... !

ah la la .... comment chercher la complication ... ! [C] - C - Programmation

Marsh Posté le 07-10-2004 à 20:55:51    

Bonjour a tous !
 
je vous explique mon probleme :
 
tout d abord le sujet qui a été donné :
"Ecrire un programme C permettant de claculer x^y avec x et y entiers positifs.
 a/ en utilisant une multiplication
 b/ en utilisant que l'addition"
 
Bon déja la premiere partie a été reussi sans probleme, d ailleur je vous donne ce que j ai fait :
 

Code :
  1. #include <stdio.h>
  2. int main(void){
  3. float x;
  4. float y;
  5. float a;
  6. float b;
  7. float r;
  8. printf("\nx?" );
  9. scanf("%f",&x);
  10. printf("\ny?" );
  11. scanf("%f",&y);
  12. r=1;
  13. for(b=1;b<=y;b++){
  14.     r=r*x;
  15. printf("%f puissance %f = %f",x,y,r);
  16.    
  17. }


 
mais voila que pour la deuxieme question je blocke ...Il me semble qu il faudrait faire une imbrication de deux boucles "for", mais apres de nombreux essais foireux, je me lance a l ecriture de ce message ... :D
 
je precise que c pour un cours de Base de Programmation, donc les boucles sont le max de ce qu on doit utiliser ... (pas de fonctions), en fait dans le meme style qu au dessus ...
 
pouvez vous m eclaircir ?
 
 :hello:  
 
merci d avance !

Reply

Marsh Posté le 07-10-2004 à 20:55:51   

Reply

Marsh Posté le 07-10-2004 à 20:59:41    

# printf("\nx?" );
# scanf("%f",&x);
 
 
-->
 
printf("x? " );
fflush(stdout);
scanf("%f",&x);
 
 
 
 
du reste tu prends ton cours et tu vois
 
 
for(INIT; TEST; POSTACTION)
  INSTRUCTION;
 
INSTRUCTION pouvant évidemment être une expression composée, un bloc
 
donc à la place tu mets un for
 
for( ... )
{
  for( ... )
  {  
  }
}

Reply

Marsh Posté le 07-10-2004 à 21:02:13    

Taz a écrit :

# printf("\nx?" );
# scanf("%f",&x);
 
 
-->
 
printf("x? " );
fflush(stdout);
scanf("%f",&x);
 
 
 
 
du reste tu prends ton cours et tu vois
 
 
for(INIT; TEST; POSTACTION)
  INSTRUCTION;
 
INSTRUCTION pouvant évidemment être une expression composée, un bloc
 
donc à la place tu mets un for
 
for( ... )
{
  for( ... )
  {  
  }
}


 
ce n est pas du tout un probleme de syntaxe, mais plutot un probleme de raisonnement ...
 
si vous voulez je vous mlontre ce que j ai fait mais qui ne marche pas ... :
 

Code :
  1. float x;
  2. float y;
  3. float a;
  4. float b;
  5. float r;
  6. printf("\nx?" );
  7. scanf("%f",&x);
  8. printf("\ny?" );
  9. scanf("%f",&y);
  10. for(b=1;b<=y;b++){
  11.     for(a=1;a<=x;a++){
  12.         r=r+x;
  13.     }
  14. }
  15. printf("%f puissance %f = %f",x,y,r);

Reply

Marsh Posté le 07-10-2004 à 21:05:55    

(1) faudrait faire une fonction)
2) applique le premier conseil que je t'ai donné.
3) c'est donc de l'algo et ça n'a rien à voir avec le C. prends un bout de papier et quand ça marchera sur papier, écris un programme

Reply

Marsh Posté le 07-10-2004 à 21:08:48    

1/ ce ne st pas possible
2/ le premier conseil ne serait pas recommandé par mon prof qui tiens absolumentà avoir cette entete
3/ alors a ce moment la parlons algo car je pense que le probleme vient de la

Reply

Marsh Posté le 07-10-2004 à 21:10:25    

ne viens plus demander conseil alors ..., quand tu comprendras pas pourquoi ça saute 1 scanf sur 2, t'iras voir ton prof.
 
3) oui hé ho, t'as quel âge ? on va quand même pas te prendre par la main pour faire n multiplications !

Reply

Marsh Posté le 07-10-2004 à 21:12:51    

Ne le prends pas mal ... :(
 
il n y a pas de scanf qui saute dans mon cas ...
 
et puis il me semble que le but d un forum c l entraide, car pour entende une réponse qui me dit va voir ton cours, ca devient completement HS ...

Reply

Marsh Posté le 07-10-2004 à 21:14:01    

lis la charte :sarcastic: ...

Reply

Marsh Posté le 07-10-2004 à 21:14:11    

bah ouais mais bon, faut pas abuser quand même : il te faut moins de temps pour redécouvrir comment élever un nombre à la puissance N que pour lire ce sujet.

Reply

Marsh Posté le 07-10-2004 à 21:16:20    

Je sais lire merci :
 
[0C] On ne fait pas le boulot à votre place.  
 
Les demandes du style "vous pouvez faire un programme faisant [...] pour moi ?" sont assez mal vues et n'obtiennent que très rarement de réponses.  
Les offres d'emploi et recrutements (même non rémunérés) ont plutôt leur place sur Emploi & Études.  
 
 
[0D] De la même manière, les demandes de résolutions d'exercices ne seront pas acceptées  
 
Du moins, s'il s'agit d'une demande de solution toute faite, sans effort manifeste du côté du demandeur. Cette décision a été prise étant donné le nombre croissant de ce type de demandes lors des périodes de reprise des cours ou d'approche des périodes d'examens.  
Merci aux membres du forum de ne pas donner des résolutions d'exercice lorsqu'il est clair que le demandeur n'a rien fait de son côté  
 
 
Je n ai pas demandé de solution, j ai demandé d ou pouvait venir le probleme ... donc je ne suis pas du tout hors Charte. Apperemment, ce n est pas vu comme ca ...


Message édité par ze nerdz le 07-10-2004 à 21:17:10
Reply

Marsh Posté le 07-10-2004 à 21:16:20   

Reply

Marsh Posté le 07-10-2004 à 21:16:59    

bordel l'elevation à la puissance N on voit ca au COLLEGE ....

Reply

Marsh Posté le 07-10-2004 à 21:18:52    

Je demande a Joel F de bien vouloir relire le sujet du probleme. JE pense que tu comprendra tres bien que l elevationa la puissante n est pas le probleme qui m empeche de continuer, puisque j ai reussi a faire le programme par la multiplication.

Reply

Marsh Posté le 07-10-2004 à 21:19:00    

Joel F a écrit :

bordel l'elevation à la puissance N on voit ca au COLLEGE ....

non, primaire, quand on apprend le système métrique avec les histoires d'aires et de volumes

Reply

Marsh Posté le 07-10-2004 à 21:21:23    

Bon je vois que c est une conspiration eheh :D
 
Non mais sérieusement, si ce probleme vous semble trop facile pour donner une moindre piste, alors changez de topic, parce que sinon plus personne va vouloir donner un avis ... :D

Reply

Marsh Posté le 07-10-2004 à 21:21:44    

papier .. crayon .. exemples .. compréhension ! .. réfléchir ! .. aïe ..
et si après avoir écrit la somme de 3^2 puis 3^3 , tu vois toujours pas, arrête l'info !
 
( merde, je me "tazifie" .. :D )


Message édité par Mr Mala le 07-10-2004 à 21:22:20
Reply

Marsh Posté le 07-10-2004 à 21:24:03    

Mr Mala a écrit :

papier .. crayon .. exemples .. compréhension ! .. réfléchir ! .. aïe ..
et si après avoir écrit la somme de 3^2 puis 3^3 , tu vois toujours pas, arrête l'info !
 
( merde, je me "tazifie" .. :D )


 
raahh ils se regroupent !!! :D
 
EN fait sur le papier ca me parait simple evidemment, mais du coup la traduction en C pose un serieux probleme pour cette question :(
 
Et puis je ne suis pas de mauvaise foi, puisque j ai reussi le premier, en l aillant fais de la meme maniere sur le papier (on a eu 3h de TD pour ca lol) :D
 
:hello:

Reply

Marsh Posté le 07-10-2004 à 21:25:39    

si c'est pas clair sur le papier, c'est pas clair dans ta tête, ça risque pas de l'être sur l'écran.
 
mon ton algo si t'y tiens

Reply

Marsh Posté le 07-10-2004 à 21:34:00    

ze nerdz a écrit :

raahh ils se regroupent !!! :D
 
EN fait sur le papier ca me parait simple evidemment


Lies, si ca te parait simple sur le papier et que t'arrives pas a le coder c'est que ta version papier marche pas :)  
 
Je te donne un indice: il te faut une valeur temporaire, je vois pas comment faire sans


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Reply

Marsh Posté le 07-10-2004 à 21:35:08    

commence pas à le stresser avec des détails d'implémentation alors qu'il a pas encore l'algo

Reply

Marsh Posté le 07-10-2004 à 21:36:59    

Il est vrai, et je m en était rendu compte, l algo ne passe pas sur le papier.
J ai pourtant utilisé des variables intermédiaires, deux boucles for imbriquée, masi il doit y avoir une erreur qq part que je ne voi pas ...
 
Donc merci pour vos avis !

Reply

Marsh Posté le 07-10-2004 à 21:40:10    

y a pas besoin de boucle imbriqué pour faire une puissance bordel :o

Reply

Marsh Posté le 07-10-2004 à 21:41:59    

Bon j essaye de reprendre depuis le début :
 
x^n = x^(n-1) * x =  
x^(n-1)+x^(n-1)+x^(n-1)+ ...  le tout x fois
 
jusque la je pense etre bien parti.
la premier décomposition, je l ai bien reussi pour la question a, mais la question b, je ne vois plus trop comment l interpreter ...:(

Reply

Marsh Posté le 07-10-2004 à 21:42:35    

c'est quoi cette addition ? elle se matérialise tout seule ?

Reply

Marsh Posté le 07-10-2004 à 21:43:16    

Taz a écrit :

y a pas besoin de boucle imbriqué pour faire une puissance bordel :o


je suis tout a fait d accord avec toi, c pour ca que la premiere question est sans difficulté, et se fiat avec une boucle "for". PAr contre la deuxieme question, ils demandent une deuxieme décomposition avec uniquement l addition, sans aucune multiplication ..et la je blocke

Reply

Marsh Posté le 07-10-2004 à 21:43:44    

Taz a écrit :

c'est quoi cette addition ? elle se matérialise tout seule ?


et bien il me semble qu il faut une boucle pour la mettre en place non ?

Reply

Marsh Posté le 07-10-2004 à 21:47:06    

oui, en itératif, une simple boucle suffit, mais ça n'explique toujours pas d'ou tu sors cette multiplication ...

Reply

Marsh Posté le 07-10-2004 à 21:48:11    

Taz a écrit :

y a pas besoin de boucle imbriqué pour faire une puissance bordel :o


heuuu je pense que si dans le cas de la puissance à coup d'additions
 
une boucle pour générer la puissance à partir de la multiplication
et une pour générer la multiplication à partir de l'addition
 
non?


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Reply

Marsh Posté le 07-10-2004 à 21:49:40    

non. c'est quoi ces conneries de réinventer la mutliplication ?
 
quand tu fais 2**2 tu fais 2x2, tu fais pas d'addition dans ta tête, je vois pas pourquoi en 2004 tu ferais un programmes qui sait faire des des additions ...

Reply

Marsh Posté le 07-10-2004 à 21:50:11    

Masklinn a écrit :

heuuu je pense que si dans le cas de la puissance à coup d'additions
 
une boucle pour générer la puissance à partir de la multiplication
et une pour générer la multiplication à partir de l'addition
 
non?


oui voila c exactement ce que je pense. Je pense que Taz n a pas compris qu ils demandaient expres de se compliquer en décomposant completement, en n autorisant que l addition, car evidemment, si tu regarde le premier post, le programme est deja terminé, Mais c du scolaire qu ils veulent, pas de l efficace  :pt1cable:

Reply

Marsh Posté le 07-10-2004 à 21:51:33    

Taz a écrit :

non. c'est quoi ces conneries de réinventer la mutliplication ?
 
quand tu fais 2**2 tu fais 2x2, tu fais pas d'addition dans ta tête, je vois pas pourquoi en 2004 tu ferais un programmes qui sait faire des des additions ...


que veux tu, je n ai pas le choix, un prof demande ca, a mon avis c pour bien comprendre ce qu on fait ... pourkoi d apres toi j ai appelé le  topic  : "comment chercher la complication"
 :D   :pt1cable:  
 :hello:

Reply

Marsh Posté le 07-10-2004 à 21:52:33    

et alors ? dans ce cas là c'est encore plus facile : le programme est clairement décomposable. tu écris ta puissance en utilisant la multiplication. tu valide. et ensuite tu remplaces tes multiplication par des additions.

Reply

Marsh Posté le 07-10-2004 à 21:53:49    

ra la la je ne vois pas qu est ce qui cloche dans mon raisonnement :  

Code :
  1. int x,y,r;
  2. demander("x",x);
  3. demander("y",y);
  4. for(b=1;b<=y;b++){
  5.     for(a=1;a<=x;a++){
  6.         r=r+x;
  7.     } 
  8. }


 
c de l algo je precise

Reply

Marsh Posté le 07-10-2004 à 21:54:25    

Taz a écrit :

et alors ? dans ce cas là c'est encore plus facile : le programme est clairement décomposable. tu écris ta puissance en utilisant la multiplication. tu valide. et ensuite tu remplaces tes multiplication par des additions.


ben oui [:spamafote]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Reply

Marsh Posté le 07-10-2004 à 21:54:54    

Taz a écrit :

et alors ? dans ce cas là c'est encore plus facile : le programme est clairement décomposable. tu écris ta puissance en utilisant la multiplication. tu valide. et ensuite tu remplaces tes multiplication par des additions.


Et bien en fait c justement le remplacement de la multiplication par des additions qui pose probleme, car il faut une autre boucle, puisqu on ne connait ni x ni y, il est demandé a l utilisateur ... :(  :pt1cable:

Reply

Marsh Posté le 07-10-2004 à 21:56:56    

non, c'est l'étape la plus simple. c'est juste pas clair dans ta tête. fait comme on te dis. fais un truc qui marche avec des multiplications qui fonctionnent d'abord.

Reply

Marsh Posté le 07-10-2004 à 21:58:49    

eheh, encore une fois tu aurais du m écouter depuis le début : lis le premier post : le programme avec les multiplication est déja terminé et il marche !
 
et je sais egalement faire une boucle qui "décompose" un produit en somme, par contre, je n arrive pas a l imbriquer dans la boucle for !

Reply

Marsh Posté le 07-10-2004 à 21:59:40    

ah bon ? ben il est où alors ?

Reply

Marsh Posté le 07-10-2004 à 22:00:35    

ze nerdz a écrit :

ra la la je ne vois pas qu est ce qui cloche dans mon raisonnement :  

Code :
  1. int x,y,r;
  2. demander("x",x);
  3. demander("y",y);
  4. for(b=1;b<=y;b++){
  5.     for(a=1;a<=x;a++){
  6.         r=r+x;
  7.     } 
  8. }


 
c de l algo je precise


déroule la boucle pour x=2 et y=8
 
b=1
a=1
r=r+2=2
a=2
r=r+2=4
b=2
a=1
r=r+2=6
a=2
r=r+2=8
// on en est à 2^2=8, pas classe
b=3
a=1
r=r+2=10
a=2
r=r+2=12
// 2^3 = 12 yay
b=4
a=1
r=r+2=14
a=2
r=r+2=16
// 2^4 = 16, ca marche!
b=5
a=1
r=r+2=18
a=2
r=r+2=20
// 2^5 = 20?? hum hum
 
en fait, tu génères une multiplication pour le premier terme, mais c'est tout, tu ne multiplies rien du tout tu fais des additions en chaine, tu fais non pas x^y mais x*x*y (a vue d'oeuil)


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
Reply

Marsh Posté le 07-10-2004 à 22:01:40    

ze nerdz a écrit :

eheh, encore une fois tu aurais du m écouter depuis le début : lis le premier post : le programme avec les multiplication est déja terminé et il marche !
 
et je sais egalement faire une boucle qui "décompose" un produit en somme, par contre, je n arrive pas a l imbriquer dans la boucle for !

comme le dit Taz, si tu sais faire des multiplications avec des additions, et si tu sais faire des puissances avec des multiplications, y a pas de raiso que tu saches pas faire des puissances avec des additions

Reply

Marsh Posté le 07-10-2004 à 22:03:42    

Taz a écrit :

ah bon ? ben il est où alors ?


C la zone code du premier post

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed