Souci avec un code - C - Programmation
Marsh Posté le 29-10-2006 à 11:12:18
[Merci de lire les règles du forum et d'apprendre à utiliser les balises code.]
Zoltan87 a écrit : j'aimerais avec le code suivant inscrire des candidats d'une epreuve sportive avec leur performance, j'ai donc creer une structure candi pour le candidat avec le nom et le numero de dossard et un structure Arrive qui rentre les performance (numero de dossard avec le temps realise). Concernant cette organisation, ce n'est surement pas la meilleure mais elle fonctione .La ou cela coince c'est a l'invite d'un numero de dossard, j'entre le n° puis jai une invite pour entrer un temps, le seul hic c'est que je voudrais que lorsque j'entre un numero de dossard ui a deja ete classé (dans Arrive[i].doss) et bien que ca me dise DEJA INSCRIT.. et ca j'y arrive pas. |
Ca ne me parait pas très difficile.
C'est une simple recherche de doublon.
Ce qu'il faut faire, c'est une saisie 'provisoire' des données (qui ne modifie pas la base), puis une vérification de l'existence (il suffit de parcourir les données existantes dans la base), puis, selon le résultat, une confirmation des données en les ajoutant à la base, sinon l'affichage du message d'erreur "Dejà inscrit".
Ces quelques lignes s'appellent "algorithme textuel". Elles sont la base de l'organisation de ton code.
On peut maintenant traduire en pseudo-code de la façon suivante :
|
etc. En raffinant on fini par arriver au code C...
Marsh Posté le 29-10-2006 à 11:36:01
Merci beaucoup !
Mais pouvez-vous m'expliquer ce que vous entendez par saisie 'provisoire' des données ?
Est-que cela pourrait aller ?
for(i = 0; i < nbs && (dossardlu - 1 < nbp) && (Arrive[i].pers != dossardlu -1); i = i + 1); // dossard déjà inscrit ou inexistant ?
if(i == nbs) enregistrement
sinon "deja inscrit"
Marsh Posté le 29-10-2006 à 11:45:43
Zoltan87 a écrit : Mais pouvez-vous m'expliquer ce que vous entendez par saisie 'provisoire' des données ? |
Dans une variable locale.
Citation : |
C'est pas hyper clair comme présentation...
|
Pour éviter ce genre d'écriture gore, j'avais suggéré d'écrire une fonction de recherche...
J'ai l'impression de parler dans le vide...
Marsh Posté le 29-10-2006 à 10:55:55
Bonjour a tous,
j'ai un petit souci avec ce code; je vous explique:
j'aimerais avec le code suivant inscrire des candidats d'une epreuve sportive avec leur performance, j'ai donc creer une structure candi pour le candidat avec le nom et le numero de dossard et un structure Arrive qui rentre les performance (numero de dossard avec le temps realise). Concernant cette organisation, ce n'est surement pas la meilleure mais elle fonctione .La ou cela coince c'est a l'invite d'un numero de dossard, j'entre le n° puis jai une invite pour entrer un temps, le seul hic c'est que je voudrais que lorsque j'entre un numero de dossard ui a deja ete classé (dans Arrive[i].doss) et bien que ca me dise DEJA INSCRIT.. et ca j'y arrive pas.
A propose des variables, nbp est le nombre de candidat au total (a savoir 20 maximum), et nbs est le nombre de personnes deja classées dans Arrive.
do
{
if(dossardlu > nbp || dossardlu<1)
{
printf("AUCUN INSCRIT\n" );
system("pause" );
}
else
{
j=0;
for(i=0 ; i<=nbs ; i=i+1)
{
if(dossardlu==Arrive[i].doss)
j=1;
}
if (j == 0)
{
printf("ENTREZ LE TEMPS REALISE\n" );
scanf("%f",&tpslu);
Arrive[nbs].tps=tpslu;
nbs=nbs+1;
if(tpslu == 0)
printf("%d %s %s DISQUALIFIE\n",dossardlu,Candi[dossardlu-1].nom,Candi[dossardlu-1].nat);
else
printf("%d %s %s %.2f\n",dossardlu,Candi[dossardlu-1].nom,Candi[dossardlu-1].nat,tpslu);
}
else
{
printf("DEJA INSCRIT\n" );
system("pause" );
}
}
printf("ENTREZ LE NUMERO DE DOSSARD\n" );
scanf("%d",&dossardlu);
}
Merci de votre aide
Message édité par Zoltan87 le 29-10-2006 à 11:03:18