Devoir programmation en C.

Devoir programmation en C. - C - Programmation

Marsh Posté le 25-05-2006 à 12:14:39    

A rendre dans une semaine. entre 1 controle d'algèbre, analyse, proba stat, microeco, politique eco..
 
ça va être chaud chaud chaud...
 
 
alors les gars il faut m'aider, je vous rendrait tous les services en maths que vous voulez, mais en C je suis vraiment trop une merde.
 
voila le programme à faire :
 
a l'aide d'un tableau de personnes (nom, prenom, date de naissance, lieu de naissane, n° passeport, date de délivrance du passeport), ecrire un programme C qui permet de rentrer les données des personnes rentré au clavier (on les rentre tous d'un coup), et qui ensuite, effectue une recherche automatique de toutes les personnes selon leur nom, ou prenom, ou date....
par exemple, tous les gars qui s'appellent patrick, ou franck..
 
 
amusez vous bien. je sais qu'il y a des vrais bêtes dans le coin, j'ai un peu honte, ça va rire..
 
 

Reply

Marsh Posté le 25-05-2006 à 12:14:39   

Reply

Marsh Posté le 25-05-2006 à 12:19:18    

Citation :

[0D] De la même manière, les demandes de résolutions d'exercices ne seront pas acceptées
 
    * Du moins, s'il s'agit d'une demande de solution toute faite, sans effort manifeste du côté du demandeur. Cette décision a été prise étant donné le nombre croissant de ce type de demandes lors des périodes de reprise des cours ou d'approche des périodes d'examens.
    * Merci aux membres du forum de ne pas donner des résolutions d'exercice lorsqu'il est clair que le demandeur n'a rien fait de son côté ;)  


http://forum.hardware.fr/forum2.ph [...] 544&cat=10
 
De rien


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 25-05-2006 à 12:43:33    

rudy1895 a écrit :

A rendre dans une semaine. entre 1 controle d'algèbre, analyse, proba stat, microeco, politique eco..
 
ça va être chaud chaud chaud...


Hé oui, c'est la dure loi de la sélection des meilleurs...
 

rudy1895 a écrit :

alors les gars il faut m'aider


T'as raison, il le faut !!!
Je me sens déjà tout entier rempli de cette mission  :sol:  
 

rudy1895 a écrit :

, je vous rendrait tous les services en maths que vous voulez, mais en C je suis vraiment trop une merde.


Apparemment t'es pas non plus un crack de la conjugaison ;) Bon heureusement qu'il te reste les maths...
 

rudy1895 a écrit :

amusez vous bien. je sais qu'il y a des vrais bêtes dans le coin, j'ai un peu honte, ça va rire..


Oui, je ris déjà beaucoup à l'idée de voir ce que t'as déjà pondu...  :D
 
 :non: Montre-nous ce que t'as fait et on te dira si c'est correct (comme on le fait déjà pour d'autres). Mais ne compte pas sur nous pour bosser à ta place... => http://forum.hardware.fr/forum2.ph [...] 40&print=0


Message édité par Sve@r le 25-05-2006 à 13:30:33

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 25-05-2006 à 13:18:56    

rudy1895 a écrit :

A rendre dans une semaine. entre 1 controle d'algèbre, analyse, proba stat, microeco, politique eco..
 
ça va être chaud chaud chaud...


 
http://pix.nofrag.com/cf/86/e6c8187e7083e196935c74c358d5.jpg

rudy1895 a écrit :

alors les gars il faut m'aider


http://pix.nofrag.com/1f/3c/bc040e0b72c218d2b7a13c6e4a59.gif
 

rudy1895 a écrit :

je vous rendrait tous les services en maths que vous voulez


http://pix.nofrag.com/a2/72/4178c61063c799f408b1904f6f56.gif
 

rudy1895 a écrit :

amusez vous bien.


http://cytrouille.free.fr/hfr/divers/jospin_mini2.jpg

Reply

Marsh Posté le 25-05-2006 à 13:33:54    

Indices :
 
Tableau de structures
Entrées clavier
Chaines de caractères.

Reply

Marsh Posté le 25-05-2006 à 13:49:26    

LePhasme a écrit :

Indices :
 
Tableau de structures
Entrées clavier
Chaines de caractères.


... et beaucoup d'autres chapitres de ton livre de C... [:aloy]


Message édité par Sve@r le 25-05-2006 à 13:52:52

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 25-05-2006 à 14:23:38    

ah la la..
 
bon va falloir que je bosse.  
 
je vous poste ce que j'ai fait dans la journée.
 
si vous pouvez jeté un coup d'oeil c'est sympa..

Reply

Marsh Posté le 25-05-2006 à 14:26:27    

rudy1895 a écrit :

ah la la..
 
bon va falloir que je bosse.  
 
je vous poste ce que j'ai fait dans la journée.
 
si vous pouvez jeté un coup d'oeil c'est sympa..


 
ca c'est deja une attitude plus constructive


---------------

Reply

Marsh Posté le 25-05-2006 à 14:41:49    

rudy1895 a écrit :

ah la la.. bon va falloir que je bosse.


On est tous passés par là et on espère tous que tu réussiras  :bounce:  
 

rudy1895 a écrit :

si vous pouvez jeter un coup d'oeil c'est sympa..


On le fera...


Message édité par Sve@r le 25-05-2006 à 14:42:44

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 25-05-2006 à 15:14:34    

Allez si tu veux je te le fais gratos, ca n'a pas l'air trop dur, j'en ai pour 3 heures, par contre je pourrais que le faire le weekend prochain donc si tu as le temps ....
 
Tu viens d'où ?

Reply

Marsh Posté le 25-05-2006 à 15:14:34   

Reply

Marsh Posté le 25-05-2006 à 15:42:42    

je l’ai fait avec seulement 2 informations par personnes. Désolé mais j’ai pas trvouver les accolades sur mon mac, ni le slash du retour chariot. Voici le chef-d’œuvre..
 
#include <stdio.h>
#include <strings.h>
  typedef Nmax=1000
  personne struct ( char nom tab(15); char prenom tab(20)....)
 
main()
(/*déclaration des variables*/
 int n, i
 struct personne tab();  
 char recherche tab(20)
 
 /*ecriture de chacune des personnes*/
 for (i=0, i<NMAX, i++)
  (printf("Nom : /n" );
   gets(tab(i)nom);
   printf("Prenom : /n" );
   gets(tab(i)prenom);
  )  
 
/*Entrée et lecture des informations de recherche*/
  printf("taper 0 pour une recherche par nom/n" );
  printf ("taper 1 pour une recherche par prenom/n" );
  scanf("%d", &n);
  printf(« entrer les informations de recherche ») ;
  gets(recherche()) ;
   
/*Recherche*/
  if(n==1)
   
    (for(i==0, i<NMAX, i++)
     (if(strcmp (recherche, tab(i)nom==0))
        c++;
      else
       printf(«personne (i)) ;
       if(c==NMAX)
        printf(« no result/n ») ;
     )
     
    else
     (for(i==0, i<NMAX, i++)
       (if(strcmp (recherche, tab(i)nom==0))
          c++;
        else
         printf(«personne (i)) ;
         if(c==NMAX)
 
          printf(« no result/n ») )
 
n'hésitez pas à me faire des suggestions..

Reply

Marsh Posté le 25-05-2006 à 16:32:31    

Tu es sûr que c'est du C ?
Tu as compilé ?

Reply

Marsh Posté le 25-05-2006 à 16:47:57    

non j'ai pas compilé.
 
et ouai c'est du C.  
 
d'ailleurs j'ai jamais réussit à compiler, il y a toujours des millions d'erreur. genre une virgule..

Reply

Marsh Posté le 25-05-2006 à 16:57:21    

[:pingouino]


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 25-05-2006 à 16:59:18    

[:roane]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 25-05-2006 à 17:02:01    

à ce point??

Reply

Marsh Posté le 25-05-2006 à 17:02:34    

Tu sais qu'en C les talbeaux s'écrivent avec des [] et non pas avec des () comme en VB ?
C'est quoi ça "char recherche tab(20) " pour toi ?

Citation :

amusez vous bien. je sais qu'il y a des vrais bêtes dans le coin, j'ai un peu honte, ça va rire..  

Message cité 1 fois
Message édité par Trap D le 25-05-2006 à 17:03:51
Reply

Marsh Posté le 25-05-2006 à 17:03:42    

Trap D a écrit :

Tu sais qu'en C les talbeaux s'écrivent avec des [] et non pas avec des () comme en VB ?
C'est quoi ça "char recherche tab(20) " pour toi ?


Citation :

je l’ai fait avec seulement 2 informations par personnes. Désolé mais j’ai pas trvouver les accolades sur mon mac, ni le slash du retour chariot. Voici le chef-d’œuvre..


les Crochets doivent en faire parti


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 25-05-2006 à 17:08:28    

Ouaip enfin ya pas mal d'erreurs qui sont rapides a voir...  :??:  
 
Avis a la populasse : (roulement de tambour !!!  :bounce: )
 
- Comment faire une condition en C
 
if (condition) {
                    instruction 1;
                    }
else (condition) {
                       instruction 2;
                       }
etc....
 
C'est le meme type de structure pour une boucle while, di...while, for ou autres.  :sweat:  
 
Apres c'est sur que si tu chopes pas les accolades tu va te taper des tonnes d erreur !!! Au pire tu fais un copier/coller des notres :lol:  :whistle:  
 
*****************************************************
 
A savoir que ton main est deja écrit de travers :p J'propose un truc comme ca plutot. Mais j peux dire des conneries (dsl pas trouvé de photo de bartez :p )
 
*****************************************************
 
main = int main () {
 
.....
 
return 0
}
 
Voila, corrige les erreurs et renvoie le truc, j regarderais si je repasse... Et trouve les accolades !!!
 
ah oui j'oubliais :
 
google : "accolades mac" -> http://www.metacites.net/article143.html
 
[temps de recherche : 5 sec] avis aux amateurs.
 
Bon courage amigo


Message édité par Clemci le 25-05-2006 à 17:11:42

---------------
Les toles ondulées, les vaches aussi.
Reply

Marsh Posté le 25-05-2006 à 17:13:00    

:D mdr Je@nb comment elle déchire ta signature de messages !!! UP  :love: :sol:
 
Et t'en penses quoi de "playstation" ??? :bounce:


Message édité par Clemci le 25-05-2006 à 17:14:24

---------------
Les toles ondulées, les vaches aussi.
Reply

Marsh Posté le 25-05-2006 à 18:02:23    

rudy1895 a écrit :

je l’ai fait avec seulement 2 informations par personnes. Désolé mais j’ai pas trouver les accolades sur mon mac, ni le slash du retour chariot.


Hum... écrire du C sans accolade, ni crochet, ni backslash c'est un peu MI12...

rudy1895 a écrit :

Voici le chef-d’œuvre..
<...>


Pfou... c'est plus du code, c'est de la forêt vierge ton truc...
 
Bon, à nous de nous mettre au turbin...
 

rudy1895 a écrit :

typedef Nmax=1000


typedef sert à créer des types nouveaux à partir de types connus. Tu veux peut-être dire "#define Nmax 1000" => convention: les macro sont en majuscules =>  
#define NMAX 1000
   

rudy1895 a écrit :

personne struct ( char nom tab(15); char prenom tab(20)....)


Un tableau se définit "type identificateur [nb]" => char nom[15]; char prenom[20];
 


int main()

rudy1895 a écrit :

gets(tab(i)nom);


gets(tab[i].nom)
Attention, la fonction "gets" est dangereuse car elle ne fait pas de contrôle de la chaîne entrée => si tu entres 150 caractères, gets() te les stockera vaillemment dans nom qui n'en fait que 15 (dont un réservé pour le '\0') => débordement
Vaut mieux utiliser fgets() à qui on donne la limite à ne pas dépasser
fgets(tab[i].nom, 15, stdin)
 
 

rudy1895 a écrit :

gets(recherche())


Alors là... je suis bluffé. Tu fais saisir une fonction !!!
A moins que "recherche" renvoie une adresse où stocker les octets saisis par "gets", tu vas avoir un belle surprise à l'exécution...
   

rudy1895 a écrit :

for(i==0, i<NMAX, i++)


T'avais raison de dire qu'on allait rire. == est une comparaison. L'affectation se fait par "=" => for (i=0; i < NMAX; i++)
D'habitude on voit souvent le contraire "if (i = 0)" au lieu de "if (i == 0)". C'est la première fois que je vois "for (i==0; ...; ...)"
 

rudy1895 a écrit :

if(strcmp (recherche, tab(i)nom==0))


Pb de parenthèses. Ton but est de comparer ce que te renvoie "strcmp()" avec "0" =>
if (strcmp(recherche, tab[i].nom) == 0)
 

rudy1895 a écrit :

printf(«personne (i)) ;


No comment...
printf("%s", tab[i].nom);
 

rudy1895 a écrit :

n'hésitez pas à me faire des suggestions..


Une erreur par ligne... c'est plus des suggestions qu'il te faut, c'est un miracle...
 

rudy1895 a écrit :

à ce point??


Faut vraiment, mais alors vraiment que tu ouvres un bouquin de C... et à la page "1" puis que tu lises la préface, l'intro et tout le reste. Et t'arrête surtout pas avant d'avoir lu les mots "imprimé le <...> sur les presses de <...>"
 
Déjà, commence par aller voir l'un où l'autre de ces deux liens  

A la réflexion, n'hésite surtout pas à consulter les deux à la fois...


Message édité par Sve@r le 25-05-2006 à 18:50:30

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 25-05-2006 à 20:00:07    

bon ok j'ouvre mon bouquin,
 
thanks sver..
 
je m'y met. merci pour les liens (ils sont plutot bien). je vous le programme dès qu'il est tout tout beau, comme ça, si quelqu'un est intérréssé par ce programme de recherche de merde..
 
enfin, bref juste une petite question, l'appel d'une structure, comment on fait ça ?
 
par exemple, j'ai entré 3 personnes avec mon
personne struct ( char nom tab[15]; char prenom tab[20])
 
la première personne ça sera : personne(nom[1], prenom[1])  ?
 
pas terrible parce que nom[1] ça appelle le 1st caractère du tableau nom[],
 
alors,
 
personne[1]  ?
 
 
 
 
au fait merci pour les [{}]

Reply

Marsh Posté le 25-05-2006 à 22:04:20    

Ok j te montre pour les strucutres
 
Dabord comme dans tous les programmes en C, il faut que tu la décrive cette struct.
 
Du style :
 
  struct carnetAd{
    char prénom;
    char nom;
    int age;
    int etc...;
  };
 
apres dans ton prog il faut que tu définisses que dans chaques éléments de ta structures tu vux lui faire correspondre des listes ou des tableaux.
 
struct carnetAd nom[nbNom];
 
ou nbNom corresponds au nombre de noms qu il y aura dans ton carnet d adresse.
 
Voila. La j viens de te définir tes structures. Pour info j bosses sur le mm type de programme sauf que moi j ai fini la partie saisie. J rentre dans la partie tri qui est grave corsée.
 
pour ta partie recherche de nom (par exemple) il faut juste que tu lui fasse chercher dans la partie "nom" de ta structure tous les noms qui s'écrivent avec les mm caractéree
 
Pour info : le nom numéro trois de ta structure s'appel "carnetAd.nom[3]"
 
Voila t'as tout
 
apres faut juste que tu lui fasse tester les chaines de caracteres rentrés et la chaine de caractere que tu rechercge...
 
Bon courage amigo

Reply

Marsh Posté le 25-05-2006 à 22:30:29    

thanx l'homme fou.  
c'est très clair. j'ai compris. mieux que mon bouquin de 1800 pages..
 
je m'en souviens avoir fait du tri avec les pointeurs et des jeux de cartes, je ne comprenais absolument rien, bah mon vieux bon courage..
 

Reply

Marsh Posté le 25-05-2006 à 23:16:51    

rudy1895 a écrit :

je l’ai fait avec seulement 2 informations par personnes. Désolé mais j’ai pas trvouver les accolades sur mon mac, ni le slash du retour chariot. Voici le chef-d’œuvre..



Compiling: main.c
main.c:3: error: typedef `Nmax' is initialized (use __typeof__ instead)
main.c:4: error: syntax error before "personne"
main.c:4: error: syntax error before "tab"
main.c:10: error: syntax error before "tab"
main.c:15: error: syntax error before '(' token
main.c:16: error: syntax error before string constant
main.c:16: warning: type defaults to `int' in declaration of `printf'
main.c:16: warning: function declaration isn't a prototype
main.c:16: error: conflicting types for 'printf'
main.c:16: note: a parameter list with an ellipsis can't match an empty parameter name list declaration
main.c:16: error: conflicting types for 'printf'
main.c:16: note: a parameter list with an ellipsis can't match an empty parameter name list declaration
main.c:16: warning: data definition has no type or storage class
main.c:17: error: syntax error before '(' token
main.c:22: error: syntax error before string constant
main.c:22: warning: type defaults to `int' in declaration of `printf'
main.c:22: warning: function declaration isn't a prototype
main.c:22: warning: redundant redeclaration of 'printf'
main.c:16: warning: previous declaration of 'printf' was here
main.c:22: warning: data definition has no type or storage class
main.c:23: error: syntax error before string constant
main.c:23: warning: type defaults to `int' in declaration of `scanf'
main.c:23: warning: function declaration isn't a prototype
main.c:23: error: conflicting types for 'scanf'
main.c:23: note: a parameter list with an ellipsis can't match an empty parameter name list declaration
main.c:23: error: conflicting types for 'scanf'
main.c:23: note: a parameter list with an ellipsis can't match an empty parameter name list declaration
main.c:23: warning: data definition has no type or storage class
main.c:24: error: stray '\171' in program
main.c:24: error: syntax error before "les"
main.c:24: error: stray '\187' in program
main.c:24: warning: type defaults to `int' in declaration of `printf'
main.c:24: warning: function declaration isn't a prototype
main.c:24: warning: redundant redeclaration of 'printf'
main.c:22: warning: previous declaration of 'printf' was here
main.c:24: warning: data definition has no type or storage class
main.c:25: error: syntax error before '(' token
main.c:34: error: stray '\171' in program
main.c:36: error: stray '\171' in program
main.c:36: error: stray '\187' in program
main.c:44: error: stray '\171' in program
main.c:47: error: stray '\171' in program
main.c:47: error: stray '\187' in program
Process terminated with status 1 (0 minutes, 0 seconds)
27 errors, 16 warnings


Citation :

n'hésitez pas à me faire des suggestions..

Changer d'orientation ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 25-05-2006 à 23:29:56    

Clemci a écrit :

Ok j te montre pour les strucutres


Hum... que voilà de truculentes strucutres...
 

Clemci a écrit :

Dabord comme dans tous les programmes en C, il faut que tu la décrive cette struct.


On dit plutôt "déclarer"...
 

Clemci a écrit :

Du style :
 
  struct carnetAd{
    char prénom;
    char nom;
    int age;
    int etc...;
  };


Hum... et tes noms et prénoms n'ont qu'un seul caractère ?  
- Enchanté, je m'appelle J F
- Oh, ravi. moi c'est G T
!!!
 

Clemci a écrit :

apres dans ton prog il faut que tu définisses que dans chaques éléments de ta structures tu vux lui faire correspondre des listes ou des tableaux.
 
struct carnetAd nom[nbNom];
 
ou nbNom corresponds au nombre de noms qu il y aura dans ton carnet d adresse.
Pour info : le nom numéro trois de ta structure s'appel "carnetAd.nom[3]"


NON !
Déjà en C les indices partent de 0 donc le numéro trois aura l'indice "2"
En plus, "carnetAd" n'existe pas
"struct carnetAd", d'après ton exemple, est un nom de type pas un nom de variable
En l'occurrence, ce sera simplement "nom[2].nom" (super idée que de mettre des noms de variables identiques aux noms de membres !!!)
 
Pas la peine de donner des conseils si c'est pour raconter n'importe quoi...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 25-05-2006 à 23:41:05    

Clemci a écrit :

Ok j te montre pour les strucutres
 
Dabord comme dans tous les programmes en C, il faut que tu la décrive cette struct.
 
Du style :
 
  struct carnetAd{
    char prénom;
    char nom;
    int age;
    int etc...;
  };
 
apres dans ton prog il faut que tu définisses que dans chaques éléments de ta structures tu vux lui faire correspondre des listes ou des tableaux.
 
struct carnetAd nom[nbNom];
 
ou nbNom corresponds au nombre de noms qu il y aura dans ton carnet d adresse.
 
Voila. La j viens de te définir tes structures. Pour info j bosses sur le mm type de programme sauf que moi j ai fini la partie saisie. J rentre dans la partie tri qui est grave corsée.
 
pour ta partie recherche de nom (par exemple) il faut juste que tu lui fasse chercher dans la partie "nom" de ta structure tous les noms qui s'écrivent avec les mm caractéree
 
Pour info : le nom numéro trois de ta structure s'appel "carnetAd.nom[3]"
 
Voila t'as tout
 
apres faut juste que tu lui fasse tester les chaines de caracteres rentrés et la chaine de caractere que tu rechercge...
 
Bon courage amigo


ok lol [:el g]
merci d'avoir joué, repassez la semaine prochaine [:ohello]


Message édité par Harkonnen le 26-05-2006 à 00:42:33

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-05-2006 à 02:11:47    

il y a un truc que je saisis pas, tu utilises les structures alors que tu sais a peine de faire du C, la syntaxe du if, du while, les tableaux

Reply

Marsh Posté le 26-05-2006 à 02:15:31    

weed a écrit :

il y a un truc que je saisis pas, tu utilises les structures alors que tu sais a peine de faire du C, la syntaxe du if, du while, les tableaux


Vi, c'est la nouvelle méthode. On te donne des bouts de C tout fait et tu les apprends par coeur. Comme les enfants qui apprennent à lire par syllabes au lieu d'apprendre à associer les lettres. Il y a plus de trucs à savoir donc t'as l'impression d'être plus calé que la génération précédente... :lol:


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 09-06-2006 à 05:24:13    

voici enfin le programme. merci à tous pour votre aide.
 
toujours un petit problème cependant, je peux l'executer mais à l'entrée des paramètres de recherche après avoir appuyer sur "enter" je me retrouve sur la page de mon programme..
 
si qqn pouvait m'aider, ça serait sympa à vous.
 
 
 
 
 
#include <stdio.h>
#include <string.h>
#define NMAX 10
#define NMAX 100
 struct personne{
  char nom[15];
  char prenom[20];
  char lieunaissance[20];
  char datenaissance[15];
  char numeropasseport[15];
  char lieudelivrance[20];
  char datedelivrance[15];};
 
 
 
int main()
{int n, c, i;
 struct personne bank[NMAX];
 char recherche[20];
 char tmp[1];
/*entrée des personnes et remplissage du tableau de structures « bank »*/
 for (i=0; i<NMAX; i++)
 {printf("Nom:\n" );
  fgets(bank[i].nom, 15, stdin);
  printf("Prenom:\n" );
  fgets(bank[i].prenom, 20, stdin);
  printf("Lieu de naissance:\n" );
  fgets(bank[i].lieunaissance, 15, stdin);
  printf("Date de naissance:\n" );
  fgets(bank[i].datenaissance, 20, stdin);
  printf("Numero de passeport:\n" );
 
page 1.
  fgets(bank[i].numeropasseport, 15, stdin);
  printf("Lieu de delivrance:\n" );
  fgets(bank[i].lieudelivrance, 20, stdin);
  printf("Date de delivrance:\n" );
  fgets(bank[i].datedelivrance, 15, stdin);
  }
 /*fin de l'entree des personnes"*/
 printf("Taper 1 pour lancer une recherche par nom.\n" );
 printf("Taper 2 pour lancer une recherche par prenom.\n" );
 printf("Taper 3 pour lancer une recherche par lieu de naissance.\n" );
 printf("Taper 4 pour lancer une recherche par date de naissance.\n" );
 printf("Taper 5 pour lancer une recherche par num‚ro de passeport.\n" );
 printf("Taper 6 pour lancer une recherche par lieu de delivrance.\n" );
 printf("Taper 7 pour lancer une recherche par date de delivrance.\n" );
 
 scanf("%d",&n);
 printf("Rentrer les elements de la recherche.\n" );
 gets(recherche);
 
 /*debut de la recherche*/
 if (n==1)
 {for (i=0; i<NMAX; i++)
   {c=0;
/*comparaison et impression si succées */
    if(strcmp(recherche, bank[i].nom)==0)
     {printf("%s", bank[i].prenom);
      printf("%s", bank[i].nom);
      printf("%s", bank[i].lieunaissance);
      printf("%s", bank[i].datenaissance);
      printf("%s", bank[i].numeropasseport);
      printf("%s", bank[i].lieudelivrance);
      printf("%s", bank[i].datedelivrance);
      c++;
     }
    if (c==0)
     printf("no result\n" );
   }
 }
 
 
 
 
page 2.
  else if(n==2)
  {for (i=0; i<NMAX; i++)
   {c=0;
    if(strcmp(recherche, bank[i].prenom)==0)
     {printf("%s", bank[i].prenom);
      printf("%s", bank[i].nom);
      printf("%s", bank[i].lieunaissance);
      printf("%s", bank[i].datenaissance);
      printf("%s", bank[i].numeropasseport);
      printf("%s", bank[i].lieudelivrance);
      printf("%s", bank[i].datedelivrance);
      c++;
     }
    if (c==0)
     printf("no result\n" );
   }
  }
 
     else if(n==3)
  {for (i=0; i<NMAX; i++)
   {c=0;
    if(strcmp(recherche, bank[i].lieunaissance)==0)
     {printf("%s", bank[i].prenom);
      printf("%s", bank[i].nom);
      printf("%s", bank[i].lieunaissance);
      printf("%s", bank[i].datenaissance);
      printf("%s", bank[i].numeropasseport);
      printf("%s", bank[i].lieudelivrance);
      printf("%s", bank[i].datedelivrance);
      c++;
     }
    if (c==0)
     printf("no result\n" );
   }
  }
 
 
        else if(n==4)
  {for (i=0; i<NMAX; i++)
   {c=0;
 
 
page 3.
    if(strcmp(recherche, bank[i].datenaissance)==0)
     {printf("%s", bank[i].prenom);
      printf("%s", bank[i].nom);
      printf("%s", bank[i].lieunaissance);
      printf("%s", bank[i].datenaissance);
      printf("%s", bank[i].numeropasseport);
      printf("%s", bank[i].lieudelivrance);
      printf("%s", bank[i].datedelivrance);
      c++;
     }
    if (c==0)
     printf("no result\n" );
   }
  }
 
 
 
           else if(n==5)
  {for (i=0; i<NMAX; i++)
   {c=0;
    if(strcmp(recherche, bank[i].numeropasseport)==0)
     {printf("%s", bank[i].prenom);
      printf("%s", bank[i].nom);
      printf("%s", bank[i].lieunaissance);
      printf("%s", bank[i].datenaissance);
      printf("%s", bank[i].numeropasseport);
      printf("%s", bank[i].lieudelivrance);
      printf("%s", bank[i].datedelivrance);
      c++;
     }
    if (c==0)
     printf("no result\n" );
   }
  }
 
 
 
 
 
 
 
 
page 4.
                else if(n==6)
  {for (i=0; i<NMAX; i++)
   {c=0;
    if(strcmp(recherche, bank[i].lieudelivrance)==0)
     {printf("%s", bank[i].prenom);
      printf("%s", bank[i].nom);
      printf("%s", bank[i].lieunaissance);
      printf("%s", bank[i].datenaissance);
      printf("%s", bank[i].numeropasseport);
      printf("%s", bank[i].lieudelivrance);
      printf("%s", bank[i].datedelivrance);
      c++;
     }
    if (c==0)
     printf("no result\n" );
   }
  }
 
                     
                else if(n==7)
  {for (i=0; i<NMAX; i++)
   {c=0;
    if(strcmp(recherche, bank[i].datedelivrance)==0)
     {printf("%S", bank[i].prenom);
      printf("%S", bank[i].nom);
      printf("%s", bank[i].lieunaissance);
      printf("%s", bank[i].datenaissance);
      printf("%s", bank[i].numeropasseport);
      printf("%s", bank[i].lieudelivrance);
      printf("%s", bank[i].datedelivrance);
      c++;
     }
    if (c==0)
     printf("no result\n" );
   }
  }
 
 /*fin de la recherche*/
 fclose (sortie);
 return 0;
}
 
page 5.

Reply

Marsh Posté le 09-06-2006 à 08:41:25    

rudy1895 a écrit :

voici enfin le programme. merci à tous pour votre aide.
 
toujours un petit problème cependant, je peux l'executer mais à l'entrée des paramètres de recherche après avoir appuyer sur "enter" je me retrouve sur la page de mon programme..
 
 
#include <stdio.h>


Merci d'utiliser la balise code : http://forum-images.hardware.fr/icones/message/c.gif
 
Pour le reste
- Ne pas utiliser gets(). C'est un bug.
- C'est bien d'utiliser fgets(), mais il faut nettoyer (supprimmer proprement le \n). Pour ça, je recommande :  

Code :
  1. printf("Nom:\n" );
  2.       fgets(bank[i].nom, 15, stdin);
  3.       clean(bank[i].nom, stdin);


avec :  

Code :
  1. static void purge (FILE * fp)
  2. {
  3.    int c;
  4.    while ((c = fgetc (fp)) != '\n' && c != EOF)
  5.    {
  6.    }
  7. }
  8. static void clean (char *s, FILE * fp)
  9. {
  10.    /* search ... */
  11.    char *p = strchr (s, '\n');  /* <string.h> */
  12.    if (p != NULL)
  13.    {
  14.       /* ... and kill */
  15.       *p = 0;
  16.    }
  17.    else
  18.    {
  19.       purge (fp);
  20.    }
  21. }


D'autre part, tu devrais apprendre à écrire des fonctions et à utiliser switch-case...
Le fclose() de la fin ne correspond à rien...
 
Enfin, pour un code de test (validation d'un principe) , on a pas besoin de mettre autant de champs. Pour saisir 10 noms, il faut plusieurs minutes. Ou alors fait une lecture à partir d'un fichier texte que l'on peut facilement écrire avec un éditeur. Le plus simple : Un champ par ligne, un nombre de lignes fixe par enregistrement.
Par exemple :  


Jules
Cesar
Rome
C avant JC
CXIV
Rome
XX-X-XL
Jacques
Chirac
Paris
29-11-1932
123456789
Paris
01-10-2002


Message édité par Emmanuel Delahaye le 09-06-2006 à 08:48:10

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 09-06-2006 à 09:34:29    

utilises un debugger, lis les docs de chaque fonction que tu utilises, test les entrées et les sorties. Là tu pourra cerner ton erreur.

Reply

Marsh Posté le 09-06-2006 à 09:39:10    

merci les gars. je vais faire tout ça.
 
et ouai je vais peut être mettre des fonctions ça m'eviteras de tout répéter 20 fois.

Reply

Marsh Posté le 09-06-2006 à 13:47:19    

rudy1895 a écrit :

et ouai je vais peut être mettre des fonctions ça m'eviteras de tout répéter 20 fois.


ouais, c'est peut-être une solution qu'il conviendrait d'envisager [:ddr555]


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 10-06-2006 à 12:47:29    

Sve@r a écrit :

ouais, c'est peut-être une solution qu'il conviendrait d'envisager [:ddr555]


 
C'est meme indispensable  :o  

Reply

Marsh Posté le 14-06-2006 à 22:39:25    

Oh putain, je viens de voir ce sujet d'anthologie. [:rofl]
Ma prog en C sans accolades, c'est un concept à creuser...


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 15-06-2006 à 01:38:22    

j'aime bien ca :
 

Code :
  1. c=0;
  2. if(strcmp(recherche, bank[i].datedelivrance)==0){
  3. // blabla  
  4.        c++;
  5. }
  6. if (c==0)
  7.      printf("no result\n" );


 
on lui apprend le else ? :o :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed