Besoin de votre aide

akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010 - 29 déc. 2009 à 15:48
 Pistol_Pete - 7 janv. 2010 à 14:23
Bonjour

Je suis débutant en informatique et on vient d'entamer la partie des procédures et fonctions et j'ai trouvé des difficulté pour faire ce programme C qui permettra de saisir le jour, le mois et l'année (entiers) et d'afficher une date de type chaine de caractères sous forme JJ/MM/AAAA en utilisant une fonction.

Merci de m'aider, j'ai besoin du code source, je vous rappel que je travaille avec la version turbo C++ 4.5.

22 réponses

cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
29 déc. 2009 à 16:10
Bonjour.

Nous ne faisons pas le travail des étudiants.

En revanche, si tu postes ton code, nous pouvons te donner des indices et t'aider à la corriger.
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
30 déc. 2009 à 13:17
Bonjour,

Je te demande pas de me faire mon travail, seulement m'initier pour commencer le programme demandé et les instructions à utiliser...
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
30 déc. 2009 à 13:30
Il te faut utiliser: scanf, printf, strcat, strcpy.
Après, c'est à toi de jouer !
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
30 déc. 2009 à 14:56
Merci

je vous les appliquer et l'envoyer ma proposition

Bonne journée

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
6 janv. 2010 à 11:36
Bonjour ,

j'ai pu faire le prog de la date mais reste un petit truc concernant le controle du jour(1,31) mois (1,12) et année , je ne sais pas comment faire , j'ai essayé avec if mais ça marche pas
voilà le code que jé fais :

#include <stdio.h>
#include<conio.h>
#include <string.h>
#include <stdlib.h>
void main ()
{

char jj[40];
char mm[40];
char aa[6];
int j,m,a;

printf("entrer le jour: ");
scanf("%d",&j);
printf("entrer le mois: ");
scanf("%d",&m);
printf("entrer l'année: ");
scanf("%d",&a);
itoa(j,jj,10);
itoa(m,mm,10);
itoa(a,aa,10);
strcat(jj,"/");
strcat(jj,mm);
strcat(jj,"/");
strcat(jj,aa);
clrscr();
printf("la date siasie est: %s \n",jj);

}

Merci de m'aider à faire le controle sur la saisie des trois arguments
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
6 janv. 2010 à 12:13
Attention itoa n'est pas standard, et ne fonctionnera pas partout !

Une solution plus simple et portable:
#include <stdio.h>

int main()
{

  char jj[40];
  int j,m,a;

  printf("Entrez le jour: ");
  scanf("%d", &j);
  printf("Entrez le mois: ");
  scanf("%d", &m);
  printf("Entrez l'annee: ");
  scanf("%d", &a);
  sprintf(jj, "%d/%d/%d", j, m, a);

  printf("La date saisie est: %s\n",jj);

  return 0;
}
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
6 janv. 2010 à 12:14
Merci de m'aider à faire le controle sur la saisie des trois arguments

Tu utilises des if.
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
6 janv. 2010 à 12:28
qu'est ce que tu veux dire itoa n'est pas standard, et ne fonctionnera pas partout ! partout ou exactement ? moi je travaille avec la version C++ 4.5
pour le controle de la date , j'ai essayé avec if mais ça marche pas. fais moi une proposition pour le jour par exemple
merci
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
6 janv. 2010 à 12:30
pour sprintf que tu as utilisé , c quoi son role exactement ? est ce qu'il retourne une chaine de caractere?
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
6 janv. 2010 à 12:53
qu'est ce que tu veux dire itoa n'est pas standard

Pas présent sur tous les compilateurs. J'utilise gcc en mode ansi, et il n'y est pas.


pour sprintf que tu as utilisé , c quoi son role exactement ? est ce qu'il retourne une chaine de caractere?

sprintf fait un printf dans une chaine, au lieu de le mettre à l'écran.

fais moi une proposition pour le jour par exemple

C'est juste des if, tu vérifies que le jour est bien compris entre 1 et 31 par exemple. A toi de le faire.
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
6 janv. 2010 à 13:00
Merci mon ami pour les info

je te tiens de ma proposition

à bientot
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
6 janv. 2010 à 15:14
j'ai essayé avec if comme tu ma dis mais ça donne rien...
peut- tu me montrer comment faire ?

Mon prog :

#include <stdio.h>

void main()
{

char jj[40];
int j,m,a;

printf("Entrez le jour: ");
if j>=1 and j<=31
scanf("%d", &j);

printf("Entrez le mois: ");
if m>=1 and j<=12
scanf("%d", &m);

printf("Entrez l'annee: ");
if m>=1 and j<=9999
scanf("%d", &a);

sprintf(jj, "%d/%d/%d", j, m, a);
printf("La date saisie est: %s\n",jj);


}
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
6 janv. 2010 à 15:31
SALUT
en fait le programme doit appeler une fonction 'madate" que on appelle au programme principal

voilà jé refais le prog mais toujours pas de controle sur les trois arguments, aidez moi

#include <stdio.h>

void madate (int j,int m,int a)
{
sprintf(jj, "%d/%d/%d", j, m, a);

printf("La date saisie est: %s\n",jj);


}
void main()
{
int j1,m1,a1;
char nom[29];


printf("Entrez le jour: ");
if j1>=1 and j1<=31
scanf("%d", &j);

printf("Entrez le mois: ");
if m1>=1 and m1<=12
scanf("%d", &m);

printf("Entrez l'annee: ");
if a1>=1 and a1<=9999
scanf("%d", &a);
madate (j1,m1,a1);

}
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
6 janv. 2010 à 17:22
Si tu ne connais pas la syntaxe du C, recherche des tutos de C sur le site du zéro, avant de venir poser des questions.

if j1>=1 and j1<=31

if (j1 >= 1 && j1 <= 31)

Attention, non testé:
#include <stdio.h>

void madate(void)
{
  int j1 0, m1 0, a1 =0;
  printf("Entrez le jour: ");
  if (j1 >= 1 && j1 <= 31)
    scanf("%d", &j);

  printf("Entrez le mois: ");
  if (m1 >= 1 && m1 <= 12)
    scanf("%d", &m);

  printf("Entrez l'annee: ");
  if (a1 >= 1 && a1 <= 9999)
    scanf("%d", &a);
  sprintf(jj, "%d/%d/%d", j, m, a);

  printf("La date saisie est: %s\n",jj);
}

int main()
{
  madate();
  return 0;
}
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
7 janv. 2010 à 10:59
Bonjour ,

je tous essayé avec la condition "if" mais ça marche pas , je pense que c'est impossible avec if car il ne donne meme pas la main pour saisir, voilà le prog :

#include <stdio.h>

void madate(void)
{
char jj[40];
int j 0, m 0, a =0;
printf("Entrez le jour: ");
if (j >= 1 && j <= 31)
scanf("%d", &j);

printf("Entrez le mois: ");
if (m >= 1 && m <= 12)
scanf("%d", &m);

printf("Entrez l'annee: ");
if (a >= 1 && a <= 9999)
scanf("%d", &a);
sprintf(jj, "%d/%d/%d", j, m, a);

printf("La date saisie est: %s\n",jj);
}

int main()
{
madate();
return 0;
}
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
7 janv. 2010 à 11:02
J'ai juste réécrit proprement ce que tu avais écrit, je ne t'ai absolument pas filé la réponse !
Donc oui, ça ne fonctionne pas.

Le problème vient du fait que les tests sont fait avant les scanf. Tu dois d'abord récupérer les valeurs via scanf, puis tester leur validité.
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
7 janv. 2010 à 11:17
tu as raison mais le pb c quoi l'instruction qui viens apres si if est vrai, jé refais ce que tu ma dis toujours meme pb, j'ai meme introduis else , ça donne rien

#include <stdio.h>

void madate(void)
{
char jj[40];
int j 0, m 0, a =0;
printf("Entrez le jour: ");
scanf("%d", &j);
if (j >= 1 && j <= 31)
scanf("%d", &j);
else
printf("jour non valide ");

printf("Entrez le mois: ");
scanf("%d", &m);
if (m >= 1 && m <= 12)
scanf("%d", &m);
else
printf("mois non valide ");

printf("Entrez l'annee: ");
scanf("%d", &a);
if (a >= 1 && a <= 9999)
scanf("%d", &a);
else
printf("année non valide ");
sprintf(jj, "%d/%d/%d", j, m, a);

printf("La date saisie est: %s\n",jj);
}

int main()
{
madate();
return 0;
}
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
7 janv. 2010 à 11:21
Peux-tu mettre ton code en couleur et l'indenter ? (Tu as des boutons prévu à cet effet).
Fais un minimum attention à ton orthographe, n'utilise pas d'abréviations ou de langage sms.

Exemple très simple:
printf("Entrez le jour: ");
scanf("%d", &j);
if (j >= 1 && j <= 31)
  printf("Jour valide\n"); 
else
  printf("Jour non valide\n"); 
akhnatoune Messages postés 13 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 7 janvier 2010
7 janv. 2010 à 11:36
Merci pour tes precieux conseils, n'oublie pas que je suis nouveau dans ce site.

pour le programme, je compilé avec la close que tu ma decris mais ça donne pas la main de resaisir je les trois arguments s'ils ne verifie pas la condition alors je pense qu'il faut opter pour une boucle, je t'avais dis que ça marchera jamais avec 'if':
[b]
[color=red]
#include <stdio.h>[color=yellow][color=yellow]/color

void madate(void)
{
char jj[40];
int j 0, m 0, a =0;

printf("Entrez le jour : ");
scanf("%d", &j);
if (j >= 1 && j <= 31)
printf("Jour valide\n");
else
printf("Jour non valide\n");

printf("Entrez le mois : ");
scanf("%d", &m);
if (m >= 1 && m <= 12)
printf("mois valide\n");
else
printf("mois non valide\n");

printf("Entrez l'année : ");
scanf("%d", &a);
if (a >= 1 && a <= 9999)
printf("année valide\n");
else
printf("année non valide\n");

sprintf(jj, "%d/%d/%d", j, m, a);

printf("La date saisie est: %s\n",jj);
}

int main()
{
madate();
return 0;/color[color=red]/color
}/color
/b
cptpingu Messages postés 3839 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 29 juin 2024 124
7 janv. 2010 à 11:40
Utilise les balises de code, être nouveau n'excuse pas un manque de recherche (Teste tous les boutons, et utilise la fonction aperçu avant d'envoyer un message).

pour le programme, je compilé avec la close que tu ma decris mais ça donne pas la main de resaisir je les trois arguments s'ils ne verifie pas la condition alors je pense qu'il faut opter pour une boucle, je t'avais dis que ça marchera jamais avec 'if':

C'est à toi de le faire, il te faut effectivement une boucle. Tant que l'utilisateur n'a pas entré la bonne valeur, tu lui redemandes.
Rejoignez-nous