Aide pour travail à rendre

Aide pour travail à rendre - C - Programmation

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.

Reply

Marsh Posté le 17-11-2008 à 21:03:10   

Reply

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).


Message édité par Elmoricq le 17-11-2008 à 21:07:36
Reply

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.

Reply

Marsh Posté le 17-11-2008 à 21:18:44    

Pas étonnant, tu n'affiches rien non plus.

Reply

Marsh Posté le 17-11-2008 à 21:26:07    

Tu veux dire que je ne mets pas de printf ?

Reply

Marsh Posté le 17-11-2008 à 21:47:57    

Exactement.

Reply

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 !!

Reply

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.

Reply

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.

Reply

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.

Reply

Marsh Posté le 18-11-2008 à 11:51:55   

Reply

Marsh Posté le 21-11-2008 à 17:32:13    

Non effectivement mais finalement j'ai trouvé la solution ... ;)

Reply

Marsh Posté le 03-01-2009 à 12:05:50    

Bonjour, moi j'ai le code suivant

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. void Color(int couleurDuTexte,int couleurDeFond);
  5. int main(int argc, char* argv[])
  6. {
  7.     int passe;
  8.     char user;
  9.     printf("User ID " );
  10.     scanf("%s", &user);
  11.     printf("Password " );
  12.     scanf("%d", &passe);
  13.     printf("\n" );
  14.     while ( (passe != 4747) || (passe != 71856) || (passe != 9983) || (passe != 261391) || (passe != 27990) || (passe != 5139) )
  15.       {
  16.         printf("ERREUR\nEntrez votre mot de passe.\n" );
  17.         scanf("%d" , &passe);
  18.       }


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.


Message édité par loid le 03-01-2009 à 12:23:09
Reply

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?


---------------
Petit guide Kerberos pour l'administrateur pressé
Reply

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 ?


Message édité par loid le 03-01-2009 à 12:33:55
Reply

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 &&


Message édité par jagstang le 03-01-2009 à 14:11:15

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 03-01-2009 à 13:25:39    

ok mais alors comment faire pour autorisé plusieurs mot de passe ?

Reply

Marsh Posté le 03-01-2009 à 13:52:46    

Super c'est bon merci beaucoup =)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed