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 :

Débutant et déjà des problèmes


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 6
    Par défaut Débutant et déjà des problèmes
    Tout d'abord bonjour à tous les utilisateurs du forum, je suis nouveau !
    J'ai décidé d'apprendre le language C. J'ai acheté un livre (Le programmeur : Le language C de Peter Aitken & Bradley L. Jones) où il ya plein d'explications, d'exemples etc... (ça fait 2h que j'ai commencé en fait )
    Donc voilà, j'ai fait mon petit Hello World mais la fenêtre se ferme dessuite ! j'ai donc rajouté un system("pause"); et là je peux voir ma phrase écrite... c'est super !
    Par contre peut après en avançant dans le livre je me rend compte que peu de programmes marchent comme il faut... par exemple celui-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
     
    int rayon, aire;
     
    main()
    {
          printf("Entrez le rayon (ex 10) : ");
          scanf("%d", &rayon);
          aire = (int) (3.14159 * rayon * rayon);
          printf("\n\nAire = %d\n", aire);
          return 0;
    }
    Le problème est que des que je rentre une valeur et appuie sur entrée la fenêtre se ferme....
    Puis quand je passe à un autre programme qui sert par exemple à imprimer des listings avec les numéros de lignes, la fenêtre dos se ferme aussi directement.... et là par contre je suis perdu je ne sais pas où placer le system("pause");

    Donc voilà je ne sais pas si celà viens de mon compilateur ou éditeur ou quoi que se soit... J'utilise dev-C++ comme recommandé dans la FAQ

    Je vous remercie d'avance pour votre aide ! ça m'énerve car pour l'instant je n'ai réussi a faire marcher aucun programme a part Hello World. Ne riez pas !! )

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 6
    Par défaut
    Encore un problème pour ce programme tout bête qui fais le produit de 2 nombres... après avoir rentré le deuxième nombre, la fenetre dos se ferme !!

    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
     
    #include <stdio.h>
     
    int a,b,c;
     
    int produit(int x, int y);
     
    main()
    {
          printf("Entrez un nombre entre 1 et 100 : ");
          scanf("%d", &a);
     
          printf("Entrez un autre nombre entre 1 et 100 : ");
          scanf("%d", &b);
     
          c = produit(a, b);
          printf("\n%d fois %d = %d", a, b, c);
     
          return 0;
    }
     
    int produit(int x, int y)
    {
        return (x * y);
    }

  3. #3
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut


    Tu doit le placer avant le return 0 du main

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Puisque tu débutes, apprends tout de suite à te passer des variables globales (variables déclarées en dehors de toute fonction) qui sont des pestes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    main() 
    { 
       int a,b,c;
    ....
    Bonne persévérance dans tes efforts

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 6
    Par défaut
    j'ai déclaré mes variables à l'interieur de ma fonction, mais j'ai toujours le même problème... c'est assez embêtant : faut-il toujours mettre un ??

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    faut-il toujours mettre un Code:
    system("pause");
    ??
    Si tu veux éviter la fermeture de la fenêtre à la fin de la partie de l'exécution du programme qui t'interresse, pour lire ce qui y a sur l'écran, il faut "geler" le programme avant le return 0. Ceci est un moyen. Si ce qu'il y a sur la fenêtre ne t'interresse pas, ce n'est pas la peine.
    La question variables locales/globales n'a rien à voir avec ce comportement

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut Re: Débutant et déjà des problèmes
    Citation Envoyé par FUJi
    Par contre peut après en avançant dans le livre je me rend compte que peu de programmes marchent comme il faut... par exemple celui-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
     
    int rayon, aire;
     
    main()
    {
          printf("Entrez le rayon (ex 10) : ");
          scanf("%d", &rayon);
          aire = (int) (3.14159 * rayon * rayon);
          printf("\n\nAire = %d\n", aire);
          return 0;
    }
    Le problème est que des que je rentre une valeur et appuie sur entrée la fenêtre se ferme....
    Ben oui, si tu as Dev-C++, il faut ajouter un
    avant le return 0 du main().

    Je trouve que de mettre dans un programme pour débutant :

    - des globales
    - pas de 'int' explicite à main()
    - scanf() à la barbare
    - une conversion de double en int

    ben ça fait beaucoup de c*nneries quand même...

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par FUJi
    Encore un problème pour ce programme tout bête qui fais le produit de 2 nombres... après avoir rentré le deuxième nombre, la fenetre dos se ferme !!

    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
     
    #include <stdio.h>
     
    int a,b,c;
     
    int produit(int x, int y);
     
    main()
    {
          printf("Entrez un nombre entre 1 et 100 : ");
          scanf("%d", &a);
     
          printf("Entrez un autre nombre entre 1 et 100 : ");
          scanf("%d", &b);
     
          c = produit(a, b);
          printf("\n%d fois %d = %d", a, b, c);
     
          return 0;
    }
     
    int produit(int x, int y)
    {
        return (x * y);
    }
    Là encore, beaucoup de bêtises.
    - globales inutiles
    - prototype séparé inutile
    - pas de fflush(stdout) après les lignes incomplètes
    - pas de '\n' à la fin de la ligne d'affichage.

    Pour moi c'est clair, je ne recommande pas ce livre.
    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
     
    #include <stdio.h>
     
    static int produit(int x, int y)
    {
        return (x * y);
    }
     
    int main(void)
    {
        int a,b,c;
     
        printf("Entrez un nombre entre 1 et 100 : ");
        fflush (stdout);
     
        scanf("%d", &a);
     
        printf("Entrez un autre nombre entre 1 et 100 : ");
        fflush (stdout);
     
        scanf("%d", &b);
     
        c = produit(a, b);
        printf("\n%d fois %d = %d\n", a, b, c);
     
        return 0;
    }
    Des explications ici :

    http://emmanuel-delahaye.developpez.com/notes.htm

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par FUJi
    j'ai déclaré mes variables à l'interieur de ma fonction, mais j'ai toujours le même problème... c'est assez embêtant : faut-il toujours mettre un ??
    Avec Dev-C++, oui.

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 6
    Par défaut
    Ok merci pour ces infos.
    je vais me pencher sur ta page une fois que j'aurais vraiment bien compris les bases du C, car pour l'instant tout est encore un peu mélangé dans ma tête ^^
    je vais peut-être changer de compilateur/EDI alors si c'est dev c++ qui requiert les pauses pour que la fenetre ne se ferme pas dessuite ^^

    en tout cas merci pour ces informations, même si je n'ai pas tout compris
    - globales inutiles
    - prototype séparé inutile
    - pas de fflush(stdout) après les lignes incomplètes
    - pas de '\n' à la fin de la ligne d'affichage.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par FUJi
    je vais peut-être changer de compilateur/EDI alors si c'est dev c++ qui requiert les pauses pour que la fenetre ne se ferme pas dessuite ^^
    Mingw Developper Studio
    Code::Blocks

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 6
    Par défaut
    ok merci pour les tuyaux. J'ai installé MinGW mais impossible de compiler mon .c car tout est grisé dans le menu "build" ...
    désolé je suis vraiment un débutant ca ne fait que quelques heures que je commence la programmation.... lol

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par FUJi
    ok merci pour les tuyaux. J'ai installé MinGW mais impossible de compiler mon .c car tout est grisé dans le menu "build" ...
    Ben oui, il faut créer un projet...

    Pour avoir de l'aide sur les IDE, c'est le forum "Outils pour C & C++ / EDI / Compilateurs / etc"

  14. #14
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 6
    Par défaut
    ok c réglé, par contre toujours le même problème de fenetre qui se ferme dessuite... enfin je continue quand même mon apprentissage ! ^^

  15. #15
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par FUJi
    ok c réglé, par contre toujours le même problème de fenetre qui se ferme dessuite... enfin je continue quand même mon apprentissage ! ^^
    Lance le programme directement en ligne de commande, tu n'aura plus ce problème !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  16. #16
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par CSoldier
    Citation Envoyé par FUJi
    ok c réglé, par contre toujours le même problème de fenetre qui se ferme dessuite... enfin je continue quand même mon apprentissage ! ^^
    Lance le programme directement en ligne de commande, tu n'aura plus ce problème !
    C'est ceu que j'allais dire
    Si tu ne sais pas comment faire
    Tu ouvres un Invite de commande ou
    Démarrer -> Executer -> cmd -> Entrée
    Pour te deplacer dans les repertoires la commande c'est : cd
    Par exemple
    cd c:\Programmation
    Une fois que tu es dans le repertoire tu tapes le nom du programme.

  17. #17
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Citation Envoyé par Emmanuel Delahaye

    Pour moi c'est clair, je ne recommande pas ce livre.
    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
     
    #include <stdio.h>
     
    static int produit(int x, int y)
    {
        return (x * y);
    }
     
    int main(void)
    {
        int a,b,c;
     
        printf("Entrez un nombre entre 1 et 100 : ");
        fflush (stdout);
     
        scanf("%d", &a);
     
        printf("Entrez un autre nombre entre 1 et 100 : ");
        fflush (stdout);
     
        scanf("%d", &b);
     
        c = produit(a, b);
        printf("\n%d fois %d = %d\n", a, b, c);
     
        return 0;
    }
    Des explications ici :

    http://emmanuel-delahaye.developpez.com/notes.htm

    Salut Emmanuel
    Pour une fois que tu mets scanf() d'habitude tu dis toujours aux gens qui débutent d'utiliser fgets (me semble de tête que le proto est char *fgets(char *s, int size, FILE *stream); ) en les renvoyant ici:
    http://emmanuel-delahaye.developpez....tes.htm#saisie

  18. #18
    Membre éprouvé Avatar de ccensam
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Par défaut Réponse brève
    Pour le problème de fermeture de la fenetre, utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <conio.h>
    main()
          {
             ....................
             ...................
     
             getch();  // dernière instruction
          }
    Pour le probléme de fonctions : je te conseille de marcher pas à pas et de bien apprendre avant avncée!!
    Tu peux telecharger les tutoriaux sur le site, ce sont très intéréssants et complets ok : http://c.developpez.com/cours/
    Et bonne continuation jeune homme.

  19. #19
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut Re: Réponse brève
    Citation Envoyé par ccensam
    Pour le problème de fermeture de la fenetre, utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <conio.h>
    main()
          {
             ....................
             ...................
     
             getch();  // dernière instruction
          }
    Pour le probléme de fonctions : je te conseille de marcher pas à pas et de bien apprendre avant avncée!!
    Tu peux telecharger les tutoriaux sur le site, ce sont très intéréssants et complets ok : http://c.developpez.com/cours/
    Et bonne continuation jeune homme.
    Ben moi je te conseille pas getch qui n'est pas standard donc non portable, a ce moment la prefére getchar();

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/11/2014, 02h27
  2. Encore des problèmes avec le BDE
    Par Flint dans le forum C++Builder
    Réponses: 19
    Dernier message: 31/12/2007, 23h26
  3. [Débutant] J'ai un problème avec la compilation des classes
    Par Paulinho dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/11/2005, 14h23
  4. [Débutant][JSP] Ajout des caractères à une String...
    Par Henkyl dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 04/03/2004, 16h30
  5. Hum XMLRad RC2 deja des problèmes ?!
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 25/02/2003, 12h23

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