Tout d'abord je viens remercier la personne qui m'avait répondu sur mon précédent message. J'ai eu un petit soucis en modifiant le message pour afficher les couleurs du code, celui-ci a été considéré comme un spam et a été supprimé... Donc je recommence ici.
Voilà, je débute en programmation C dans le cadre de mon master. Je n'ai aucune base. Mon enseignant me demande d'écrire un programme pour générer au hasard trois entiers différents dans [5, 10] et d'afficher ces trois nombres dans l’ordre croissant. Je crois avoir tout fait mais je me retrouve parfois avec 2 nombres identiques et je ne peux donc pas les classer... Quelqu'un saurait-il comment arranger ça ? Mercii
Voilà mon programme :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int i = 0;
int MAX = 10;
int MIN = 5;
int a = 0;
int b = 0;
int c = 0;
srand(time(NULL)); // initialisation de rand
for(i=0; i<1; i++){
a = (rand() % (MAX - MIN + 1)) + MIN;
b = (rand() % (MAX - MIN + 1)) + MIN;
c = (rand() % (MAX - MIN + 1)) + MIN;
printf("%d %d %d",a, b, c);}
if (a < b && b < c) {
printf("\n%d < %d < %d", a, b, c);}
else if (b < a && a < c) {
printf("\n%d < %d < %d", b, a, c);}
else if (c < b && b < a) {
printf("\n%d < %d < %d", c, b, a);}
else if (b < c && c < a) {
printf("\n%d < %d < %d", b, c, a);}
else if (c < a && a < b) {
printf("\n%d < %d < %d", c, a, b);}
else if (a < c && c < b) {
printf("\n%d < %d < %d", a, c, b);}
return 0; }
la personne qui m'avait répondu sur mon précédent message
Ma pomme.
Voilà mon programme :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int i = 0;
int MAX = 10;
int MIN = 5;
int a = 0;
int b = 0;
int c = 0;
srand(time(NULL)); // initialisation de rand
for(i=0; i<1; i++){
a = (rand() % (MAX - MIN + 1)) + MIN;
b = (rand() % (MAX - MIN + 1)) + MIN;
c = (rand() % (MAX - MIN + 1)) + MIN;
printf("%d %d %d",a, b, c);}
if (a < b && b < c) {
printf("\n%d < %d < %d", a, b, c);}
else if (b < a && a < c) {
printf("\n%d < %d < %d", b, a, c);}
else if (c < b && b < a) {
printf("\n%d < %d < %d", c, b, a);}
else if (b < c && c < a) {
printf("\n%d < %d < %d", b, c, a);}
else if (c < a && a < b) {
printf("\n%d < %d < %d", c, a, b);}
else if (a < c && c < b) {
printf("\n%d < %d < %d", a, c, b);}
return 0; }
Si tu n'as aucune base, il y a la solution brute. Heureusement il n'y a que 3 nombres, sinon il faudrait passer à une autre méthode - de même que pour le tri !
a=rand()....;
do {
b=rand()....;
} while(b==a);
do {
c=rand()....;
} while(c==a || c==b);
- Edité par edgarjacobs 18 février 2018 à 17:53:53
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
for(i=0;i<....;i++) {
int j;
j=rand()%6; // 6: nombre de cases du tableau
inverser tab[i] et tab[j]
}
// affiche les nombres
for(i=0;i<....;i++)
printf("%d\n",tab[i]);
// et maintenant, il faut trier tab[0], tab[1] et tab[2]
- Edité par edgarjacobs 18 février 2018 à 18:04:59
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Ah super merci beaucoup !! J'étais quand même loin du but ^^
J'ai tenté 1 million de fois de changer des choses dans mon code mais je ne parviens toujours pas à trouver la solution. J'ai réussi à trouver et comprendre comment on classe les cases du tableau dans l'ordre croissant avec 1 programme. Mon programme permettait de prendre au hasard 3 nombres différents. Et en combinant les deux je n'arrive pas à classer mes 3 nombres dans l'ordre croissant. J'obtiens toutes les cases de mon tableau de 6 cases + les 3 nombres aléatoire.
J'ai donc réessayé en mixant les deux programmes mais ça ne fonctionne pas du tout...
Ca me rend folle Aaaahh !!!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void ordonner(int *tableau, int taille); // PROTOTYPE FONCTION
int main()
{
srand(time(NULL));
int tab[6] = {5, 6, 7, 8, 9, 10};
ordonner(tab,3);
int j;
j=rand()%6;
return 0;
}
void ordonner(int *tableau, int taille) // FONCTION : ORDONNER DE MANIÈRE CROISSANTE
int i;
int tri =0;
for (i=0 ; i < taille ; i++)
{
if (tab[i] > tab[i+1])
{
tri = tab[i+1];
tab[i+1] = tab[i];
tab[i]= tri;
}
printf("%d \n", tab[i]);
}
- Edité par JohannaAmbu 18 février 2018 à 20:06:18
CA Y EST !!!! Ouiiiiiiiiiii !!! J'ai réussi hihihihi. Je pense que mon code est bon. Peux-tu me dire si tu trouves des choses pas trop bonnes s'il te plaît ? Merci beaucoup pour ton aide en tout cas, c'est super gentil
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
srand(time(NULL));
int tab[6]={5,6,7,8,9,10};
int i=0;
int j=0;
int tri=0;
int tmp=0;
for(i=0;i<3;i++) {
j=rand()%6;
tri = tab[j];
tab[j] = tab[i];
tab[i] = tri; }
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(tab[i]<tab[j])
{
tmp=tab[j];
tab[j]=tab[i];
tab[i]=tmp;
}
}
}
for(i=0;i<3;i++) {
printf("%d\n",tab[i]); }
return 0; }
- Edité par JohannaAmbu 19 février 2018 à 11:59:13
la ligne 11 serait bien mieux après la ligne 14, et tri ne doit pas être initiallisé
la ligne 12 idem mais après 25, idem pour l'initialisation
pourquoi initialiser i et j lignes 9 et 10 ? c'est fait en lignes 14 et 15, 20 et 22, et 33
un peu de constance dans le positionnement des accolades: choisis ton style une fois pour toute. Dans ton cas (c-à-d à choisir entre les deux styles que tu utilises), je préfère le style utilisé pour les lignes 20 à 31.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Merci beaucoup pour ton aide ! Je vais corriger tout ça et mes autres exercice par la même occasion
Générer des nombres aléatoires différents dans C
× 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.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent