Chessmaster3000
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору вот рабочая версия программы, распространяется по лицензии GNU GENERAL PUBLIC LICENSE ======================== #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int average_salary=0,salary,i,age,counter,temp; struct employee *factory=NULL; int workers; struct employee { char name[50]; int salary; }; printf("How many workers do you have on your factory?\n"); scanf("%d",&workers); if (workers<=0) { printf("What on Earth can you produce on the factory which has no manpower??;)\n"); system ("PAUSE"); exit(1); } getchar(); factory = (struct employee*)malloc( workers*sizeof( struct employee ) ); printf("Enter the name of your employee and enter his salary\n"); for(counter=0;counter<workers;counter++) { i=0; while((temp=getchar())!='\n') factory[counter].name[i++]=temp; factory[counter].name[i++]='\0'; scanf("%d",&salary); getchar();//must get rid of Enter pressed by user factory[counter].salary=salary; } for(counter=0;counter<workers;counter++) average_salary+=factory[counter].salary; average_salary/=workers; printf("Average salary on your factory %d\n",average_salary); for(counter=0;counter<workers;counter++){ printf("%s Your salary is ",factory[counter].name); if (average_salary>factory[counter].salary) printf("%d below average\n",average_salary-factory[counter].salary); else if (average_salary<factory[counter].salary) printf("%d above average\n",factory[counter].salary-average_salary); else printf("exactly the average\n"); } system("PAUSE"); return 0; } ============================= Добавлено: забыл освободить память . Вот исправленная версия программы. =========================================== #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int average_salary=0,salary,i,age,counter,temp; struct employee *factory=NULL; int workers; struct employee { char name[50]; int salary; }; printf("How many workers do you have on your factory?\n"); scanf("%d",&workers); if (workers<=0) { printf("What on Earth can you produce on the factory which has no manpower??;)\n"); system ("PAUSE"); exit(1); } getchar(); factory = (struct employee*)malloc( workers*sizeof( struct employee ) ); printf("Enter the name of your employee and enter his salary\n"); for(counter=0;counter<workers;counter++) { i=0; while((temp=getchar())!='\n') factory[counter].name[i++]=temp; factory[counter].name[i++]='\0'; scanf("%d",&salary); getchar();//must get rid of Enter pressed by user factory[counter].salary=salary; } for(counter=0;counter<workers;counter++) average_salary+=factory[counter].salary; average_salary/=workers; printf("Average salary on your factory %d\n",average_salary); for(counter=0;counter<workers;counter++){ printf("%s Your salary is ",factory[counter].name); if (average_salary>factory[counter].salary) printf("%d below average\n",average_salary-factory[counter].salary); else if (average_salary<factory[counter].salary) printf("%d above average\n",factory[counter].salary-average_salary); else printf("exactly the average\n"); } free(factory); system("PAUSE"); return 0; } |