Partage
  • Partager sur Facebook
  • Partager sur Twitter

Résultat avec fonctions

Sujet résolu
    24 janvier 2020 à 11:57:21


    Bonjour, :-)

    J'étudie (non sans peine) les fonctions et vous fait part de mes recherches.

    Dans mes exercices, il y a souvent le même problème. Les retours et printf des fonctions ne sont pas affichés.

    Par exemple :

    ------------------------------------------------------------------------------------------------------------------------------------------

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    /************
    **'Enonce : Un programme qui décide quelle chaîne est la plus longue. L'utilisateur choisit
    * de les afficher avant en normal ou en majuscules.
    *******/
    
    /**Constantes et variables*/
    
    int i,j,k,rapport;
    char text1[], text2[],choix;
    char text1[]="Bonjour";
    char text2[]="Bonsoir";
    
    /**Fonction*/
    void afficheListe() /** affiche listes*/
    {
        printf("Voulez-vous les listes en mode normal ou en majuscules (n/m) ? ");
        scanf("%c", &choix);
        if (choix=='m')
        {
            printf("Texte 1 : ");
            for (j=0; j<=strlen(text1); j++)
            {
                text1[j]=toupper(text1[j]);
                printf("%c", text1[j]);
            }
            printf("\nTexte 2 : ");
            for (k=0; k<strlen(text2); k++)
            {
                text2[k]=toupper(text2[k]);
                printf("%c", text2[k]);
            }
            return 0;
        }
    
        else
        {
            printf("Texte 1 : ");
            for (j=0; j<=strlen(text1); j++)
            {
                printf("%c", text1[j]);
            }
            printf("\nTexte 2 : ");
            for (k=0; k<strlen(text2); k++)
            {
                printf("%c", text2[k]);
            }
            return 0;
        }
    }
    int compare() /** comparer listes*/
    {
        int strcmp(const char * text1, const char * text2);
        return 0;
    }
    
    /**Partie principale du programme*/
    
    int main ()
    {
        afficheListe();
        compare();
        return 0;
    }
    

    ------------------------------------------




     Une fois Run appuyé, il affiche uniquement la place du main ().

    Je ne fais pas de copier coller.

    Voulez-vous les listes en mode normal ou en majuscules (n/m) ? m
    Texte 1 : BONJOUR
    Texte 2 : BONSOIR
    Process returned 0 (0x0)   execution time : 2.516 s
    Press any key to continue.
    
    



    Impossible savoir comment afficher le résultat attendu. Comment afficher la partie des fopnctions aussi? Merci :-)

    -
    Edité par StefanoRomeo1 24 janvier 2020 à 11:59:29

    • Partager sur Facebook
    • Partager sur Twitter
      24 janvier 2020 à 12:05:11

      Hello,

      Qu'attends tu comme résultat ? 

      Ton afficheList print bien ce que tu lui demande, et ton programme retourne bien 0 suite au main

      Ton compare par contre j'ai du mal à voir l'utilité, il retourne 0 quoi qu'il arrive tu n'utilises pas le retour de la fonction strcmp

      Qu'entends tu par "partie des fonctions" ?

      • Partager sur Facebook
      • Partager sur Twitter
        24 janvier 2020 à 15:26:55

        Hello,

        Ton programme fait exactement ce que tu lui demandes de faire. Mais peut-être espères-tu autre chose comme résultat ?

        Je dois avouer que

        StefanoRomeo1 a écrit:

        Impossible savoir comment afficher le résultat attendu. Comment afficher la partie des fopnctions aussi?

        est assez obscur.



        -
        Edité par edgarjacobs 24 janvier 2020 à 15:27:12

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          24 janvier 2020 à 22:56:10

          Oups, je vois que ce sont les mauvais codes. Je recommence.

          --------------------------------

          Bonjour, :-)

          J'étudie (non sans peine) les fonctions et vous fait part de mes recherches.

          Dans mes exercices, il y a souvent le même problème. Les retours et printf des fonctions ne sont pas affichés.

          Par exemple :

          /*********
          *Enoncé : Lire une valeur et la multiplier par 10.
          *La formule et le résultat seront affichés
          ***************/
          
          /**Bibliothèques et valeurs*/
          
          #include <stdio.h>
          #include <stdlib.h>
          
          int prodt, nbre;
          
          /**Prototypes*/
          
          int mult10(int nbre);
          
          /**Programme principal*/
          
          int main()
          {
              printf("Saisir un nombre : ");
              scanf("%d", nbre);
              mult10(nbre);
              return 0;
          }
          
          /**Fonctions*/
          
          int mult10(int nbre)
          {
              prodt=nbre*10;
              printf("%d fois 10 = %d",nbre, prodt);
          }
          
          
          

          Je ne fais pas de copier coller.


          Une fois Run appuyé, il affiche uniquement la partioe correspondente au main().

          Saisir un nombre : 5

          Je veux afficher en plus "5 fois 10 = 50".

          Comment faire?Merci :-)

          • Partager sur Facebook
          • Partager sur Twitter
            24 janvier 2020 à 23:16:42

            Re,-

            Si on peut éviter les variables globales, on le fait. Ce qui dans ton programme est farpaitement faisable → ligne 11 à supprimer.

            scanf() attend une adresse pour pouvoir ranger l'entrée qui est faite: scanf("%d",&thingly)

            La fonction mult10() ne renvoie rien, elle doit donc être de type void.

            Enfin, pas besoin de stdlib.h

            Et ton programme devient

            #include <stdio.h>
            
            /**Prototypes*/
            void mult10(int nbre);
             
            /**Programme principal*/
            int main() {
            	int nbre;
            	
                printf("Saisir un nombre : ");
                scanf("%d",&nbre);
                mult10(nbre);
                
            	return 0;
            }
             
            /**Fonctions*/
            void mult10(int nbre) {
            	int prodt;
            	
                prodt=nbre*10;
                printf("%d fois 10 = %d",nbre, prodt);
            }

            À noter que mult10() peut se passer de la variable prodt:

            void mult10(int nbre) {
                printf("%d fois 10 = %d",nbre, nbre*10);
            }

            -
            Edité par edgarjacobs 24 janvier 2020 à 23:20:55

            • Partager sur Facebook
            • Partager sur Twitter

            On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

              25 janvier 2020 à 9:07:44

              ou comme ceci :

              #include <stdio.h>
              
              /**Prototypes*/
              int mult10(int nbre);
              
              /**Programme principal*/
              int main(void) {
                  int nbre;
              
                  printf("Saisir un nombre : ");
                  scanf("%d",&nbre);
              
                  printf("%d fois 10 = %d",nbre,mult10(nbre));
                  return 0;
              }
              
              /**Fonctions*/
              int mult10(int nbre) {
                  return nbre*10;
              }

              Note: la fonction mult10 retourne simplement son résultat. Elle ne s'occupe pas de l'affichage.

              • Partager sur Facebook
              • Partager sur Twitter
                26 janvier 2020 à 9:49:59

                C'est noté, magma & edcouardjacobs
                • Partager sur Facebook
                • Partager sur Twitter

                Résultat avec fonctions

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown