Новичок
Профиль
Группа: Участник
Сообщений: 20
Регистрация: 20.12.2009
Репутация: нет Всего: нет
|
Есть void delet для удалениия, но он удоляет по фИО. Как наладить удаление по номеру в списке?! Код | struct firma{ char FIO[30]; int otdel; float zarplata; } ;
int i,j,k,g,n,z=0; float s,average,otnowenie,min; struct firma workers[500]; firma buffer; void read(); void delet(); void dobavlenie(); 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); z++;
} 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 dobavlenie(){ struct firma{ char FIO[30]; int otdel; float zarplata; }; FILE*fi; if(!(fi=fopen("work.exe","rb"))) {printf(" Nevozmozno sozdat` file\n"); return; } else{ 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); }
fclose(fi); }
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); 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);
fclose(fi); } void fread(){ FILE*fi; if(!(fi=fopen("work.exe","rb"))) {printf(" Nevozmozno sozdat` file\n"); return; } if(i==n) n++; for(i=0; i<n; i++) printf("%i %-20s %i %f\n",i,workers[i].FIO,workers[i].otdel,workers[i].zarplata); printf("\notnowenie sredney z/p k minimal`noy: %f",otnowenie); fread(&workers[i],sizeof(workers[i]),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(vvedennogo)\n"); printf( "4 - EXIT\n"); printf("5 - dobavlenie\n"); printf("6 - fread\n"); printf(":"); scanf("%i",&choise); return choise; } void delet(){
int number; printf("number for delete?!:\n"); scanf("%d",&number); int k=0; for(j=0;j<n;) { if(number <= n) { 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; case (5): dobavlenie(); break; case (6): fread(); break; default: printf(" Please select again!\n"); break; } } } getch();}
|
|