Besoin de votre aide

Signaler
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010
-
 Pistol_Pete -
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

Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
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.
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

Bonjour,

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

Merci

je vous les appliquer et l'envoyer ma proposition

Bonne journée
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

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
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
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;
}
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
Merci de m'aider à faire le controle sur la saisie des trois arguments

Tu utilises des if.
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

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
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

pour sprintf que tu as utilisé , c quoi son role exactement ? est ce qu'il retourne une chaine de caractere?
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
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.
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

Merci mon ami pour les info

je te tiens de ma proposition

à bientot
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

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


}
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

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

}
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
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;
}
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

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;
}
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
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é.
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

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;
}
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
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"); 
Messages postés
13
Date d'inscription
mardi 29 décembre 2009
Statut
Membre
Dernière intervention
7 janvier 2010

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
Messages postés
3840
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
19 février 2021
119
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.