Exercice en langage C

Résolu
yadhus Messages postés 34 Statut Membre -  
 amigo -
Bonjour, j'ai un problème avec un exercice, Voilà l'énoncé ainsi que le code source que j'ai essayé:
Je vous préviens que je suis encore débutant:

Exercice 1 :

Ecrire un programme qui permet de saisir un entier puis d’afficher le jour de la semaine correspondant en utilisant un tableau de pointeur.


#include <stdio.h>
#include <string.h>

typedef char *string;

int main () {
printf ("Donner un entier\n");
int j;
scanf ("%d",&j);
string *jour[7];


strcpy (*jour[1],"Lundi");
strcpy (*jour[2],"Mardi");
strcpy (*jour[3],"Mercredi");
strcpy (*jour[4],"Jeudi");
strcpy (*jour[5],"Vendredi");
strcpy (*jour[6],"Samedi");
strcpy (*jour[7],"Dimanche");

puts (*jour[j]);

return 0;
}
A voir également:

8 réponses

pitifarfadet
 
Bonjour j'ai un problème avec un exercice tout b^te, mais j'arrive pas à otenir ce que je veux. voici l'énnoncer:

Ecrire un programme qui lit 10 nombres entrés par l'utilisateur, puis qui indique lesquels d'entre eux sont dupliqués.

et voici ce que j'ai fais(je suis novice en C, alors ne me réponder des truc hyper compliquer merci!!):

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
int tab[10];
int i,a,num;

for (i = 1; i < 11; i++) tab[i-1] = i;

for(i=0; i<10; i++){
printf("entrer un nombre:");
scanf("%d", &tab[i]);
}

for(i=1; i<10;i++){
for(a=0; a<10; a++) {
if(tab[a]==tab[a+1]){
num=tab[a+1];
tab[a+1]=tab[a];
num=tab[a];
}
}
}

for(num=0; num<10; num++) printf("%d ", tab[num]);

return 0;
}

et celui la aussi:

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
int tab[10];
int i,num;

for (i = 1; i < 11; i++) {
printf("entrer un nombre:");
scanf("%d", &tab[i-1]);
}
do{
if(tab[i]==tab[i+1]) num=tab[i];
}while(i<10);

printf("%d", num);
return 0;
}

si quelqu'un pourrais me dire ce qui cloche?? merci d'avance!
4
L'info
 
Salut

Essaye ça, je pense que ça marchera.


#include <stdio.h>
#include <string.h>

typedef char *string;

int main () {
printf ("Donner un entier\n");
int j;
scanf ("%d",&j);
string *jour = malloc ( 7 * sizeof(string) );


strcpy (jour[0],"Lundi");
strcpy (jour[1],"Mardi");
strcpy (jour[2],"Mercredi");
strcpy (jour[3],"Jeudi");
strcpy (jour[4],"Vendredi");
strcpy (jour[5],"Samedi");
strcpy (jour[6],"Dimanche");

puts (jour[j]);

return 0;
}
1
yadhus Messages postés 34 Statut Membre 3
 
Merci beaucoup les gars
1
amigo
 
Salut,

La déclaration des variables doit etre juste apres main()

Je ne suis pas expert en C++, mais j'ai compilé ce programme et il marche.

#include <stdio.h>
#include <string.h>

typedef char *string;

int main () {
int j;
string jour[7][10];
strcpy (jour[0][0],"Lundi");
strcpy (jour[1][0],"Mardi");
strcpy (jour[2][0],"Mercredi");
strcpy (jour[3][0],"Jeudi");
strcpy (jour[4][0],"Vendredi");
strcpy (jour[5][0],"Samedi");
strcpy (jour[6][0],"Dimanche");

printf ("Donner un entier entre 1 et 7\n");
scanf ("%d",&j);

if ((j<1) || (j>7))
printf("le nombre doit etre compris entre 1 et 7\n");
else
printf ("le jour de la semaine est : %s\n",jour[j-1][0]);

getch();
return 0;
}

salut.
0

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

Posez votre question
star.88 Messages postés 3 Statut Membre
 
je ss etudiante et j'ai un prb avec cette exo et voici mon msn star.88@live.fr
TP SI
soit un fichier "ETUDIANT"d'ou l'enregisterment (article) à le format suivant:
Etudiant Nom Prenom Date de naiss Institut Sexe
N(6) A(20) A(20) jj/mm/aa A(20) M/F

1. Declarer un enregistrement du fichier ETUDIANT en C ?
2. Ecrire un programme en C permettant la creation du fichier ETUDIANT ?

le menu doit etre afficher comme suit:
------------------------------------------------------------------------------------------------------------------------------------------------------------
Université Mentouri Constantine

Faculté des sciences de l'ingenieurs
Deprtement d'informatique
Module: SI Realiser par :
-------------------------------------------------------------------------------------------------------------------------------------------------------------

*Faite votre choix:

1- Creation 4- Afficher Etudiants
2- Afficher 5- Afficher Etudiantes
3- Eclater 6- Afficher le plus jeune etudiant
7- Afficher la plus jeune etudiante
--------------------------------------------------------------------------------------------------------------------------------------------------------------
*Utiliser l'instruction ( Switch case)*
0
amigo
 
Bonjour,

Le premier exercice n'était pas loin de la solution, la première boucle for ne sert à rien, les deux autres boucles for imbriquées n'étaient pas bien indexées.

Ma correction (je n'ai pas testé).
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
int tab[10];
int i,a,num;

for(i=0; i<10; i++){
printf("entrer un nombre:");
scanf("%d", &tab[i]);
}

//verification
printf("Vous avez saisi:\n");
for(num=0; num<10; num++) printf("tab[%d] = %d\n", num,tab[num]);

for(i=0; i<9;i++){
for(a=1; a<10; a++) {
if(tab[i]==tab[a]){
printf("element %d = element %d = %d\n",i,a,tab[i]);
}
}
}
return 0;
}


Le deuxième exercice n'est pas bon au niveau de la boucle do while
do{
if(tab[i]==tab[i+1]) num=tab[i];
}while(i<10);

Premièrement la variable i n'est pas initialisée, elle aura certainement la valeur de sortie de la première boucle for, c a d i=11, donc les éléments comparés sont tab[11] et tab[12] alors que tab est dimensionné pour 10 entiers...
De ce fait la boucle do ne s'execute qu'une fois puisque la condition de sortie est satisfaite.

Deuxièmement, si i etait inférieur à 10, la boucle do while serait infinie parce que i n'est jamais incrémenté.

Troisièmement la logique de comparaison n'est pas bonne, parce que tu ne compares que deux éléments consécutifs et non un élement à tous les autres.

A+.
0
amigo
 
Ah, au fait, rajoute un un getch() à la fin du prog pour laisser l'affichage de l'écran

printf("element %d = element %d = %d\n",i,a,tab[i]);
}
}
}
getch();
return 0;
}
0
amigo
 
Et en relisant, je trouve enoire une erreur, alors je remet le programme complet:

<code>
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
int tab[10];
int i,a,num;

for(i=0; i<10; i++){
printf("entrer un nombre:");
scanf("%d", &tab[i]);
}

//verification
printf("Vous avez saisi:\n");
for(num=0; num<10; num++) printf("tab[%d] = %d\n", num,tab[num]);

for(i=0; i<9;i++){
for(a=i+1; a<10; a++) {
if(tab[i]==tab[a]){
printf("element %d = element %d = %d\n",i,a,tab[i]);
}
}
}
getch();
return 0;
}
<code>
0