удаление по номеру

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Евгений Александрович
Сообщения: 82
Зарегистрирован: 19 дек 2009, 16:48

У меня есть удаление( void delet) -оно удаляет запись. Как мне сделать так, чтобы оно полностью удаляло запись(FIO otdel zarplata) по номеру записи?!

Код: Выделить всё

#include "stdafx.h"
#include<stdio.h>
#include <string.h>
#include<conio.h>
#include<stdlib.h>
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];
}
break;
}
} 
// for(j=0;j<n 
//printf(" %-20s %i %f\n",workers[i].FIO,workers[j].otdel,workers[i].zarplata);
}

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();}
Ответить