IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Besoin d'aide pour un petit programme


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Besoin d'aide pour un petit programme
    Voila je suis un bleu en C et j'ai des difficultées avec les fonctions.
    Voici mon programme qui demande un nombre N à l'utilisateur et qui affiche tous les entiers compris entre 0 et ce nombre. Si le nombre est négatif, le programme s'arrête et s'il est positif, il demandera un nouveau nombre à l'utilisateur. Mais mon problème c'est que l'affichage doit se faire par l'intermédiaire d'une fonction dont l'entier N est le paramètre.
    Mais moi j'utilise un goto. (je développe sur microsoft visual c++ 6.0)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <stdio.h>
    void main (void)
    {
    	void affiche (int);
     
    	int n,i;
    ici:	printf("entrez un nombre");
    	scanf("%i",&n);
     
    	if (n>0)
    	{
    		for (i=0;i<n;i++)
    		{
    			printf ("%i\n",i);
    		}
    		goto ici;
    	}
    	else 
    		printf("fin du programme");	
    }

  2. #2
    Membre averti
    Profil pro
    Responsable technique
    Inscrit en
    Février 2006
    Messages
    363
    Détails du profil
    Informations personnelles :
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Responsable technique

    Informations forums :
    Inscription : Février 2006
    Messages : 363
    Points : 353
    Points
    353
    Par défaut
    Ne jamais faire de goto!!!!
    Et les declarations de fonctions à l'exterieur du main
    Par contre je ne vois pas à quoi sert la fonction affiche tu l'utilise meme pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #include <stdio.h>
     
    void affiche (int);
     
    int main(void)
    {
        int n,i;
     
        while(n>=0)
        {
            printf("entrez un nombre");
            scanf("%i",&n);
     
            if (n>0)
            {
                for (i=0;i<n;i++)
                {
                    printf ("%i\n",i);
     
                }
    //goto ici;
            }
            else
            {
                printf("fin du programme");
                return
            }
        }
    }

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut merci pour la réponse. Mais sa marche toujours pas
    La fonction est créée mais pas appellée. Le prog s'arrete dès que je rentre un nombre.
    Comment peut on utiliser la fonction "void affiche (int)" pour l'affichage.

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par Nico35
    La fonction est créée mais pas appellée.
    On ne l'a pas vue dans le code que tu as poste ci-dessus...

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je veux utiliser une fonction pour l'affichage mais je sais pas le faire. Ci quelqu'un peut modifier mon prog dans le premier post ça serai sympa.
    L'intitulé de mon execice se trouve sur le premier post.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 128
    Points : 101
    Points
    101
    Par défaut
    Si j'ai bien compris ce que tu veux faire ca doit donner ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    void main( void ) {
        int n = 1 ;
     
        while ( n > 0 ) { 
               printf(" Entrez un nombre :") ;
               scanf("%d",&n) ;
               affiche(n) ;
        }
    }
     
     
    void affiche( int n ) {
       int i ;
     
       for( i = 0 ; i<=n ; i++ )
            printf("%d\n",i) ;
    }
    mais jsuis pas sur si c'était exactement ca que tu voulais faire...

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai modifié mon prog avec vos aides. ça donne le résultat ci-dessous
    Maintenant le prob ce que quand je l'éxécute il s'arrete pas. Je pense que le problème est au niveau du "while". Si quelqu'un peut me corriger merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <stdio.h>
    void main (void)
    {
       void affiche (int);
     
       int n;
     
       printf("entrez un nombre");
       scanf("%i",&n);
     
       while (n>0)
          affiche(n);
    }
     
    void affiche( int n ) 
    {
       int i ;
     
       for( i = 0 ; i<=n ; i++ )
          printf("%i\n",i) ;
    }

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 128
    Points : 101
    Points
    101
    Par défaut
    C'est ton while( n ) qui fait boucler le programme. Par exemple, si l'utilisateur entre 5 le programme va t'afficher :
    0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5..... car quand tu sors de la fonction affiche la variable n vaut toujours 5 et donc ton prog refait appel a la fonction affiche...
    Ce que je te conseille de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #include <stdio.h>
     
    void main (void) {
     
    void affiche (int);
    int n;
    int exit = 0 ;
     
    while ( exit == 0 ) {
       printf("entrez un nombre");
       scanf("%i",&n);
     
       if( n < 0 ) 
            exit = 1 ;
     
       affiche(n);
    }
     
    void affiche( int n ) 
    {
       int i ;
     
       for( i = 0 ; i<=n ; i++ )
            printf("%i\n",i) ;
    }
    La normalement ca devrait le faire...
    n'hésite pas a reposter si tu ne comprends pas qq chose

  9. #9
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    C'est nickel, j'ai compilé et ça marche. Merci beaucoup pour les conseils.
    Mais j'aurais une autre question.

    ça consite a saisir une phrase dans un tableau (ça je peux faire), et ensuite de réafficher cette meme phrase mais sans les voyelles.
    Comment puis-je faire cette opération?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 128
    Points : 101
    Points
    101
    Par défaut
    Moi ce que je ferait, :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void afficheSansVoyelle( char* chaine, int tailleChaine ) {
    char nouvelleChaine[tailleChaine] ;
    int i , indiceChaine;
     
    indiceChaine = 0 ;
    for( i = 0 ; i<tailleChaine ; i++ ) {
       if( chaine[i]!= 'a' && chaine[i]!= 'e' && chaine[i]!= 'i' &&...) {
             nouvelleChaine[indiceChaine] = chaine[i] ;
             indiceChaine++ ;
       }
     }
    printf("Voici la chaine sans voyelle : %s", nouvelleChaine) ;
    }
    par contre pour la comparaison de tes caractères avec les voyelles, je crois (mais jen suis pas sur) qu'il existe une fonction isVowel(char) dans la bibliothèque ctype.h qui renvoie vrai si le caractere en parametre est une voyelle et faux sinon...

    A part ca, je ne voit d'autre manière de le faire la comme ca sans trop réfléchir... mais je suis sur qu'il y a certainement plus efficace...

  11. #11
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour le tuyaux. ça devrait bien m'aider

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par georges_jung
    par contre pour la comparaison de tes caractères avec les voyelles, je crois (mais jen suis pas sur) qu'il existe une fonction isVowel(char) dans la bibliothèque ctype.h
    1 - Un .h n'est pas une bibliothèque
    2 - isVowel() n'est pas une fonction standard.
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 128
    Points : 101
    Points
    101
    Par défaut
    Citation:
    georges_jung a écrit :
    par contre pour la comparaison de tes caractères avec les voyelles, je crois (mais jen suis pas sur) qu'il existe une fonction isVowel(char) dans la bibliothèque ctype.h

    1 - Un .h n'est pas une bibliothèque
    2 - isVowel() n'est pas une fonction standard.
    Escuse moi de mal me tromper dans les termes, et les explications...
    Mais comment appelles tu un fichier .H une librairie, fichier d'en tete ?
    Quand tu dis qu'une fonction n'est pas standard, cela veut dire qu'elle n'est pas utilisable sur toutes les plateformes?... mais comment savoir si telle ou telle fonction est standard ?
    En tout cas, merci de me reprendre...

  14. #14
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par georges_jung
    Escuse moi de mal me tromper dans les termes, et les explications...
    Je trouve, au contraire, que tu te trompes assez bien !
    Mais comment appelles tu un fichier .H une librairie, fichier d'en tete ?
    Un fichier d'en-tête

    http://emmanuel-delahaye.developpez....m#bibliotheque

    Quand tu dis qu'une fonction n'est pas standard, cela veut dire qu'elle n'est pas utilisable sur toutes les plateformes?...
    C'est une des conséquences, oui.
    mais comment savoir si telle ou telle fonction est standard ?
    http://man.developpez.com/
    Pas de Wi-Fi à la maison : CPL

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin d'aide sur 3 petits programmes en Cobol
    Par gecko64 dans le forum Cobol
    Réponses: 2
    Dernier message: 12/09/2007, 22h30
  2. Réponses: 6
    Dernier message: 23/06/2007, 12h29
  3. Réponses: 1
    Dernier message: 12/04/2007, 11h30
  4. Aide pour un petit programme
    Par multeamage dans le forum C++
    Réponses: 13
    Dernier message: 19/08/2006, 17h36
  5. Réponses: 2
    Dernier message: 06/05/2006, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo