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 .
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 .
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
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]
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.
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]
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.
À 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
![]()
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
Effectivement c'est bizarremontre 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
![]()
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
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); } }
Re,-
scanf() a un return code, qui indique le nombre de champs que la fonction a pu remplir.
Dans le code suivantsi 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 int n,rc; rc=scanf("%d",&n);
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é
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]
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]
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);} }
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]
Partager