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

  FORUM HardWare.fr
  Programmation
  C

  Encore qqs problèmes dans mon programme en C... Pouvez-vous m'aider?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Encore qqs problèmes dans mon programme en C... Pouvez-vous m'aider?

n°696486
saylia
Posté le 09-04-2004 à 14:09:34  profilanswer
 

J'ai réalisé mon programme mais il y a qqs problèmes, pouvez-vous m'aider?  
 
La dernière page , qui doit indiquer que j'ai réalisé ce programme ne s'affiche pas lors de la saisie 0 (aussi , j'aimerais que cela s'affiche en bleu)  
 
Ensuite, pour la recheche par code postal : si deux personnes ont le même code postal, ce programme n'indique qu'une seule personne !  
 
J'espère que vous me suivez!  
 
 
---------------------------------------------  
 
Voici :  
 
#include<stdio.h>  
#include<conio.h>  
#include<stdlib.h>  
#include<string.h>  
 
 
struct s_personne  
{  
char nom[25];  
char prenom[20];  
char rue[25];  
int num;  
short cp;  
char loc[25];  
short age;  
char sexe;  
int taille;  
int poids;  
};  
 
void main()  
 
{  
int choix;  
struct s_personne tab_pers[30];  
struct s_personne tmp;  
int i=0, cptsexe=0, cptage=0, cpttaille=0, cptpoids=0, cpt18=0, cpt=0;  
int j,k,nbr,ligne;  
int totsexe=0, tottaille=0, totpoids=0, menu=1;  
int codepost;  
while (menu==1)  
{  
 
clrscr();  
gotoxy(5,2); printf("** MENU **" );  
gotoxy(5,3); printf(" **** " );  
gotoxy(18,6); printf("1: Encodage" );  
gotoxy(18,7); printf("-----------" );  
gotoxy(18,10); printf("2: Statistique" );  
gotoxy(18,11); printf("--------------" );  
gotoxy(18,14); printf("3: Recherche par Code Postal" );  
gotoxy(18,15); printf("----------------------------" );  
gotoxy(18,1; printf("4: Recherche des personnes majeures" );  
gotoxy(18,19); printf("-----------------------------------" );  
gotoxy(18,22); printf("0: Quitter" );  
gotoxy(18,23); printf("----------" );  
gotoxy(55,25); printf(" Entrez votre choix : " ); scanf("%d",&choix);  
 
while ((choix!=0) && (choix!=1) && (choix!=2) && (choix!=3) && (choix !=4))  
{  
gotoxy(3,26);  
printf("ERREUR -> Entrer une option valable" );  
getch();  
gotoxy(3,26); clreol();  
gotoxy(3,26); printf("\nEntrer votre choix : " ); scanf("%d",&choix);  
}  
switch(choix)  
{  
case 1:  
i=0;  
tab_pers[i].nom[0]='v';  
while(i<30 && tab_pers[i].nom[0] != '*')  
{  
clrscr();  
gotoxy(20,2);printf("** Encodage **" );  
gotoxy(20,3);printf(" ********" );  
gotoxy(5,5); printf("Nom: \t" );  
fflush(stdin);  
gets(tab_pers[i].nom);  
if(tab_pers[i].nom[0] != '*')  
{  
gotoxy(5,7); printf("Prenom: \t" );  
fflush(stdin);  
gets(tab_pers[i].prenom);  
cpt++;  
gotoxy(5,9); printf("Rue: \t" );  
fflush(stdin);  
gets(tab_pers[i].rue);  
gotoxy(5,11); printf("Num?ro: \t" );  
fflush(stdin);  
scanf("%d",&tab_pers[i].num);  
gotoxy(5,13); printf("Code Postal: \t" );  
fflush(stdin);  
scanf("%d",&tab_pers[i].cp);  
gotoxy(5,15); printf("Localite: \t" );  
fflush(stdin);  
gets(tab_pers[i].loc);  
gotoxy(5,17); printf("Age: \t" );  
fflush(stdin);  
scanf("%d",&tab_pers[i].age);  
while(tab_pers[i].age<7 || tab_pers[i].age>77)  
{  
gotoxy(2,24);  
printf("Erreur d'encodage : L'?ge doit ?tre compris entre 7 et 77 ans" );  
getch();  
gotoxy(2,24); clreol();  
gotoxy(5,17); printf("Age: \t" );  
fflush(stdin);  
scanf("%d",&tab_pers[i].age);  
}  
if(tab_pers[i].age>=1  
{  
cptage=cptage+1;  
}  
else  
{  
cpt18=cpt18+1;  
}  
gotoxy(5,19); printf("Sexe: \t" );  
fflush(stdin);  
scanf("%c",&tab_pers[i].sexe);  
while(tab_pers[i].sexe!='h' && tab_pers[i].sexe!='f')  
{  
gotoxy(3,24); printf("Erreur d'encodage: Entrer F ou H pour le sexe de la personne" );  
getch();  
gotoxy(3,24); clreol();  
gotoxy(5,19); printf("Sexe: \t" );  
fflush(stdin);  
scanf("%c",&tab_pers[i].sexe);  
}  
if (tab_pers[i].sexe=='h')  
{  
totsexe=totsexe+1;  
}  
else  
{  
cptsexe++;  
}  
gotoxy(5,21); printf("Taille (cm): \t" );  
fflush(stdin);  
scanf("%d",&tab_pers[i].taille);  
while(tab_pers[i].taille<100 || tab_pers[i].taille>250)  
{  
gotoxy(3,24); printf("Erreur d'encodage: La taille doit ?tre comprise entre 140 et 250" );  
getch();  
gotoxy(3,24); clreol();  
gotoxy(5,21); printf("Taille (cm): \t" );  
fflush(stdin);  
scanf("%d",&tab_pers[i].taille);  
}  
if (tab_pers[i].taille>=180)  
{  
tottaille=tottaille+1;  
}  
else  
{  
cpttaille++;  
}  
 
gotoxy(5,23); printf("Poids (kg): \t" );  
fflush(stdin);  
scanf("%d", &tab_pers[i].poids);  
while(tab_pers[i].poids<1 || tab_pers[i].poids>140)  
{  
gotoxy(3,25); printf("Erreur d'encodage: Le poids doit ?tre compris entre 1 et 140" );  
getch();  
gotoxy(3,24); clreol();  
gotoxy(5,23); printf("Poids (kg): \t" );  
fflush(stdin);  
scanf("%d",&tab_pers[i].poids);  
}  
if (tab_pers[i].poids>=1)  
{  
totpoids=totpoids+1;  
}  
else  
{  
cptpoids++;  
}  
i++;  
}  
 
}  
 
break;  
 
case 2: clrscr();  
gotoxy(20,2);printf("** STATISTIQUE **" );  
gotoxy(20,3);printf (" *********** " );  
gotoxy(3,6);printf("Nombre d'hommes : ____________________________________ %d",totsexe);  
gotoxy(3,;printf("Nombre de femmes : ___________________________________ %d",cptsexe);  
gotoxy(3,10);printf("Nombre de personnes majeures : _______________________ %d",cptage);  
gotoxy(3,12);printf("Nombre de personnes mineures : _______________________ %d",cpt18);  
gotoxy(3,14);printf("Nombre de personnes dont la taille est <1m80 :________ %d",cpttaille);  
gotoxy(3,16);printf("Nombre de personnes dont la taille est >= 1m80 :______ %d",tottaille);  
gotoxy(3,1;printf("Nombre de personnes dont le poids est <= 100kg;_______ %d",totpoids);  
gotoxy(3,20);printf("Nombre de personnes dont le poids est >100kg:_________ %d",cptpoids);  
getch();  
break;  
 
case 3: clrscr();  
gotoxy(20,2);printf("** RECHERCHE PAR CODE POSTAL **" );  
gotoxy(20,3);printf(" ************************* " );  
gotoxy(3,7);printf("Entrez Code Postal : " );  
scanf("%d",&codepost);  
for(i=0;i<=cpt;i++)  
{  
if(tab_pers[i].cp==codepost)  
{  
gotoxy(3,9);printf(" %s %s\n",tab_pers[i].nom,tab_pers[i].prenom);  
}  
}  
getch();  
break;  
case 4: clrscr();  
gotoxy(20,2);printf("** RECHERCHE DES PERSONNES MAJEURES **" );  
gotoxy(20,3);printf(" ******************************** " );  
for(j=1;j<cpt-2;j++)  
{  
for(k=0;k<j;k++)  
{  
if(strcmp(tab_pers[k].nom,tab_pers[j].nom)>0)  
{  
strcpy(tmp.nom,tab_pers[k].nom);  
strcpy(tmp.prenom,tab_pers[k].prenom);  
tmp.age=tab_pers[k].age;  
strcpy(tmp.rue,tab_pers[k].rue);  
tmp.num=tab_pers[k].num;  
tmp.cp=tab_pers[k].cp;  
strcpy(tmp.loc,tab_pers[k].loc);  
tmp.sexe=tab_pers[k].sexe;  
tmp.taille=tab_pers[k].taille;  
tmp.poids=tab_pers[k].poids;  
 
strcpy(tab_pers[k].nom,tab_pers[j].nom);  
strcpy(tab_pers[k].prenom,tab_pers[j].prenom);  
tab_pers[k].age=tab_pers[j].age;  
strcpy(tab_pers[k].rue,tab_pers[j].rue);  
tab_pers[k].num=tab_pers[j].num;  
tab_pers[k].cp=tab_pers[j].cp;  
strcpy(tab_pers[k].loc,tab_pers[j].loc);  
tab_pers[k].sexe=tab_pers[j].sexe;  
tab_pers[k].taille=tab_pers[j].taille;  
tab_pers[k].poids=tab_pers[j].poids;  
 
strcpy(tab_pers[j].nom,tmp.nom);  
strcpy(tab_pers[j].prenom,tmp.prenom);  
tab_pers[j].age=tmp.age;  
strcpy(tab_pers[j].rue,tmp.rue);  
tab_pers[j].num=tmp.num;  
tab_pers[j].cp=tmp.cp;  
strcpy(tab_pers[j].loc,tmp.loc);  
tab_pers[j].sexe=tmp.sexe;  
tab_pers[j].taille=tmp.taille;  
tab_pers[j].poids=tmp.poids;  
}  
}  
}  
 
nbr=1;  
ligne=5;  
for(j=0;j<cpt;j++)  
{  
if(tab_pers[j].age>=1  
{  
if(nbr<16)  
 
{  
gotoxy(4,ligne);puts(tab_pers[j].nom);  
gotoxy(30,ligne);puts(tab_pers[j].prenom);  
ligne++;  
}  
else  
{  
ligne--;  
gotoxy(40,16-ligne);puts(tab_pers[j].nom);  
gotoxy(65,16-ligne);puts(tab_pers[j].prenom);  
 
}  
nbr++;  
}  
}  
 
getch();  
break;  
 
case 0: /* quitter */  
clrscr();  
menu=0;  
gotoxy(20,10);printf("ce prog a ete realise par C.M." );  
 
break;  
 
}  
 
 
}  
 
}  
 
 
----------------------------------------------------  
 
Merci de m'aider.
 
Saylia.

mood
Publicité
Posté le 09-04-2004 à 14:09:34  profilanswer
 

n°696518
Taz
bisounours-codeur
Posté le 09-04-2004 à 14:29:05  profilanswer
 

pas mal tes fflush(stdin); ...
 
encore mieux les gets ...

n°700086
Dag elg
Posté le 15-04-2004 à 13:29:55  profilanswer
 

Pour le code postal tu fais gotoxy(3,9) tu reecris donc sur la meme ligne
je pense. Il n'y aura donc qu'un nom d'affiche a la fin. Il faut decaler  
d'une ligne entre chaque nom trouve.

n°701453
DeusP
Posté le 16-04-2004 à 21:08:47  profilanswer
 

ouai je le pense aussi dans ce cas il suffit de déclarer 1 variable qui est incrémenté a chaque nom trouvé et pour ton affichage il n'y a pas d'attente donc si tu le lance a partir d'une fenetre dos forcement tu ne pas voir le résultat donc rajoute un getchar(); juste avant le dernier break

n°701460
Taz
bisounours-codeur
Posté le 16-04-2004 à 21:17:48  profilanswer
 

Code :
  1. strcpy(tmp.nom,tab_pers[k].nom); 
  2. strcpy(tmp.prenom,tab_pers[k].prenom); 
  3. tmp.age=tab_pers[k].age; 
  4. strcpy(tmp.rue,tab_pers[k].rue); 
  5. tmp.num=tab_pers[k].num; 
  6. tmp.cp=tab_pers[k].cp; 
  7. strcpy(tmp.loc,tab_pers[k].loc); 
  8. tmp.sexe=tab_pers[k].sexe; 
  9. tmp.taille=tab_pers[k].taille; 
  10. tmp.poids=tab_pers[k].poids; 
  11. strcpy(tab_pers[k].nom,tab_pers[j].nom); 
  12. strcpy(tab_pers[k].prenom,tab_pers[j].prenom); 
  13. tab_pers[k].age=tab_pers[j].age; 
  14. strcpy(tab_pers[k].rue,tab_pers[j].rue); 
  15. tab_pers[k].num=tab_pers[j].num; 
  16. tab_pers[k].cp=tab_pers[j].cp; 
  17. strcpy(tab_pers[k].loc,tab_pers[j].loc); 
  18. tab_pers[k].sexe=tab_pers[j].sexe; 
  19. tab_pers[k].taille=tab_pers[j].taille; 
  20. tab_pers[k].poids=tab_pers[j].poids; 
  21. strcpy(tab_pers[j].nom,tmp.nom); 
  22. strcpy(tab_pers[j].prenom,tmp.prenom); 
  23. tab_pers[j].age=tmp.age; 
  24. strcpy(tab_pers[j].rue,tmp.rue); 
  25. tab_pers[j].num=tmp.num; 
  26. tab_pers[j].cp=tmp.cp; 
  27. strcpy(tab_pers[j].loc,tmp.loc); 
  28. tab_pers[j].sexe=tmp.sexe; 
  29. tab_pers[j].taille=tmp.taille; 
  30. tab_pers[j].poids=tmp.poids;

s'eu été trop facile d'utiliser l'affecation entre structure ...

n°701466
DeusP
Posté le 16-04-2004 à 21:43:56  profilanswer
 

ouai c sur que cela aurait été plus simple de ne pas passer par une autre structure temporaire mais bon ca ne doit pas être le seul truc optimisable au niveau du code et ca ne résout en rien le problème ;-)

n°701499
Taz
bisounours-codeur
Posté le 16-04-2004 à 23:38:34  profilanswer
 

non mais complexifier le code en utilisant 30 lignes au lieu de 3, ça détourne l'attention sur des conneries, de telles sorte que tu nages dans ton code

n°701598
darkoli
Le Petit Dinosaure Bleu
Posté le 17-04-2004 à 11:43:17  profilanswer
 

Taz a écrit :

non mais complexifier le code en utilisant 30 lignes au lieu de 3, ça détourne l'attention sur des conneries, de telles sorte que tu nages dans ton code


Je vais peut-être dire une connerie ...
Pourquoi ne pas utiliser la fonction qsort (en écrivant la fonction de comparaison qui va bien) ?

n°701709
Taz
bisounours-codeur
Posté le 17-04-2004 à 15:12:26  profilanswer
 

darkoli a écrit :


Je vais peut-être dire une connerie ...
Pourquoi ne pas utiliser la fonction qsort (en écrivant la fonction de comparaison qui va bien) ?

ben parce que l'intérêt c'est clairement d'écrire un programme foireux le plus long possible


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

  Encore qqs problèmes dans mon programme en C... Pouvez-vous m'aider?

 

Sujets relatifs
[PHP] Problemes de tableaux svpHelp pour compiler un programme *non limité dans le temps*
[C] problemes de lecture dans un fichier des noms de fichiers à ouvrirPb programme de création d'IHM
[Swing][jtree]Problemes d'icones....fermeture du programme
Programme pour schématiser une DBdeux tits problemes sur du Xhtml
Comment faire en sorte qu'un programme ne se charge au max qu'1 fois ?Problème de positionnement [maj : solutions à deux problèmes]
Plus de sujets relatifs à : Encore qqs problèmes dans mon programme en C... Pouvez-vous m'aider?


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