struct firma{
char FIO[30];
int otdel;
float zarplata;
} ;
int i,j,k,g,n;
float s,average,otnowenie,min;
struct firma workers[500];
firma buffer;
void read();
void delet();
void m(){
printf(" Vvedite kol-vo sotrydnilov: ");
scanf("%i",&n);
g=1;
if(g==1){
for(i=0; i<n; i++)
{
printf("[%i] Enter FIO: ",i+1);fflush(stdin);
scanf("%s",&workers[i].FIO);
printf("ENter otdel: ");fflush(stdin);
scanf("%i",&workers[i].otdel);
printf(" Enter zarplata: ");fflush(stdin);
scanf("%f",&workers[i].zarplata);
//fwrite(&workers[i],sizeof(workers[i]),1,fi);
}
for(i=0; i<n; i++)
//printf(" %-20s %i %f\n",workers[i].FIO,workers[i].otdel,workers[i].zarplata);
for(i=0; i<n-1; i++)
for(j=i;j<n;j++)
if(workers[i].zarplata>workers[j].zarplata)
{
buffer=workers[i];
workers[i]=workers[j];
workers[j]=buffer;
}
s=0; for(i=0; i<n; i++){
if(workers[i].zarplata>25) {s+=workers[i].zarplata;k++;}
}
average=(float)s/k;
//printf("\nAverage: %f",average);
//printf("\nmin: %f",workers[0].zarplata);
min=workers[0].zarplata;
otnowenie=(float)average/min;
//printf("\notnowenie sredney z/p k minimal`noy: %f",otnowenie);
}
_getch();
}
void read(){
FILE*fi;
if(!(fi=fopen("work.exe","rb")))
{printf(" Nevozmozno sozdat` file\n"); return;
}
for(i=0; i<n; i++)
fprintf(fi," %-20s %i %f\n",workers[i].FIO,workers[i].otdel,workers[i].zarplata);
for(i=0; i<n-1; i++)
for(j=i;j<n;j++)
if(workers[i].zarplata>workers[j].zarplata)
{
buffer=workers[i];
workers[i]=workers[j];
workers[j]=buffer;
}
s=0; for(i=0; i<n; i++){
if(workers[i].zarplata>25) {s+=workers[i].zarplata;k++;}
}
average=(float)s/k;
fprintf(fi,"\nAverage: %f",average);
//printf("\nmin: %f",workers[0].zarplata);
min=workers[0].zarplata;
otnowenie=(float)average/min;
fprintf(fi,"\notnowenie sredney z/p k minimal`noy: %f",otnowenie);
fread(workers[i].FIO,sizeof(workers[i].FIO),1,fi);
//fread(workers[i].otdel,sizeof(workers[i].otdel),1,fi);
// fread(workers[i].zarplata,sizeof(workers[i].zarplata),1,fi);
fclose(fi);
}
void show(){
if( g==1) {
for(i=0; i<n; i++)
printf("%i %-20s %i %f\n",i,workers[i].FIO,workers[i].otdel,workers[i].zarplata);
printf("\nAverage: %f",average);
printf("\notnowenie sredney z/p k minimal`noy: %f",otnowenie);}
else printf("Error!");
getch();
}
int menu()
{
int choise;
printf("***MAIN MENU***\n\n\n");
printf ( "1 - vvod dannyx\n");
printf( "2 - ydalenie\n");
printf("3 - show\n");
printf( "4 - EXIT\n\n");
printf(":");
scanf("%i",&choise);
return choise;
}
void delet(){
char FIO[30] = {0};
printf(" who delete?!:\n");
scanf("%s",&FIO);
int k=0;
for(j=0;j<n;)
{
if( strcmp(workers[j].FIO, FIO) == 0)
{
for(k = j+1; k < i; k++)
{
workers[k-1] = workers[k];
}
}
}
}
int main(){
for(;;){
int choice = menu();
switch(choice){
{
case (1):
m();
break;
case (2):
delet();
break;
case (3):
show();
break;
case (4):
return 0;
break;
default: printf(" Please select again!\n");
break;
}
}
}
getch();}
remove
Started by zhenya, Dec 30 2009 09:17 AM
1 reply to this topic
#1
Posted 30 December 2009 - 09:17 AM
How to remove record under its entered number?(void delet)
|
|
|
#2
Posted 31 December 2009 - 02:09 PM
1) You're missing the final closing brace on m()
2) Extra braces around your switch statement in main()
3) In delet(), try changing this:
2) Extra braces around your switch statement in main()
3) In delet(), try changing this:
for(j=0;j<n;)
{
if( strcmp(workers[j].FIO, FIO) == 0)
{
for(k = j+1; k < i; k++)
{
workers[k-1] = workers[k];
}
}
}
to this:
for(j=0;j<n; j++)
{
if( strcmp(workers[j].FIO, FIO) == 0)
{
memmove(&workers[j], &workers[j + 1],
sizeof(struct firma) * (n - (j + 1)) );
break;
}
}
Be sure to include memory.h.
sudo rm -rf /


Sign In
Create Account


Back to top









