Boucle en c

cisco -  
 cisco -
Bonjour,
je suis un etudiant et j ai commence a prendre le langage c alors j ai fait un petit programme mais j ai un prob au niveau d un boucle.

voila le code:
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#define PI 1
#define dim_tab 10
main() 
{
       typedef struct polynome
       {
               int puiss;
               int coef;
       } poly;
       poly T[dim_tab];
       typedef struct deriv_poly
       {
               int pc;
               int ps;
       }D_poly;
       D_poly T1[dim_tab];
       int degre;
       int lim_coef;
       int i,j;
       debut ://========etiquete goto=============
       printf("entrer la degre de votre fonction\n");
       scanf("%d",&degre);
        //============REMPLIRE LA STRUCTUR===================
       for(i=0;i<=degre;i++)
       {
                            
                            printf("entrer le coef\n");
                            scanf("%d",&T[i].coef);  
                            printf("entrer la puissance\n");
                            scanf("%d",&T[i].puiss);
       }
       
       //=============l'affichage de notre fonction=======================
        printf("votre fonction est f(x): %dX^%d",T[0].coef,T[0].puiss);
       for(i=1;i<=degre;i++)
       {
                             if(T[i].coef>0 && T[i].puiss>0 && T[i].puiss!=1)
                            {
                                printf("+%dX^%d",T[i].coef,T[i].puiss);
                            }
                              else if (T[i].coef<0 && T[i].puiss>0 && T[i].puiss!=1)
                            {
                                printf("%dX^%d\n",T[i].coef,T[i].puiss);
                            }
                            else if (T[i].coef>0 && T[i].puiss==0)
                            {
                                 printf ("+%d",T[i].coef);
                            }
                            else if (T[i].coef<0 && T[i].puiss==0) 
                            {
                                 printf ("%d",T[i].coef);
                            }
                            else if (T[i].coef>0 && T[i].puiss==1)
                            {
                                 printf ("+%dX",T[i].coef);
                            }
                            else if (T[i].coef<0 && T[i].puiss==1) 
                            {
                                 printf ("%dX",T[i].coef);
                            } 
       }             
       //=============TEST POUR `LA PREMIERE CASE DU TABLEAU===============
       printf ("\ncoef  1 est : %d\n",T[0].coef);
       printf ("puiss 1 est : %d\n",T[0].puiss);
       if (T[0].puiss==degre && T[0].coef>0)
       {
        //===========CALCULE DE LA LIMITE QUAND X TANVERS PLUS L'INFINI============
                             lim_coef = PI;
                             if (lim_coef==1)
                             printf("la limite de votre fonction est : %d donc c'est plus l'infini\n",lim_coef);
       }
       else 
      { 
            printf ("verifiez s.v.p la valeur de degre\n");
       goto debut;
       }//retour au debut
       //========================derive de notre fonction====================
       for(i=0;i<=degre;i++)
       {
                            T1[i].pc = (T[i].puiss)*(T[i].coef);
                            T1[i].ps = (T[i].puiss)- 1;

       }
       //=========================AFFICHAGE DE LA DERIVE========================
       
                            printf("voila la derive de votre fonction f'(x):%dX^%d",T1[0].pc,T1[0].ps);
                        for(i=1;i<=degre;i++) 
                        {   
                            if(T1[i].pc>0 )
                            {
                            printf("+%dX^%d",T1[i].pc,T1[i].ps);
                            }
                            else if (T1[i].pc<0)
                            {
                            printf("%dX^%d",T1[i].pc,T1[i].ps);
                            }
                        }
                            
       system (" \npause");
       return 0;
}

je veux que l utilisateur ne saisi pas la puissance juste le coef et la puissance d une manier automatique dans une boucle merci de votre aide.

8 réponses

Arya Dröttningu Messages postés 581 Date d'inscription   Statut Membre Dernière intervention   157
 
'lut

J'ai survolé ton prog et une première chose : essaye d'éviter les GOTO, c'est moche !
0
cisco
 
explique ??
svp
0
Arya Dröttningu Messages postés 581 Date d'inscription   Statut Membre Dernière intervention   157
 
moi quand j'ai appris à programmer on nous a dit "surtout n'utilisez pas de goto, c'est de la programmation spaghetti".
Bon dans ton code tu n'en utilise qu'un mais après ça devient compliqué à suivre si tu en utilise plus c'est pourquoi il faut essayer de les éviter
0
cisco
 
merci pour votre reponse concernant la boucle.
0
Arya Dröttningu Messages postés 581 Date d'inscription   Statut Membre Dernière intervention   157
 
après je comprends pas trop ce que tu veux faire
0
cisco
 
si tu compile mn programme tu va comprendre parce que au debut du prog il demande au user de saisir la plus grande puiss de sa fonction polynomiale par ex il va saisir 4 donc apres il va saisir le coef apres la puissance tt ca vont stocker dans un tableau de struture donc si on remarque dans la fonction polynomial ke la puissance se deminue (aX^n+bX^n-1+.......+c)donc n est la puissance d une manier automatique apres chaque plus elle va perdre 1 .... voilaaaaaaa
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arya Dröttningu Messages postés 581 Date d'inscription   Statut Membre Dernière intervention   157
 
Essaye ça pour voir


#include<stdlib.h>
#include<stdio.h>
#define PI 1
#define dim_tab 10
main() 
{
       typedef struct polynome
       {
               int puiss;
               int coef;
       } poly;
       
       poly T[dim_tab];
       
       
       
       typedef struct deriv_poly
       {
               int pc;
               int ps;
       }D_poly;
       
       
       D_poly T1[dim_tab];
       
       
       int degre;
       int lim_coef;
       int i,j;
       debut ://========etiquete goto=============
       printf("entrer le degre de votre fonction\n");
       scanf("%d",&degre);
       T[0].puiss = degre ;
        //============REMPLIRE LA STRUCTUR===================
       for(i=0;i<=degre;i++)
       {
                            
                            printf("entrer le coef pour le degre %d\n", T[i].puiss);
                            scanf("%d",&T[i].coef);  
                            T[i+1].puiss = T[i].puiss -1 ;
       }
       
       //=============l'affichage de notre fonction=======================
        printf("votre fonction est f(x): %dX^%d",T[0].coef,T[0].puiss);
       for(i=1;i<=degre;i++)
       {
                             if(T[i].coef>0 && T[i].puiss>0 && T[i].puiss!=1)
                            {
                                printf("+%dX^%d",T[i].coef,T[i].puiss);
                            }
                              else if (T[i].coef<0 && T[i].puiss>0 && T[i].puiss!=1)
                            {
                                printf("%dX^%d\n",T[i].coef,T[i].puiss);
                            }
                            else if (T[i].coef>0 && T[i].puiss==0)
                            {
                                 printf ("+%d",T[i].coef);
                            }
                            else if (T[i].coef<0 && T[i].puiss==0) 
                            {
                                 printf ("%d",T[i].coef);
                            }
                            else if (T[i].coef>0 && T[i].puiss==1)
                            {
                                 printf ("+%dX",T[i].coef);
                            }
                            else if (T[i].coef<0 && T[i].puiss==1) 
                            {
                                 printf ("%dX",T[i].coef);
                            } 
       }             
       //=============TEST POUR `LA PREMIERE CASE DU TABLEAU===============
       printf ("\ncoef  1 est : %d\n",T[0].coef);
       printf ("puiss 1 est : %d\n",T[0].puiss);
       if (T[0].puiss==degre && T[0].coef>0)
       {
        //===========CALCULE DE LA LIMITE QUAND X TANVERS PLUS L'INFINI============
                             lim_coef = PI;
                             if (lim_coef==1)
                             printf("la limite de votre fonction est : %d donc c'est plus l'infini\n",lim_coef);
       }
       else 
      { 
            printf ("verifiez s.v.p la valeur de degre\n");
       goto debut;
       }//retour au debut
       //========================derive de notre fonction====================
       for(i=0;i<=degre;i++)
       {
                            T1[i].pc = (T[i].puiss)*(T[i].coef);
                            T1[i].ps = (T[i].puiss)- 1;

       }
       //=========================AFFICHAGE DE LA DERIVE========================
       
                            printf("voila la derive de votre fonction f'(x):%dX^%d",T1[0].pc,T1[0].ps);
                        for(i=1;i<=degre;i++) 
                        {   
                            if(T1[i].pc>0 )
                            {
                            printf("+%dX^%d",T1[i].pc,T1[i].ps);
                            }
                            else if (T1[i].pc<0)
                            {
                            printf("%dX^%d",T1[i].pc,T1[i].ps);
                            }
                        }

       return 0;
}
0
cisco
 
ah oui ca marche tres bien merci pour votre aide.
a la prochaine.
0
Hey00
 
Salut,

J'en rajoute une couche : les goto c'est le mal. Tu te dis qu'un ça va, ça fait pas de mal, mais si ça fait du mal : ça te donne de mauvaises habitudes de programmation, et des qu'il y a deux ou trois goto, il devient extremement difficile de comprendre ton code, même pour toi au bout de quelque temps. Donc le goto, tu oublies, ça n'existe pas et tu n'en as jamais vu, d'accord ? :þ

Sinon continuons les conseils :
- pense à aérer ton code, ça le rend plus lisible ;
- pense à bien indenter ton code (je me doute qu'il a du y avoir des problème de formattage sur le forum, mais c'est bon de le rappeler).

Sinon amuse toi bien, le C, c'est le bien !
0
cisco
 
bonsoir ,
merci hey00 pour votre explication ainsi que les conseils.
0