Aider un débutant en c?
El roux
-
SmallFitz Messages postés 358 Date d'inscription Statut Membre Dernière intervention -
SmallFitz Messages postés 358 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
comme le titre l'indique je débute en programmation c et j'aimerais avoir un avis d'xpert sur un petit probleme qui a gobber jusque la 5 heures de ma vie...(he oui...je n'ai rien contre prendre du temps a programmer et trouver les problemes mais la une erreur conne comme celle la...)
alors mise en situation fini, j'ai fait un programme qui est supposer calculer un nombre mystere, et par la suite, a l'aide d'indices, on essaye de trouver se nombre compris entre 0 et 100. cela donne grosso modo
guess? (nombre)
+
guess? (nombre +++++)
-
guess?(nombre)
bravo tu a trouver le nombre mystere!!
mais voila ce que mon programme fais lors de la comparaison de variable
pour un nombre plus grand que 10 il affichera
+guess+guess? (entrer nombre)
pour un nombreinférieur a 10
+guess?
mais immanquablement, jamais je ne toucherais la valeur moin...meême si mon nombre est plus haut que le nombre mystere.
j'ai essayer d'afficher mes nombres pendant que le programme tourne et cela donne quelque chose dans le genre
(A = nbr mystere, B = nombre rentré)
A= 75
B=32
alors voila le résultat et c'Est cette partie que je ne comprend pas!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
guess?(j'entre B)
+,3guess +,2guess?(entrer un nouveau nombre B)
je ne l'illuste p-e pas comme il le faut mais le principe est la...il coupe mon 32 et compare le 3 et le 2 individuellement...du moin c'Est ce que j'en déduis....avec mon intelligeance supérieur.....(hum..)
bref, voila mon code source
(si vous avez des amélioration a suggerer ne vous gené pas ^^)
(j'ai quelque fonction de plus, mais celle qui m'interesse est comparer)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
long comparer(long A ,long B)
{
do
{
printf("\nguess");
scanf("%1d", &B);
if (A > B)
printf("+\n\n");
else if (A < B)
printf("-\n\n");
else
printf("bravvoooo...\n\n");
} while (B != A);
return 0;
}
long players(long D)
{
printf ("Entrer le nombre de jouers (1, 2 )");
scanf ("%1d", &D);
return D ;
}
long generer(long A)
{
const long M = 100, N = 1 ;
srand(time(NULL)) ;
A = (rand() % (M - N + 1)) + N ;
return A;
}
long main(long argc, long *argv[])
{
long A = 0 , B = 0 , D =0, E = 0 ;
do
{
if (players(D) != 1)
{
printf("joueur 1 entrer le nombre");
scanf("%1d", &A);
}
else
{
printf("Generation d'un nombre aleatoire en cours...\n\n") ;
A = generer(A);
}
comparer(A, B);
printf("rejouer?\n 1=oui, 2=non");
scanf("%1d", &E);
}while (E = 1);
system("PAUSE");
return 0;
}
comme le titre l'indique je débute en programmation c et j'aimerais avoir un avis d'xpert sur un petit probleme qui a gobber jusque la 5 heures de ma vie...(he oui...je n'ai rien contre prendre du temps a programmer et trouver les problemes mais la une erreur conne comme celle la...)
alors mise en situation fini, j'ai fait un programme qui est supposer calculer un nombre mystere, et par la suite, a l'aide d'indices, on essaye de trouver se nombre compris entre 0 et 100. cela donne grosso modo
guess? (nombre)
+
guess? (nombre +++++)
-
guess?(nombre)
bravo tu a trouver le nombre mystere!!
mais voila ce que mon programme fais lors de la comparaison de variable
pour un nombre plus grand que 10 il affichera
+guess+guess? (entrer nombre)
pour un nombreinférieur a 10
+guess?
mais immanquablement, jamais je ne toucherais la valeur moin...meême si mon nombre est plus haut que le nombre mystere.
j'ai essayer d'afficher mes nombres pendant que le programme tourne et cela donne quelque chose dans le genre
(A = nbr mystere, B = nombre rentré)
A= 75
B=32
alors voila le résultat et c'Est cette partie que je ne comprend pas!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
guess?(j'entre B)
+,3guess +,2guess?(entrer un nouveau nombre B)
je ne l'illuste p-e pas comme il le faut mais le principe est la...il coupe mon 32 et compare le 3 et le 2 individuellement...du moin c'Est ce que j'en déduis....avec mon intelligeance supérieur.....(hum..)
bref, voila mon code source
(si vous avez des amélioration a suggerer ne vous gené pas ^^)
(j'ai quelque fonction de plus, mais celle qui m'interesse est comparer)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
long comparer(long A ,long B)
{
do
{
printf("\nguess");
scanf("%1d", &B);
if (A > B)
printf("+\n\n");
else if (A < B)
printf("-\n\n");
else
printf("bravvoooo...\n\n");
} while (B != A);
return 0;
}
long players(long D)
{
printf ("Entrer le nombre de jouers (1, 2 )");
scanf ("%1d", &D);
return D ;
}
long generer(long A)
{
const long M = 100, N = 1 ;
srand(time(NULL)) ;
A = (rand() % (M - N + 1)) + N ;
return A;
}
long main(long argc, long *argv[])
{
long A = 0 , B = 0 , D =0, E = 0 ;
do
{
if (players(D) != 1)
{
printf("joueur 1 entrer le nombre");
scanf("%1d", &A);
}
else
{
printf("Generation d'un nombre aleatoire en cours...\n\n") ;
A = generer(A);
}
comparer(A, B);
printf("rejouer?\n 1=oui, 2=non");
scanf("%1d", &E);
}while (E = 1);
system("PAUSE");
return 0;
}
A voir également:
- Aider un débutant en c?
- Logiciel montage vidéo débutant - Guide
- Logiciel de programmation pour débutant - Guide
- Apprendre le coran pour débutant (+ pdf) - Télécharger - Histoire & Religion
- En préparant son diaporama, tom a pris quelques notes qui l'aideront lors de sa présentation. quand il présentera l'âne, il a prévu de raconter une anecdote sur cet animal. comment s'appelle l'âne de son histoire ? - Forum Windows
- Platine dj débutant ✓ - Forum Enregistrement / Traitement audio
4 réponses
Bonjour,
quand tu essaies d'acquerir une valeur entière par scanf(), il faut utiliser le fon format !!
scanf("%1d", &B);
%1d = variable de type int, valeur sur 1 chiffre, donc saisie d'un nombre de 0 à 9 !!!!
essaies avec le format %d, cela marchera à tous les coups !
Sinon ton programme est améliorable, je te le confirme !
quand tu essaies d'acquerir une valeur entière par scanf(), il faut utiliser le fon format !!
scanf("%1d", &B);
%1d = variable de type int, valeur sur 1 chiffre, donc saisie d'un nombre de 0 à 9 !!!!
essaies avec le format %d, cela marchera à tous les coups !
Sinon ton programme est améliorable, je te le confirme !
Bonjour,
J'espère que c'est une erreur de frappe, dans le cas où tu as recopié ton code ^^
Sinon, n'oublie pas de compiler avec les options de Warning (-Wall sous gcc).
}while (E = 1);
J'espère que c'est une erreur de frappe, dans le cas où tu as recopié ton code ^^
Sinon, n'oublie pas de compiler avec les options de Warning (-Wall sous gcc).
Salut !
Des commentaires sur ton code ?
Ho oui plein !
1)INDENTATION !
2)Donne des noms clair à tes variables, on y comprend rien !
3)Faire un return 0; à ta fonction long comparer () est completement inutile. Elle doit donc être de type void.
4)srand(time(NULL)) ; ne doit être appelé qu'une fois et qu 'UNE SEULE FOIS.
5)Ton main ne doit pas être de type long mais int.
6)system("PAUSE"); n'est pas portable, utilise plutôt getchar();
7)Dans ton main tu déclare des long. Donc ensuite tu dois mettre dans tes scanf ceci : %ld
8) do{}while (E = 1); est une boucle infinie ! En effet c'est E == 1
Le jeu que tu as fais est un Plus Ou Moins. Tu peux aller là pour un complément d'information.
https://openclassrooms.com/forum/sujet/aide-plus-ou-moins-pas-a-pas-49992
Pour toutes tes erreurs je te conseille de relire un cour, celui là par exemple.
https://openclassrooms.com/fr/courses
Des commentaires sur ton code ?
Ho oui plein !
1)INDENTATION !
2)Donne des noms clair à tes variables, on y comprend rien !
3)Faire un return 0; à ta fonction long comparer () est completement inutile. Elle doit donc être de type void.
4)srand(time(NULL)) ; ne doit être appelé qu'une fois et qu 'UNE SEULE FOIS.
5)Ton main ne doit pas être de type long mais int.
6)system("PAUSE"); n'est pas portable, utilise plutôt getchar();
7)Dans ton main tu déclare des long. Donc ensuite tu dois mettre dans tes scanf ceci : %ld
8) do{}while (E = 1); est une boucle infinie ! En effet c'est E == 1
Le jeu que tu as fais est un Plus Ou Moins. Tu peux aller là pour un complément d'information.
https://openclassrooms.com/forum/sujet/aide-plus-ou-moins-pas-a-pas-49992
Pour toutes tes erreurs je te conseille de relire un cour, celui là par exemple.
https://openclassrooms.com/fr/courses