Aide pour travail à rendre - C - Programmation
Marsh Posté le 17-11-2008 à 21:07:20
Enlève le 0 dans tes constantes numériques, parce qu'il sert à indiquer au compilateur qu'il s'agit d'une valeur octale (base 8).
Marsh Posté le 17-11-2008 à 21:16:18
Merci Elmoricq, c'était bien ca le problème maintenant ca fonctionne.
Peux tu pourras tu m'aider pour les autres.
Le 2e exercice : Ecrire un programme proposant le jeu le suivant : l’ordinateur tire au hasard un nombre entre 51 et 100 et l’affiche. Le joueur 1 et le joueur 2 doivent soustraire simultanément de ce nombre un nombre compris entre 1 et 9 (ou ce qu’il reste s’il reste moins de 9), après chaque soustraction le total restant est affiché. La fin du jeu est atteint quand un joueur atteint 0 et à de ce fait perdu. Le programme indique quel joueur a perdu.
Voici ce que j'ai fait :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main ()
{
int nbh , temp = 0, j1 = 0, j2 = 0;
srand(time (NULL));
nbh = 51+rand()%(100-51);
printf("%d", nbh);
while ((j1 < nbh) && (j2 < nbh))
{
do {
scanf("%d", &temp);
}
while ((temp < 1 || temp > 9) && (temp <= nbh -j1));
j1 = j1 + temp;
do {
scanf("%d", &temp);
}
while ((temp < 1 || temp > 9) && (temp <= nbh -j2));
j2 = j2 + temp;
}
return 0;
}
Le compilateur ne me détecte aucun problème mais mon programme ne fonctionne pas. Il me met bien un chiffre au hasard mais ensuite je peux taper tout ce que je veux il ne se passe rien.
Marsh Posté le 17-11-2008 à 21:50:33
Le prof ne veut pas qu'on s'ennuie avec les printf. Pas besoin d'afficher que c'est au joueur 1 puis au joueur 2... On le sait quand on test le programme !!
Marsh Posté le 17-11-2008 à 21:53:33
Pourquoi pas. Le souci est que là, tu n'affiches même pas le résultat, donc tu n'as aucun retour sur ce qui se passe. Forcément, pour savoir si ça fonctionne, c'est un peu dur.
Sauf si tu préfères suivre ça en pas à pas avec un debugger.
Marsh Posté le 17-11-2008 à 21:54:53
ok je vais quand meme afficher qq printf pour m'y retrouver, merci pour ton aide.
Marsh Posté le 18-11-2008 à 11:51:55
Nat28 a écrit : après chaque soustraction le total restant est affiché. |
Ce n'est pas seulement pour t'y retrouver, on dirait.
Marsh Posté le 21-11-2008 à 17:32:13
Non effectivement mais finalement j'ai trouvé la solution ...
Marsh Posté le 03-01-2009 à 12:05:50
Bonjour, moi j'ai le code suivant
Code :
|
C'est le debut de mon code, mais peut importe le mot de passe tapé, j'ai le message d'erreur ERREUR\nEntrez votre mot de passe affiché par mon printf, pourquoi ?
EDIT : je précise qu'il n'y a aucune erreur de detectee quand je compile.
Marsh Posté le 03-01-2009 à 12:29:15
Normal, y'a pas d'erreur.
Es-tu sur d'avoir compris le sens de ta condition dans le while?
Marsh Posté le 03-01-2009 à 12:31:16
Bah je traduit ma condition comme ça:
tant que passe différent de XXX ou différent de XXXX... afficher le message d'erreur, si passe == l'un des XXXX continué le programme.
c'est pas ça ?
Marsh Posté le 03-01-2009 à 13:18:02
non c'est pas ça. mais plutôt tant que tout les pass sont différents de xxx
edit : remplace || par &&
Marsh Posté le 03-01-2009 à 13:25:39
ok mais alors comment faire pour autorisé plusieurs mot de passe ?
Marsh Posté le 17-11-2008 à 21:03:10
Bonjour, je débute dans le langage c, j'aurai besoin d'aide pour m'aider à terminer des exercices (travail à rendre). Le premier doit être un programme qui lit une date, la vérifie (valide ou non) et affiche le résultat. Je dois me limiter aux années comprises entre 1583 et 2483 et au calendrier grégorien.
Voici ce que j'ai fait :
#include <stdio.h>
int main ()
{
int jour, mois, annee;
do {
printf ("Entrez une date : " );
scanf ("%d%d%d", &jour, &mois, &annee);
if ((annee % 4 == 0) && ((annee % 100 != 0) || (annee % 400 == 0)) && (mois == 02));
else if ((jour <= 29) && (jour > 0))
printf ("date valide" );
else
printf ("date non valide" );
if ((jour <= 28) && (jour > 0))
printf ("date valide" );
else
printf ("date non valide" );
if ((mois == 01) || (mois == 03) || (mois == 05) || (mois == 07) || (mois == 08) || (mois == 10) || (mois == 12))
if (0 < jour <= 31)
printf ("date valide" );
else
printf ("date non valide" );
else if ((0 < jour <= 30) && (mois <= 12));
}
while ((annee > 1583) || (annee < 2483));
return 0;
}
Pas possible de le tester car il me met comme erreur : invalid digit "8" in octal constant pour la ligne 23 (c-à-d celle en bleue)
D'avance merci.