Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
rabprog.doc
Скачиваний:
2
Добавлен:
26.11.2019
Размер:
264.7 Кб
Скачать

3.3.2. Методические указания к выполнению контрольной работы 3

В данной контрольной работе студент должен вначале выполнить описание класса (структуры), а затем объявить массив объектов данного типа на 10 элементов.

В программе должны быть функции:

  • ввода данных;

  • вывода всей информации на экран;

  • вывода данных на экран, отвечающих заданным условиям поиска (согласно варианта задания).

Условие задачи.

1.Структура с именем PRICRE содержит следующие поля:

  • наименование товара;

  • название магазина;

  • стоимость товара в рублях.

2. Условие поиска - вывести на экран информацию о товаре, наименование которого введено с клавиатуры.

Пусть:

tovar - имя поля с наименованием товара - символьный массив размерностью 20;

mag - имя поля с названием магазина - символьный массив

размерностью 15;

cena - имя поля со стоимостью товара в рулях - целое число.

Тогда описание структуры (класса) будет таким:

struct PRICE

{

char tovar[20];

char mag[15];

int cena;

};

Текст программы

#include <iostream.h>

#include <iomanip.h>

#include <string.h>

#include <conio.h>

#define TOV 20 // длина поля наименования товара

#define MAG 15 // длина поля названия магазина

#define R 10 // размерность массива объектов

// описание структуры PRICE

struct PRICE

{

char tovar [TOV];

char mag [MAG];

int cena;

};

// прототипы функций

void input ( PRICE [R] );

void output ( PRICE [R] );

PRICE inputzap ();

void outputzap ( PRICE );

void tabl();

void poisk ( PRICE [R] );

void main()

{

PRICE m[R]; // объявление массива объектов типа PRICE

// размерностью R

clrscr(); // функция очистки экрана

input(m);

clrscr();

output(m);

poisk(m);

}

// определение функции ввода в массив объектов

void input( PRICE x[R])

{

int i;

cout << "Ввод информации в массив объектов:\n";

for (i=0; i<R; i++)

x[i]=inputzap();

}

// определение функции ввода одной записи

PRICE inputzap()

{

PRICE z;

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

cin.seekg(0L, ios::end);

cin.get(z.tovar, TOV-1, '\n');

cout << "Введите название магазина:";

cin.seekg(0L, ios::end);

cin.get(z.mag, MAG-1, '\n');

cout << "Введите стоимость товара в рублях:";

cin.seekg(0L, ios::end);

cin >> z.cena;

return z;

}

// определение функции вывода всей информации на экран

void output ( PRICE x[R] )

{

int i;

cout << "Вывод информации о всех товарах:\n";

tabl();

for (i=0; i<R; i++)

outputzap(x[i]);

cout << "------------------------------------------------------------\n";

}

// определение функции вывода одной записи на экран

void outputzap (PRICE z)

{

cout.setf(ios::left); // установка флага равнения по левому краю

cout << "|" << setw(25) << z.tovar << "|" << setw(20) << z.mag

<< "|";

cout.setf(ios::right); // установка флага равнения по правому краю

cout << setw(11) << z.cena << "|" << endl;

}

// определение функции вывода на экран шапки таблицы

void tabl()

{

cout << "-----------------------------------------------------------------------------\n";

cout << "| Наименование товара | Название магазина | Стоимость |\n";

cout << "|---------------------------------|--------------------------|----------------|\n";

}

// определение функции вывода на экран информации,

// отвечающей условию поиска

void poisk ( PRICE x[R] )

{

int i;

char tov[TOV]; // для ввода условия поиска

cout << "Введите наименование интересующего Вас товара:";

cin.seekg(0L, ios::end);

cin.get(tov,TOV-1,'\n');

cout << "Вывод информации о заданном товаре:\n";

tabl();

for (i=0; i<R; i++)

if (strcmp(x[i].tovar,tov)==0)

// наименования товара совпали

outputzap(x[i]);

cout << "------------------------------------------------------------\n";

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]