Выбрать главу

   cin >> hours[i];

  cout << "Введите оклад: ";

   cin >> wage[i];

 }

}

На основании введенных данных можно составить отчет, вычислив заработную плату, которая причитается каждому служащему. Для этого воспользуемся следующей функцией report().

// Отображение отчета.

void report()

{

 int i;

 for(i=0; i<10; i++) {

  cout << name[i] << ' ' << phone[i] << '\n';

  cout << "Заработная плата за неделю: "<< wage[i] * hours[i];

  cout << '\n';

 }

}

Полностью программа базы данных служащих приведена ниже. Обратите особое внимание на то, как реализуется доступ к каждому массиву. Эта версия программы ведения базы данных служащих еще далека от совершенства, поскольку введенная в нее информация теряется сразу же по выходу из программы. Ниже в этой книге мы научимся сохранять информацию в дисковом файле.

// Простая программа ведения базы данных служащих.

#include <iostream>

using namespace std;

char name[10][80]; // Массив имен служащих.

char phone[10] [20]; // Массив телефонных номеров служащих.

float hours[10]; // Массив часов, отработанных за неделю.

float wage[10]; // Массив окладов.

int menu();

void enter(), report();

int main()

{

 int choice;

 do {

  choice = menu(); // Получаем команду, выбранную пользователем.

  switch(choice) {

   case 0: break;

   case 1: enter();

    break;

   case 2: report();

    break;

   default: cout << "Попробуйте еще раз.\n\n";

  }

 }while(choice != 0);

 return 0;

}

// Функция возвращает команду, выбранную пользователем.

int menu()

{

 int choice;

 cout << "0. Выход из программы\n";

 cout << "1. Ввод информации\n";

 cout << "2. Генерирование отчета\n";

 cout << "\n Выберите команду: ";

  cin >> choice;

 return choice;

}

// Функция ввода информации в базу данных.

void enter()

{

 int i;

 char temp[80];

 for(i=0; i<10; i++) {

  cout << "Введите фамилию: ";

   cin >> name[i];

  cout << "Введите номер телефона: ";

   cin >> phone[i];

  cout << "Введите количество отработанных часов: ";

   cin >> hours[i];

  cout << "Введите оклад: ";

   cin >> wage[i];

 }

}

// Отображение отчета.

void report()

{

 int i;

 for(i=0; i<10; i++) {

  cout << name[i] << ' ' << phone[i] << '\n';

  cout << "Заработная плата за неделю: "<< wage[i] * hours[i];

  cout << '\n';

 }

}

Глава 6: Указатели

Указатели, без сомнения, — один из самых важных и сложных аспектов C++. В значительной степени мощь многих средств C++ определяется использованием указателей. Например, благодаря им обеспечивается поддержка связных списков и динамического выделения памяти, и именно они позволяют функциям изменять содержимое своих аргументов. Однако об этом мы поговорим в последующих главах, а пока (т.е. в этой главе) мы рассмотрим основы применения указателей и покажем, как можно избежать некоторых потенциальных проблем, связанных с их использованием.