Сделал курсовую работу. Возникла трудность с одним пунктом из технического задания, он звучит так:
Создать структуру "акции", содержащую не менее 5 полей, одно из которых называется "рынок" и указывает, на какой бирже продают данные акции
Я добавил переменную char market. Преподаватель говорит, что нужно добавить поле структурного типа и так связать структуры. Вот так:
struct Stocks {
char market[30]; //Рынок
char name[30]; //Название акции
char company[30]; //Акционерное общество
int cost; //Цена акции
int st_din; //Динамика акции
Stock_exchange y; //Добавленное поле
};
Ещё, нужно вывести информацию о бирже на которой продаются введённые акции(вводятся с клавиатуры или с файла(функции inputdata и fileinput)).
Вывод информации реализован у меня с помощью функции void stockinfo(с использованием поля market из структуры Stocks).
Вопрос: что нужно делать после добавления поля 'y' в структуре Stocks (как реализовать всё выше описанное после этого изменения) ?
Мой код ниже:
#include <iostream>
#include <fstream>
using namespace std;
int n;
//Структура "фондовая биржа"
struct Stock_exchange {
string country; //Страна рынка
string owner; //Владелец рынка
int circulation; //Оборот в год
};
//Структура "акции"
struct Stocks {
char market[30]; //Рынок
char name[30]; //Название акции
char company[30]; //Акционерное общество
int cost; //Цена акции
int st_din; //Динамика акции
};
Stock_exchange MOEX, LSE;
int menu()
{
int choice;
cout << "Введите:\n";
cout << "1 - для ввода данных\n";
cout << "2 - для нахождения самой дорогой акции\n";
cout << "3 - для нахождения суммы стоимостей акций ММВБ\n";
cout << "4 - для нахождения суммы стоимостей акций LSE\n";
cout << "5 - для нахождения общей суммы стоимостей всех акций\n";
cout << "6 - для вывода акций\n";
cout << "7 - для выхода\n";
cin >> choice;
return choice;
}
int count(string file){
ifstream f(file);
int k = 0;
string tmp;
while(getline(f,tmp)){
k++;
}
k = k / 5;
f.close();
return k;
}
void show(Stocks *s,int n){
cout << "-------------------------------------------------------------------------"
<< endl;
for (int i = 0;i < n;i++){
cout << "Биржа: " << s[i].market << endl;
cout << "Название акции: " << s[i].name << endl;
cout << "Акционерное общество: " << s[i].company << endl;
cout << "Стоимость: " << s[i].cost << endl;
cout << "Динамика: " << s[i].st_din << endl;
cout << "-------------------------------------------------------------------------" << endl;
}
}
void fileinput(Stocks *s , int k, string file){
ifstream f(file);
for (int i = 0;i < k; i++){
f >> s[i].market;
f >> s[i].name;
f >> s[i].company;
f >> s[i].cost;
f >> s[i].st_din;
}
f.close();
}
void stockinfo(Stock_exchange EX)
{
cout << "Информация о бирже" << endl;
cout << "Страна: " << EX.country << endl <<
"Владелец рынка: " << EX.owner << endl <<
"Оборот в год: " << EX.circulation << "\n" << endl;
}
int summoex(Stocks *MX,int m) {
int sum = 0;
for (int i = 0; i<m; i++){
sum += MX[i].cost;
}
return sum;
}
int sumlse(Stocks *LS,int l){
int sum = 0;
for (int i = 0; i<l; i++){
sum += LS[i].cost;
}
return sum;
}
void maxcost(Stocks *MX, int m, Stocks *LS, int l) //Самая дорогая акция
{
cout << "\nИнформация о самой дорогой акции " << endl;
int maxcost = 0, cost;
string market,name,company;
for (int i = 0; i < m; i++)
if ((MX[i].cost) > maxcost) {
maxcost = MX[i].cost;
market = MX[i].market;
name = MX[i].name;
company = MX[i].company;
cost = MX[i].cost;
}
for (int i = 0; i < l; i++)
if ((LS[i].cost) > maxcost) {
maxcost = LS[i].cost;
market = LS[i].market;
name = LS[i].name;
company = LS[i].company;
cost = LS[i].cost;
}
cout << "Биржа: " << market << endl <<
"Акция: " << name << endl <<
"Акционерное общество: " << company << endl <<
"Цена: " << maxcost << endl;
}
void inputdata(int x, Stocks *s) {
for (int i = 0; i < x; i++)
{
cout << "Введите биржу, название акции, акционерное общество, цену акции, и динамику акции" << endl;
cin >> s[i].market;
cin >> s[i].name;
cin >> s[i].company;
cin >> s[i].cost;
cin >> s[i].st_din;
}
}
int main()
{
int m, l, method;
cout << "Введите количество акций в <MOEX> и <LSE>" << endl;
cin >> m >> l;
//Создание динамических массивов
Stocks *MX = new Stocks[m];
Stocks *LS = new Stocks[l];
//Заполнение сущностей
MOEX.circulation = 53;
MOEX.country = "Russia";
MOEX.owner = "Yuri Denisov";
LSE.circulation = 65;
LSE.country = "United Kingdom";
LSE.owner = "Donald Brydon";
while (1)
{
switch (menu()){
case 1: {
cout << "Выберите способ ввода данных:" << endl << "1 - с клавиатуры, 2 - из файла" << endl;
cin >> method;
switch (method){
case 1: {
cout << "Введите данные об акциях в <MOEX>" << endl;
inputdata(m,MX);
cout << "Введите данные об акциях в <LSE>" << endl;
inputdata(l,LS);}break;
case 2: {
cout << "Считывание данных об акциях ММВБ " << endl;
fileinput(MX,count("moex.txt"),"moex.txt");
cout << "Считывание данных об акциях LSE " << endl;
fileinput(LS,count("lse.txt"),"lse.txt");
}
}
}break;
case 2: maxcost(MX,m,LS,l);break;
case 3: cout << "Сумма стоимостей акций ММВБ: " << summoex(MX,m) << endl;break;
case 4: cout << "Сумма стоимостей акций LSE: " << sumlse(LS,l) << endl;break;
case 5: cout << "Сумма стоимостей всех акций: " << summoex(MX,m) + sumlse(LS,l) << endl;break;
case 6: show(MX,m);stockinfo(MOEX);show(LS,l);stockinfo(LSE);break;
case 7: {delete[]MX; delete[]LS; return 0;}
default: cout << "Ошибка!\n";
}
}
}
Вызвать из функции show функцию stockinfo. stockinfo(s[i].y);
#include <iostream>
#include <fstream>
using namespace std;
int n;
struct Stock_exchange {
string country; //Страна рынка
string owner; //Владелец рынка
int circulation; //Оборот в год
};
struct Stocks {
char market[30]; //Рынок
char name[30]; //Название акции
char company[30]; //Акционерное общество
int cost; //Цена акции
int st_din; //Динамика акции
Stock_exchange y;
};
Stock_exchange MOEX, LSE;
int menu()
{
int choice;
cout << "Введите:\n";
cout << "1 - для ввода данных\n";
cout << "2 - для нахождения самой дорогой акции\n";
cout << "3 - для нахождения суммы стоимостей акций ММВБ\n";
cout << "4 - для нахождения суммы стоимостей акций LSE\n";
cout << "5 - для нахождения общей суммы стоимостей всех акций\n";
cout << "6 - для вывода акций\n";
cout << "7 - для выхода\n";
cin >> choice;
return choice;
}
int count(string file){
ifstream f(file);
int k = 0;
string tmp;
while(getline(f,tmp)){
k++;
}
k = k / 5;
f.close();
return k;
}
void fileinput(Stocks *s , int k, string file){
ifstream f(file);
for (int i = 0;i < k; i++){
f >> s[i].market;
f >> s[i].name;
f >> s[i].company;
f >> s[i].cost;
f >> s[i].st_din;
}
f.close();
}
void stockinfo(Stocks *s)
{
cout << "Информация о бирже" << endl;
cout << "Страна: " << s->y.country << endl <<
"Владелец рынка: " << s->y.owner << endl <<
"Оборот в год: " << s->y.circulation << "\n" << endl;
}
void show(Stocks *s,int n){
cout << "-------------------------------------------------------------------------"
<< endl;
for (int i = 0;i < n;i++){
cout << "Биржа: " << s[i].market << endl;
cout << "Название акции: " << s[i].name << endl;
cout << "Акционерное общество: " << s[i].company << endl;
cout << "Стоимость: " << s[i].cost << endl;
cout << "Динамика: " << s[i].st_din << endl;
cout << "------------------------------------------------------------------------" << endl;
}
}
int summoex(Stocks *MX,int m) {
int sum = 0;
for (int i = 0; i<m; i++){
sum += MX[i].cost;
}
return sum;
}
int sumlse(Stocks *LS,int l){
int sum = 0;
for (int i = 0; i<l; i++){
sum += LS[i].cost;
}
return sum;
}
void maxcost(Stocks *MX, int m, Stocks *LS, int l) //Самая дорогая акция
{
cout << "\nИнформация о самой дорогой акции " << endl;
int maxcost = 0, cost;
string market,name,company;
for (int i = 0; i < m; i++)
if ((MX[i].cost) > maxcost) {
maxcost = MX[i].cost;
market = MX[i].market;
name = MX[i].name;
company = MX[i].company;
cost = MX[i].cost;
}
for (int i = 0; i < l; i++)
if ((LS[i].cost) > maxcost) {
maxcost = LS[i].cost;
market = LS[i].market;
name = LS[i].name;
company = LS[i].company;
cost = LS[i].cost;
}
cout << "Биржа: " << market << endl <<
"Акция: " << name << endl <<
"Акционерное общество: " << company << endl <<
"Цена: " << maxcost << endl;
}
void inputdata(int x, Stocks *s) {
for (int i = 0; i < x; i++)
{
cout << "Введите биржу, название акции, акционерное общество, цену акции, и динамику акции" << endl;
cin >> s[i].market;
cin >> s[i].name;
cin >> s[i].company;
cin >> s[i].cost;
cin >> s[i].st_din;
}
}
int main()
{
int m, l, method;
cout << "Введите количество акций в <MOEX> и <LSE>" << endl;
cin >> m >> l;
//Создание динамических массивов
Stocks *MX = new Stocks[m];
Stocks *LS = new Stocks[l];
//Заполнение сущностей
MOEX.circulation = 53;
MOEX.country = "Russia";
MOEX.owner = "Yuri Denisov";
LSE.circulation = 65;
LSE.country = "United Kingdom";
LSE.owner = "Donald Brydon";
MX->y.owner = MOEX.owner;
MX->y.country = MOEX.country;
MX->y.circulation = MOEX.circulation;
LS->y.owner = LSE.owner;
LS->y.country = LSE.country;
LS->y.circulation = LSE.circulation;
while (1)
{
switch (menu()){
case 1: {
cout << "Выберите способ ввода данных:" << endl << "1 - с клавиатуры, 2 - из файла" << endl;
cin >> method;
switch (method){
case 1: {
cout << "Введите данные об акциях в <MOEX>" << endl;
inputdata(m,MX);
cout << "Введите данные об акциях в <LSE>" << endl;
inputdata(l,LS);}break;
case 2: {
cout << "Считывание данных об акциях ММВБ " << endl;
fileinput(MX,count("moex.txt"),"moex.txt");
cout << "Считывание данных об акциях LSE " << endl;
fileinput(LS,count("lse.txt"),"lse.txt");
}
}
}break;
case 2: maxcost(MX,m,LS,l);break;
case 3: cout << "Сумма стоимостей акций ММВБ: " << summoex(MX,m) << endl;break;
case 4: cout << "Сумма стоимостей акций LSE: " << sumlse(LS,l) << endl;break;
case 5: cout << "Сумма стоимостей всех акций: " << summoex(MX,m) + sumlse(LS,l) << endl;break;
case 6: show(MX,m);stockinfo(MX);show(LS,l);stockinfo(LS);break;
case 7: {delete[]MX; delete[]LS; return 0;}
default: cout << "Ошибка!\n";
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня есть переменная типа uint8*, которая "заполнена" картинкойКак преобразовать её в QIcon? А вот функция, которая заполняет переменную типа...
Нужна помощь или совет как реализовать такую задачу:Надо отсортировать массив и вывести все этапы сортировкиМассивы я отсортировал и программа...
Скажите, пожалуйста, в каком состоянии находятся объекты стандартной библиотеки после перемещения? Можно ли продолжать их использовать?