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 :

Calcul du maximum de plusieurs variables


Sujet :

C

  1. #1
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 7
    Par défaut Calcul du maximum de plusieurs variables
    bonjour toutle monde j'ai un probleme a faire un code source d'un programme qui calcule le maximum de plusieurs variables et arrete et affiche leur max quand j'entre n'importe quel autre caractere a part les variables .

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 160
    Par défaut
    Et ou bloques tu ? qu'as tu déjà fait ?

    Nous pourrons t'aider mais ne feront pas le travail à ta place.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par anassthr Voir le message
    un programme qui calcule le maximum de plusieurs variables
    Bonjour
    Il sera plus facile de passer par un tableau que par différentes variables. En effet, c'est plus facile de trouver le maximum d'un int tab[10] (une boucle pour examiner chaque tab[i] et c'est réglé) que regarder le maximum de int a, int b, int b, int d, int e, int f, int g, int h, int i, int j...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 753
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Il sera plus facile de passer par un tableau que par différentes variables
    Hello,

    D'après la description du PO, je vois ça encore plus simple: juste une variable max et une variable d'entrée. A chaque entrée, tester. Si <> de la condition d'arrêt, comparer à max et recommencer, sinon afficher max et arrêter.

  5. #5
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 746
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 746
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    A chaque entrée, tester. Si <> de la condition d'arrêt, comparer à max et recommencer, sinon afficher max et arrêter.
    Attention quand même si la première fois, l'utilisateur quitte directement

    Donc 3 techniques :
    • Un compteur de nombre de valeurs saisies
    • Initialiser max avec XINT_MIN. Mais cela pose la question si la première fois l'utilisateur saisit cette valeur et quitte ensuite : on va croire qu'il a quitté directement
    • Dérouler la boucle infinie pour sortir la première saisie et soit continuer avec la première saisie soit quitter.

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par foetus Voir le message
    [*]Un compteur de nombre de valeurs saisies
    Attention, trop de saisies et le compteur repasse à zéro

    Donc autre solution pour éviter cet inconvénient : une seconde variable destinée uniquement à flagguer s'il y a eu ou pas saisie. Et comme cette seconde variable va de pair avec le max, il est alors plus propre de les regrouper dans une structure.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 746
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 746
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Attention, trop de saisies et le compteur repasse à zéro
    65536 minutes cela correspond à 45 jours (en comptant 1 minute par saisie). Au minimum 45 jours pour un exercice d'étudiant c'est excessif
    Et encore avec un long long on arrive à 586 années.

    Pour un programme qui stream par exemple, c'est effectivement un paramètre à prendre en compte.


    Citation Envoyé par Sve@r Voir le message
    il est alors plus propre de les regrouper dans une structure.
    À moins que tu veuilles réviser les structures en C , dérouler l'algo pour prendre en compte la première saisie (mon point 3) et pour moi la solution la plus simple

  8. #8
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 7
    Par défaut
    Citation Envoyé par edgarjacobs Voir le message
    Hello,

    D'après la description du PO, je vois ça encore plus simple: juste une variable max et une variable d'entrée. A chaque entrée, tester. Si <> de la condition d'arrêt, comparer à max et recommencer, sinon afficher max et arrêter.

    oui c'est ça que je veux faire mais le probleme en declaration de A si je la declare une vriable int ça qu'il faut faire car j'entre des entier a comparer mais le probleme quand je rentrerai un caractere pour finir la comparaison et afficher le max ça va pas marcher car A est un int

  9. #9
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 746
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 746
    Par défaut
    Effectivement c'est bizarre montre du code parce que

    Parce que tu as une saisie en chaîne de caractères. Et donc il faut faire une conversion simple vers entier
    Mais le truc bizarre , c'est qu'il existe, par exemple, la fonction scanf qui saisit directement dans le type que tu veux

    En gros le caractère '0' c'est 48 dans la table ascii. Donc il faut faire ceci pour un chiffre entier int number = '9' - '0' (<- il faut retrancher au caractère chiffre saisi, le caractère zéro)


    Édit : j'ai peut-être pigé Tu ne peux pas saisir en entier parce que tu attends un caractère pour t'arrêter : c'est ballot

  10. #10
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdlib.h>
    #include <stdio.h>
     
    main()
    {
    	int a,m,max;
     
    	printf ("entrer les nombre que vous voulez comparer et appuyer sur 9 pour afficher le max  \n"); 
    	scanf ("%d",&max);  
     
    	do {scanf ("%d",&a); if ( (a>max)&&(a!=9) ) max=a;  }
    	while (a!=9);
    	{printf ("le maximum est : %d",max); }
    }
    mais le problème je veux faire un caractère au lieu de 9 mais a est un int en peux pas le scanner un caractère

  11. #11
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 753
    Par défaut
    Re,-

    scanf() a un return code, qui indique le nombre de champs que la fonction a pu remplir.

    Dans le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int n,rc;
     
    rc=scanf("%d",&n);
    si l'utilisateur entre un nombre, rc vaudra 1, si il entre autre chose, rc vaudra zéro. Il suffit donc de mettre une boucle do....while autour du scanf()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int n,rc;
     
    do {
    	rc=scanf("%d",&n);
    	if(rc>0) {
    		// c'est un nombre
    	}
    } while(rc>0);
    // fin de saisie car ce n'est pas un nombre qui a été entré

  12. #12
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par anassthr Voir le message
    mais le probleme je veux faire un caractere au lieu de 9 mais a est un int en peux pas le scaner un caractere
    Il y a plusieurs façon de résoudre ce souci. Comme dit edgarjacobs, tu peux vérifier le retour de scanf() qui renverra 1 s'il a été saisi un int ou 0 sinon.
    Tu peux aussi partir dans l'autre sens et tout faire saisir comme chaine. Puis si la chaine ne contient pas le mot clef que tu associes à "quitter" alors tu la convertis en int (on admettra pour un premier exo que c'est toujours possible) et tu traites l'entier correspondant.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  13. #13
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 7
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Il y a plusieurs façon de résoudre ce souci. Comme dit edgarjacobs, tu peux vérifier le retour de scanf() qui renverra 1 s'il a été saisi un int ou 0 sinon.
    Tu peux aussi partir dans l'autre sens et tout faire saisir comme chaine. Puis si la chaine ne contient pas le mot clef que tu associes à "quitter" alors tu la convertis en int (on admettra pour un premier exo que c'est toujours possible) et tu traites l'entier correspondant.

    comment on peux exprimer si a egale a un int en language ?

    do {scanf ("%d",&a); if ( (a>max)&&(a!=int) ) max=a; }
    while (a!= int);
    {printf ("le maximum est : %d",max); }

  14. #14
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par anassthr Voir le message
    comment on peux exprimer si a egale a un int en language ?
    Citation Envoyé par edgarjacobs Voir le message
    scanf() a un return code, qui indique le nombre de champs que la fonction a pu remplir.

    Dans le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int n,rc;
     
    rc=scanf("%d",&n);
    si l'utilisateur entre un nombre, rc vaudra 1, si il entre autre chose, rc vaudra zéro.
    Voilà. T'avais déjà la réponse.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  15. #15
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2018
    Messages : 7
    Par défaut
    merci tous pour vos information , j'ai resolu le probleme

    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
    #include <stdlib.h>
    #include <stdio.h>
     
    main()
    {
     
    	int n,rc,max;
        printf ("entrer les nombres que vous voullez comparer est entrer un caractere pour afficher le max");
     
    do {
    	rc=scanf("%d",&n);
    	if(rc>0) {
    		if  (n>max)  max=n;
    	}
       } 
    while(rc>0);
    {printf ("le max est : %d",max);}
     
    }

  16. #16
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 800
    Billets dans le blog
    1
    Par défaut
    Mouais. Mais tu testes deux fois rc > 0.

    Code c : 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
    #include <stdlib.h>
    #include <stdio.h>
     
    int main()
    {
     
    	int n,rc,max;
    	printf ("entrer les nombres que vous voulez comparer est entrer un caractere pour afficher le max\n");
     
    	while (1) {
    		rc=scanf("%d",&n);
    		if (rc == 0) break;		// Ou bien if (scanf("%d",&n) == 0) break ce qui permet de supprimer rc
    		if  (n>max) max=n;
    	}
    	printf ("le max est : %d\n",max);
    }

    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #17
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 753
    Par défaut
    Citation Envoyé par anassthr Voir le message
    merci tous pour vos information , j'ai resolu le probleme

    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
    #include <stdlib.h>
    #include <stdio.h>
     
    main()
    {
     
    	int n,rc,max;
        printf ("entrer les nombres que vous voullez comparer est entrer un caractere pour afficher le max");
     
    do {
    	rc=scanf("%d",&n);
    	if(rc>0) {
    		if  (n>max)  max=n;
    	}
       } 
    while(rc>0);
    {printf ("le max est : %d",max);}
     
    }
    Ben non, le problème n'est pas réglé: max n'a pas été initialisé.

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

Discussions similaires

  1. [XL-2010] j'ai un problem calcule somme produit de plusieurs variables (avec RedEdit)
    Par labiod82 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/12/2014, 00h28
  2. Réponses: 1
    Dernier message: 02/07/2014, 11h25
  3. Réponses: 10
    Dernier message: 03/09/2011, 13h50
  4. Calcul du maximum entre plusieurs valeurs
    Par gastaman dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 27/11/2006, 11h07
  5. [SQL] calcul de plusieurs variables dans une table
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2006, 21h53

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