Форум программистов, компьютерный форум CyberForum.ru

массив структур и функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
FRITS
Сообщений: n/a
20.06.2009, 15:21     массив структур и функции #1
Разработать модель прайс-листов по комплектующим.

Каждую единицу оборудования должна описывать соответствующая структура (например, структура, описывающая видеокарты или мониторы), объект которой может входить в прайс-лист. Соответственно, прайс-лист - это массив структур, каждая из которых хранит один из вариантов оборудования и его цену.

Написать функции для создания, удаления, заполнения и распечатки прайс-листа. Также написать функции для вставки нового элемента в прайс-лист, удаления произвольного элемента из прайс-листа и сортировке элементов прайс-листа по типу оборудования или по его цене.

Добавлено через 22 часа 31 минуту 27 секунд
Ну хоть и никто не ответил!!!
Я сам смостерил

//Модель прайс листа
#include <iostream.h>
#include <string.h>

enum {ChoiceAddEnd=1, ChoiceInsert, ChoiceSort, ChoicePrint, ChoiceDelete, ChoiceDeleteAll, ChoiceQuit};

int Menu();
void AddLine();
void Insert();
void Sort();
void Print();
void Delete();
void DeleteAll();
const int col=50;
struct Price { //Структура прайса
char vid[15];
char name[25];
float cena;
}pr[col]; //количество наименований
int j=0;
int sum,i;

//////////////////////////////////////////////////////////////////

void main()
{
int choice = ChoiceAddEnd;

while (choice != ChoiceQuit) // Пока не выбран пункт ВЫХОД
{
choice = Menu(); // Вывод меню
cin.ignore(1);
switch (choice) // Выбор пункта меню
{
case ChoiceAddEnd:
AddLine();
break;

case ChoiceInsert:
Insert();
break;

case ChoiceSort:
Sort();
break;

case ChoicePrint:
Print();
break;

case ChoiceDelete:
Delete();
break;

case ChoiceDeleteAll:
DeleteAll();
break;

case ChoiceQuit:
break;

default: // В остальных случаях
cout << "Error in choice!\n";
break;
}
}
}

///////////////////////////////////////////////////////////////////

int Menu()
// Вывод меню
{
int choice;
cout << "\n\t\t<<<<<******* Menu *******>>>>>\n\n";
cout << "1-Add 2-Insert 3-Sort 4-Print 5-Delete 6-DeleteAll 7-Quit\n";
cin >> choice; // Выбор пункта меню
if(choice < 0 || choice > 7) // Проверка выбора
choice = 0;
return choice; // Возвращение выбранного пункта
}

//////////////////////////////////////////////////////////////////

void AddLine()
{
cout<<"\nSkolko vvesti naimenovaniy? ";
cin>>j;
if (sum!=0){j=j+sum;};
for (i=sum; i < j; i++)
{
cout << "\nVid complect.: ";
cin >> pr[i].vid;

cout << "Name is: ";
cin>>pr[i].name;

cout << "Cena is: ";
cin >> pr[i].cena;

cout << endl;
++sum;
}
}

///////////////////////////////////////////////////////////////

void Insert()
{
int k,x=1;
cout << "Input position # (0-" << sum << "): ";
cin >> k;
while(k < 0 || k > sum) // Проверка на ошибочный ввод
{
cout << "Error !!!\nInput position # (0-" << sum << "): ";
cin >> k;
}
if(sum==0)
{
sum++;
cout << "\nVid complect.: ";
cin >> pr[i].vid;

cout << "Name is: ";
cin>>pr[i].name;

cout << "Cena is: ";
cin >> pr[i].cena;
}
else
{
char v[15], n[25];
float c;
sum++;
cout << "\nVid complect.: ";
cin >> v;

cout << "Name is: ";
cin>>n;

cout << "Cena is: ";
cin >> c;
for (i=sum; i>=0; i--)
{
if (i==k)
{
strcpy(pr[i].vid, v);
strcpy(pr[i].name, n);
pr[i].cena=c;
}
if (k<i)
{
strcpy(pr[i].vid, pr[i-x].vid);
strcpy(pr[i].name, pr[i-x].name);
pr[i].cena=pr[i-x].cena;
}
}
}
}

///////////////////////////////////////////////////////////////

void Sort()
{
int y=0;
cout<<"\nVedite tip sortirovki (1-po tipu; 2-po cene): ";
cin>>y;
while(y < 1 || y > 2) // Проверка на ошибочный ввод
{
cout << "Error !!!\nInput position # (1-2): ";
cin >> y;
}
char v[15], n[25];
float c;
bool flag = true;// Флаг окончания сортировки
if (y==1)
{
for(int j = 1; ; j++)
{
for(int i = 0; i < sum - j; i++)
if(strcmp(pr[i].vid,pr[i+1].vid)==1)
{
strcpy(v, pr[i].vid);
strcpy(n, pr[i].name);
c=pr[i].cena;

strcpy(pr[i].vid, pr[i+1].vid);
strcpy(pr[i].name, pr[i+1].name);
pr[i].cena=pr[i+1].cena;

strcpy(pr[i+1].vid, v);
strcpy(pr[i+1].name, n);
pr[i+1].cena=c;

flag = false;
}
if(flag == true)
break;
flag = true;
}
}
else
{
for(int j = 1; ; j++)
{
for(int i = 0; i < sum - j; i++)
if(pr[i].cena > pr[i+1].cena)
{
strcpy(v, pr[i].vid);
strcpy(n, pr[i].name);
c=pr[i].cena;

strcpy(pr[i].vid, pr[i+1].vid);
strcpy(pr[i].name, pr[i+1].name);
pr[i].cena=pr[i+1].cena;

strcpy(pr[i+1].vid, v);
strcpy(pr[i+1].name, n);
pr[i+1].cena=c;

flag = false;
}
if(flag == true)
break;
flag = true;
}
}
}

///////////////////////////////////////////////////////////////

void Print()
{
for (i=0; i < sum; i++)
{
cout << "\nVid complect.: " <<pr[i].vid;
cout << "\tName is: " << pr[i].name;
cout << "\tCena is: " << pr[i].cena << "\n";
}
}

//////////////////////////////////////////////////////////////

void Delete()
{
int k,x=1;
sum--;
cout << "Delete position # (0-" << sum << "): ";
cin >> k;
while(k < 0 || k > sum) // Проверка на ошибочный ввод
{
cout << "Error !!!\nDelete position # (0-" << sum << "): ";
cin >> k;
}

for (i=0; i<=sum; i++)
{
if (i==k)
{
strcpy(pr[i].vid, pr[i+x].vid);
strcpy(pr[i].name, pr[i+x].name);
pr[i].cena=pr[i+x].cena;
}
if (k<i)
{
strcpy(pr[i].vid, pr[i+x].vid);
strcpy(pr[i].name, pr[i+x].name);
pr[i].cena=pr[i+x].cena;
}

}
}

/////////////////////////////////////////////////////////////

void DeleteAll()
{
char v[15], n[25];
float c=0;
for(int i = 0; i < sum; i++)
{
strcpy(pr[i].vid, v);
strcpy(pr[i].name, n);
pr[i].cena=c;
}
sum = 0;
}
///////////////////////////////К О Н Е Ц///////////////////////////////////////
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2009, 15:21     массив структур и функции
Посмотрите здесь:

Массив структур C++
C++ Передать массив структур функции
C++ Массив структур
Массив структур C++
Массив структур C++
массив структур C++
C++ Массив структур и функции
Массив структур в с++ C++
C++ Массив структур
C++ Функции сортировки структур
Массив структур C++
C++ Массив структур С++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 08:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru