Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Листинг 9.2



#include <stdio.h>

#include <string.h> //#include <windows.h> //0

int main()

const int l name = 30; //1

struct Man

{

int birth year;

char name[l name + 1];

float pay;

};

const int l dbase = 100;

Man dbase[l dbase];

char name[l name + 1];

FILE *fin;

if ((fin = fopen("dbase.txt", "r"))== NULL)

{

puts("Ошибка открытия файла\n");

return 1;

}

int i = 0;

while(!feof(fin))

{

fgets(dbase[i].name.l name.fin);

fscanf(fin. "%l%f\n".&dbase[i].birth year. &dbase[i].pay); //2

i++;

if (i > 1 dbase)

{

puts("Слишком длинный файл\n");

return 1;

}

}

int n record = i, n man = 0;

float mean pay = 0;

while(true)

{

puts("Введите фамилию или нажмите Enter для окончания:");

gets(name);

if(strlen(name) == 0)break; //3

//OemToChar(name, name); //4

bool not found = true;

for (i = 0; i < n record; i++)

{

if (strstr(dbase[i]. name. name))

if (dbase[i]. name[strlen(name)] == '')

{

strcpy(name. dbase[i]. name);

// CharToOem(name.name); //5

printf("%30s%5i%10.2f\n".name. dbase[i].birth year.

dbase[i].pay); //6

n man++; mean_pay += dbase[i].pay;

not found = false;

}

}

if (not found) puts("Такого сотрудника нет\n");

}

if(n man > 0) printf("Средний оклад: %10.2f\n".mean pay/n man};

return 0;

}

Из всех именованных констант осталась одна, задающая длину поля фамилии (l name, оператор 1). Все остальные константы определять нет смысла, потому что ввод осуществляется не через буферную переменную, а непосредственно в поля структуры с помощью функции чтения строки fgets и форматного ввода fscanf (оператор 2). Эта функция сама выполняет действия по преобразованию подстро­ки в число, которые мы явным образом задавали в предыдущей программе.

Мы упростили выход из цикла ввода запросов, теперь для завершения цикла до­статочно нажать клавишу Enter (оператор 3). Для вывода сведений о сотруднике мы использовали функцию pri ntf (оператор 6).





Дата публикования: 2015-10-09; Прочитано: 255 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...