Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1804 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Aide pour travail à rendre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour travail à rendre

n°1813162
Nat28
Posté le 17-11-2008 à 21:03:10  profilanswer
 

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.

mood
Publicité
Posté le 17-11-2008 à 21:03:10  profilanswer
 

n°1813164
Elmoricq
Modérateur
Posté le 17-11-2008 à 21:07:20  profilanswer
 

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
n°1813172
Nat28
Posté le 17-11-2008 à 21:16:18  profilanswer
 

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.

n°1813174
Elmoricq
Modérateur
Posté le 17-11-2008 à 21:18:44  profilanswer
 

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

n°1813176
Nat28
Posté le 17-11-2008 à 21:26:07  profilanswer
 

Tu veux dire que je ne mets pas de printf ?

n°1813181
Elmoricq
Modérateur
Posté le 17-11-2008 à 21:47:57  profilanswer
 

Exactement.

n°1813182
Nat28
Posté le 17-11-2008 à 21:50:33  profilanswer
 

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

n°1813186
Elmoricq
Modérateur
Posté le 17-11-2008 à 21:53:33  profilanswer
 

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.

n°1813187
Nat28
Posté le 17-11-2008 à 21:54:53  profilanswer
 

ok je vais quand meme afficher qq printf pour m'y retrouver, merci pour ton aide.

n°1813339
matafan
Posté le 18-11-2008 à 11:51:55  profilanswer
 

Nat28 a écrit :

après chaque soustraction le total restant est affiché.


Ce n'est pas seulement pour t'y retrouver, on dirait.

mood
Publicité
Posté le 18-11-2008 à 11:51:55  profilanswer
 

n°1815100
Nat28
Posté le 21-11-2008 à 17:32:13  profilanswer
 

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

n°1833337
loid
Posté le 03-01-2009 à 12:05:50  profilanswer
 

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
n°1833344
Gf4x3443
Killing perfection
Posté le 03-01-2009 à 12:29:15  profilanswer
 

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é
n°1833345
loid
Posté le 03-01-2009 à 12:31:16  profilanswer
 

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
n°1833360
jagstang
Pa Capona ಠ_ಠ
Posté le 03-01-2009 à 13:18:02  profilanswer
 

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?  
n°1833362
loid
Posté le 03-01-2009 à 13:25:39  profilanswer
 

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

n°1833370
loid
Posté le 03-01-2009 à 13:52:46  profilanswer
 

Super c'est bon merci beaucoup =)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Aide pour travail à rendre

 

Sujets relatifs
Balise TitleAide pour l'assembleur ARM
[ C ] Bonjour, aide pour traduire en C .[expression reguliere] besoin d'aide
[résolu] aide sur une fonctionAide pour un chat RMI en Java
Aide pour un devoirAide sur requête SQL
besoin d'aide pour un site svp.[VB.Net2003-2005+SQL-Access] Commandes et Syntaxes pour travail de BDD
Plus de sujets relatifs à : Aide pour travail à rendre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR