begin process at 2010 03 18 06:28:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

demande de correction de programme


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

demande de correction de programme

mercredi 2 avril 2003 à 13:39:56 | demande de correction de programme

gemini010

slt a tous, je dois créer un programme avec differente fonctions et structures permettant de gerer des etudiants ( on doit pouvoir ajouter des enregistrements, lister les enregistement,les modifier, faire une recherche sur un etudiant et aussi pouvoir faire des suppressions.

ca serait sympa si qqun pouvait corriger ce code et l'améliorer si possible :)

g notament qque probleme
pour le listage:
s'il n'y a qu'un seul enregistement ----) il y a pas de prob mais s'il y en a plus, seul le dernier s'affiche :(

pour la modification d'un enregistrement:
si une cote est > 10 et que je souhaite mettre une cote<10 il y a un probleme a l'affichage .

merci pour votre aide

voici le code

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>

/*Déclarations des types ------------------------------------*/
struct Resultat

{
int Total;
float Pourcentage;
char Grade[20];
};

struct Eleve
{
char Nom[25];
char Prenom[25];
char Sexe;
char Formation [20];
int Cotes[4];
struct Resultat Res;
};

/* déclaration des fonctions --------------------------------*/
char execmenu();
void affgrille(int);
void encodeleve(struct Eleve *t,int);
void calculeleve(struct Eleve *);
void affeleve(struct Eleve ,int);
void afftoteleve(struct Eleve ,int);
void AjoutFich(struct Eleve[], int*);
int verif(char []);
int verifcote(char Cotes[]);
void ListFich(struct Eleve[], int);

void ChercheFich(struct Eleve[], int);
void ModificationFich(struct Eleve[], int);
void SuppressionFich(struct Eleve[], int*);
void modifeleve(struct Eleve *,int);
void modifich(struct Eleve [],int);
int chercheleve(struct Eleve [],char [],char []);

/* fonction principale --------------------------------------*/
void main ()

{
struct Eleve tab[10];
char choi;
int nbre=0;

do
{
choi=execmenu();
switch(choi)
{
case 'A':AjoutFich(tab,&nbre);break;
case 'L':ListFich(tab,nbre);break;
case 'M':modifich(tab,nbre);break;
case 'R':ChercheFich(tab,5);break;
case 'S':SuppressionFich(tab,&nbre);break;
}

}
while (choi!='Q');
}
/* fonction execmenu ----------------------------------------*/

char execmenu()

{
char choix;
clrscr();
printf("\n\n\n\n\n\n\n\n");
printf(" **********************************\n");
printf(" * <A>jouter un enregistrement *\n");
printf(" * <L>ister un fichier *\n");
printf(" * <M>odifier un enregistrement *\n");
printf(" * <R>echercher un enregistrement *\n");
printf(" * <S>upprimer un enregistrement *\n");
printf(" * <Q>uitter *\n");
printf(" * Votre choix : *\n");
printf(" **********************************");
do
{
choix=toupper(getch());
}
while(!strchr("A,L,M,R,S,Q",choix));

return choix;
}

/*fonction d'affichage du masque de saise -------------------*/

void affgrille(int position)
{
clrscr();
gotoxy(0,position);printf("Nom :.........................");
gotoxy(36,position);printf("Prénom :.........................");
gotoxy(0,position+1);printf("Sexe :.");
gotoxy(36,position+1);printf("Formation :.........................");
gotoxy(0,position+2);printf("Cotes :.., .., .., ..");
}
/*fonction d'encodage de l'élève ----------------------------*/

void encodeleve(struct Eleve *t,int position)
{
int flag=0,longueur;
char temp[25],tempo[2];
do
{
gotoxy(8,position);gets(t->Nom);strupr(t->Nom);
strcpy(temp,t->Nom);
flag=verif(temp);
longueur = strlen(t->Nom);
}
while (!flag &&( longueur>0 || longueur<26 ));
flag=0;
do
{
gotoxy(47,position);gets(t->Prenom);strupr(t->Prenom);
strcpy(temp,t->Prenom);
flag=verif(temp);
longueur = strlen(t->Prenom);
}
while (!flag && (longueur>0 || longueur<26));
do
{
gotoxy(8,position+1);t->Sexe=toupper(getchar());fflush(stdin);
}
while (t->Sexe != 'M' && t->Sexe != 'F');

do
{
gotoxy(47,position+1);gets(t->Formation);strupr(t->Formation);
strcpy(temp,t->Formation);
flag=verif(temp);
longueur = strlen(t->Formation);
}
while (!flag && (longueur>0 || longueur<26));
do
{
gotoxy(8,position+2);gets(tempo);
flag=verifcote(tempo);
}
while (!flag);
t->Cotes[0]=atoi(tempo);
do
{
gotoxy(12,position+2);gets(tempo);
flag=verifcote(tempo);
}
while (!flag);
t->Cotes[1]=atoi(tempo);
do
{
gotoxy(16,position+2);gets(tempo);
flag=verifcote(tempo);
}
while (!flag);
t->Cotes[2]=atoi(tempo);
do
{
gotoxy(20,position+2);gets(tempo);
flag=verifcote(tempo);
}
while (!flag);
t->Cotes[3]=atoi(tempo);

}
/*fonction calcul point eleve -------------------------------*/

void calculeleve(struct Eleve *t)
{
t->Res.Total=t->Cotes[0]+t->Cotes[1]+t->Cotes[2]+t->Cotes[3];
t->Res.Pourcentage=float(t->Res.Total)/8*10;
if (t->Res.Pourcentage>=90)
strcpy(t->Res.Grade,"Plus grande distinction");
else
if (t->Res.Pourcentage>=80)
strcpy(t->Res.Grade,"Grande distinction");
else
if (t->Res.Pourcentage>=70)
strcpy(t->Res.Grade,"Distinction");
else
if (t->Res.Pourcentage>=60)
strcpy(t->Res.Grade,"Satisfaction");
else
if (t->Res.Pourcentage>=50)
strcpy(t->Res.Grade,"Balance");
else
strcpy(t->Res.Grade,"Ajourné");
}
/*fonction d'affichage élève --------------------------------*/
void affeleve(struct Eleve t,int position)
{
gotoxy(8,position);puts(t.Nom);
gotoxy(47,position);puts(t.Prenom);
gotoxy(8,position+1);printf("%c",t.Sexe);
gotoxy(47,position+1);puts(t.Formation);
gotoxy(8,position+2);printf("%d, %d, %d, %d",t.Cotes[0],t.Cotes[1],t.Cotes[2],t.Cotes[3]);
}

/*fonction d'affichage du total de élève --------------------*/

void afftoteleve(struct Eleve t,int position)
{
gotoxy(0,position);printf("Total : %d",t.Res.Total);
gotoxy(15,position);printf("Pourcentage : %.2f",t.Res.Pourcentage);
gotoxy(40,position);printf("Grades : %s",t.Res.Grade);
}

/*fonction d'ajout de fiche ---------------------------------*/

void AjoutFich(struct Eleve t[],int *nbrele)
{
clrscr();
if (*nbrele<10)
{
affgrille(5);
encodeleve(&t[*nbrele],5);
calculeleve(&t[*nbrele]);
affeleve(t[*nbrele],5);
afftoteleve(t[*nbrele],10);
getch();
(*nbrele)++;
}
else
{
clrscr();
gotoxy(30,10);printf("Pas de place pour ajouter un nouvel enregistrement");getch();
}
}
/*fonction de verification de l'encodage --------------------*/
int verif(char t[])
{

char *flag,a;
int longueur,i;
flag=NULL;
if (t[0]=='\0')
return 0;
for (i=1;i<32;i++)
{
flag=strchr(t,i);
if (flag!=NULL)
{i=32;return 0;}
}
for (i=33;i<44;i++)
{
flag=strchr(t,i);
if (flag!=NULL)
{i=44;return 0;}
}
for (i=46;i<65;i++)
{
flag=strchr(t,i);
if (flag!=NULL)
{i=65;return 0;}
}
for (i=91;i<=255;i++)
{
flag=strchr(t,i);
if (flag!=NULL)
{i=256;return 0;}
}
longueur = strlen(t);
if (t[0]==' ' || t[0]=='-' || t[longueur-1]==' ' || t[longueur-1]=='-')
flag=&a;
if (flag==NULL)
return 1;
else
return 0;

}
/*fonction de verification des cotes ------------------------*/
int verifcote(char cote[])
{
int i;
i=atoi(cote);
if (i>=0 && i <=20)
return 1;
else
return 0;
}
/*fonction de listage de fiche ------------------------------*/
void ListFich(struct Eleve t[],int nbrele)
{
int i=0,cpt=0;
while (i<nbrele)
{
clrscr();
while (cpt<=3 && i<nbrele)
{
affgrille(cpt*6+1);
affeleve (t[i],cpt*6+1);
afftoteleve(t[i],cpt*6+5);
cpt++;i++;
}
getch();cpt=0;
}
}
/*fonction de recherche de fiche ----------------------------*/
void ChercheFich(struct Eleve t[],int posi)
{
char nom[25],prenom[25];
int flag=-1;
clrscr();
gotoxy(20,13);printf("Nom:");gets(nom);
gotoxy(20,14);printf("Prénom:");gets(prenom);strupr(nom);strupr(prenom);
flag=chercheleve(t,nom,prenom);
if (flag>-1 && nom[0]!='\0' && prenom[0]!='\0')
{
clrscr();
affgrille(5);
affeleve(t[flag],5);
afftoteleve(t[flag],10);
}
else
{
gotoxy(20,15);printf("L'élève n'existe pas");
}
getch();
}

/*fonction de modification des fiches -----------------------*/

void modifich(struct Eleve t[],int nbrele)
{

char nom[25],prenom[25];
int flag=-1;
clrscr();
gotoxy(20,13);printf("Nom:");gets(nom);
gotoxy(20,14);printf("Prénom:");gets(prenom);strupr(nom);strupr(prenom);
flag=chercheleve(t,nom,prenom);
if (flag>-1 && nom[0]!='\0' && prenom[0]!='\0')
{
clrscr();
affgrille(5);
affeleve(t[flag],5);
modifeleve(&t[flag],5);
calculeleve(&t[flag]);
afftoteleve(t[flag],10);
}
else
{
gotoxy(20,15);printf("L\'élève n'existe pas");
}
getch();
}
/*fonction de suppression de fiche --------------------------*/
void SuppressionFich(struct Eleve t[],int *nbrele)
{
char nom[25],prenom[25],rep;
int flag=-1,cpt=0;
clrscr();
gotoxy(20,13);printf("Nom à supprimer:");gets(nom);
gotoxy(20,14);printf("Prénom à supprimer:");gets(prenom);strupr(nom);strupr(prenom);
flag=chercheleve(t,nom,prenom);
if (flag>-1 && nom[0]!='\0' && prenom[0]!='\0')
{
clrscr();
affgrille(5);
affeleve(t[flag],5);
afftoteleve(t[flag],10);
gotoxy(20,20);printf("Voullez-vous supprimer cet enregistrement<O/N>?");
rep=toupper(getch());

if (rep=='O' || rep=='N')
cpt=flag;
while (cpt<*nbrele)
{
t[flag]=t[flag+1];
cpt++;
}
(*nbrele)--;
}
else
{
gotoxy(20,15);printf("L\'élève n'existe pas");getch();
}
}

/*fonction de modification de l'élève -----------------------*/
void modifeleve(struct Eleve *t,int position)
{
char rep[25],reponse,tempo[2],temp[25];
int r,flag=0,longueur;
do
{
gotoxy(8,position);gets(rep);strupr(rep);
flag=verif(rep);
longueur = strlen(rep);
}
while (!flag && longueur>1 && longueur<25 );
flag=0;
if (rep[0]!='\0')
strcpy(t->Nom,rep);
do
{
gotoxy(47,position);gets(rep);strupr(rep);
flag=verif(rep);
longueur = strlen(rep);
}
while (!flag && longueur>1 && longueur<25 );
flag=0;
if (rep[0]!='\0')
strcpy(t->Prenom,rep);
do
{
gotoxy(8,position+1);reponse=toupper(getchar());fflush(stdin);
}
while (reponse != 'F' && reponse != 'M' && reponse!='\n');
if (reponse!='\n')
t->Sexe=reponse;
do
{
gotoxy(47,position+1);gets(rep);strupr(rep);
flag=verif(rep);
longueur = strlen(rep);
}
while (!flag && longueur>1 && longueur<25 );
flag=0;
if (rep[0]!='\0')
strcpy(t->
Formation,rep);
do
{
gotoxy(8,position+2);gets(tempo);
flag=verifcote(tempo);
}
while (!flag);

if (tempo[0]!='\0')
t->Cotes[0]=atoi(tempo);
do
{
gotoxy(12,position+2);gets(tempo);
flag=verifcote(tempo);
}
while (!flag);
if (tempo[0]!='\0')
t->Cotes[1]=atoi(tempo);
do
{
gotoxy(16,position+2);gets(tempo);
flag=verifcote(tempo);
}
while (!flag);
if (tempo[0]!='\0')
t->Cotes[2]=atoi(tempo);
do
{
gotoxy(20,position+2);gets(tempo);
flag=verifcote(tempo);
}
while (!flag);
if (tempo[0]!='\0')
t->Cotes[3]=atoi(tempo);
}

/*fonction de recherche d'élève -----------------------------*/

int chercheleve(struct Eleve t[],char nom[],char prenom[])
{
int i,retour=0;
for (i=0;i<10;i++)
if (!strcmp(t[i].Nom,nom) && !strcmp(t[i].Prenom,prenom))
return i;
else
retour=-1;
return retour;
}




Gemini
jeudi 3 avril 2003 à 11:31:40 | Re : demande de correction de programme

gemini010

personne pour m'aider? :(


Cette discussion est classée dans : int, printf, position, gotoxy, flag


Répondre à ce message

Sujets en rapport avec ce message

un tit coup de pouce pour une pile ??? [ par noisette87 ] voici le debut de mon programme :#include #include #include //---------------------------------------------------------------------------#pragma argsu port joystick [ par leon1 ] Bonsoir. Bonne année à tous.J' avais écris il y à une dizaine d'années (j'ai repris mes études et fait un dut à 35 ans) ce petit prog qui lisait et en Langage C : Puissance 4 [ par breakeur59150 ] Bonjour à tous,j'ai une ou deux question à vous poser, je suis en train de faire le jeu puissance 4 en langage c sous borland C, C'est un projet que l aide [ par achrafgassolina ] salut tout le monde la j ai une érreure et je c pas comment la resoudre dans la ligne 296:36 dans la condition if et aprés je veux faire la saisie des Programme Tri à Bulle [ par tivanbelle ] Bonjour,J'ai fait ce programme en cours, c'est un tri a bullequi tri des valeur donc 2à2, mais le programme ne fonctionne pas. Pouvez vous me dire ce conflit de type dans un tableau [ par pausecpp ] j'ai eu une réponse inattendue. voici un partie du code (l'essentiel ;) ):...#define N 5....float V[N]={0}; int i;for(i=0; i{printf("\nEntrer la coord la fonction gotoxy() [ par S_M_E ] c encore moi personne n'a encore répondu à mon problème, JE VEUX DEPLACE le curseur de le fenetre dos à des endroit bien précis ave DEV C++, j'ai trou Problème retour tableau fonction [ par acidjackproject ] Bnjour, voilà j'explique mon probleme:J'ai une fonction recherche qui parcours un index (tableau de structure). Lorsqu'elle a trouvé l'élément elle me probleme affichage structure [ par lil_adriano ] Slt tous le monde j'ai un souci avec l'affichage de mes structures. je dois faire la gestion d'une pizzeria.j'ai cree les structure et quelques proced Equation du 3éme degrée [ par jeanphilippe37 ] Slt, je t'envoie le programme de maths, ms j'ai essayé de mettre un system(pause) ms cela me fou une erreur de compilation. Pourré-tu me dire


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales