Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
enuvin
0 / 0 / 2
Регистрация: 30.03.2017
Сообщений: 14
#1

Сортировка по сумме и по названию -С++ - C++

29.05.2017, 08:50. Просмотров 139. Ответов 5
Метки нет (Все метки)

Класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <vector>
using namespace std;
class Good{
private:
    char name[100];
    long amount;
    double price;
    double weihgt;
public:
    Good();
    char* GetName();
    long GetAmount();
    double GetPrice();
    double GetWeight();
    void SetName(char goodName[100]);
    void SetAmount(long goodAmount);
    void SetPrice(double goodPrice);
    void SetWeight(double goodweight);
    void SortAmounts();
    void SortNames();
    ~Good();
};
 
class WareHouse{
private:
    vector<Good> goods;
public:
    WareHouse();
    Good GetGoodByIndex(unsigned long index);
    void AddGood(Good good);
    ~WareHouse();
};
Функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include"classTest.h"
#include<string.h>
Good::Good(){
};
char* Good::GetName(){
    return name;
};
long Good::GetAmount(){
    return amount;
};
double Good::GetPrice(){
    return price;
};
double Good::GetWeight(){
    return weihgt;
};
void Good::SetName(char goodName[100]){
    strcpy_s(name,goodName);
};
void Good::SetAmount(long goodAmount){
    amount = goodAmount;
};
void Good::SetPrice(double goodPrice){
    price = goodPrice;
};
void Good::SetWeight(double goodweight){
    weihgt = goodweight;
};
void Good::SortNames(Good a[],int b){
    for(int j=0;j<b;j++){
        for(int i=0;i<b-1;i++){
            if(strcmp(a[i].name,a[i+1].name)>0){
                Good e=a[i];
                a[i]=a[i+1];
                a[i+1]=e;
            }
        }
    }
};
void Good::SortAmounts(double a[],int b){
for(int j=0;j<n;j++)
        {
            int max=a[b], nmax=t;
            for (int s=j; s<b; s++)
            {
                if (a[s]>max) 
                { 
                    max=a[s];
                    nmax=s;
                }
            }
            a[nmax]=a[j]; 
            a[j]=max;
        }
};
Good::~Good(){
};
//////////////////////////////////////////////////////////////////
WareHouse::WareHouse(){
};
Good WareHouse::GetGoodByIndex(unsigned long index){
    return goods[index];
};
void WareHouse::AddGood(Good good){
    goods.push_back(good);
};
WareHouse::~WareHouse(){
    int i = 0;
    while (i<goods.size())
    {
        Good temp = goods[i];
        temp.~Good();
        i++;
    }
    goods.clear();
};
Файл main:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include"classTest.h"
#include<iostream>
void main(){
    Good good;
    WareHouse myWareHouse;
    char *name,c;
    long m;
    double p,mass;
    int n = 2;
    for (int i = 0; i < n; i++){
        name = new char[100];
        printf("Name: ");
        gets_s(name, 100);
        printf("Amount, weight , price: ");
        scanf_s("%ld%lg%lg",&m,&mass,&p);
        scanf_s("%c",&c);
        good.SetName(name);
        good.SetAmount(m);
        good.SetPrice(p);
        good.SetWeight(mass);
        myWareHouse.AddGood(good);
    }
    double *sum = new double[n];
    printf("Sorting amount: ");
    for (int i = 0; i < n;i++){
        good = myWareHouse.GetGoodByIndex(i);
        sum[i] = good.GetAmount() * good.GetPrice();}
    SortAmounts(sum,n);
    for (int i = 0; i < n;i++){
        printf_s("%s - ",good.GetName());
        printf_s("%lg\n",sum[i]);
    }
    printf("Sorting names: ");
    SortNames(good,n);
    for(int i=0;i<n;i++){
        cout<<good.GetName()<<good.GetAmount()<<good.GetWeight()<<good.GetPrice()<<endl;    
    }
    delete sum;
    delete name;
}
Выводит ошибку:
Ошибка 2 error C2511: void Good::SortAmounts(double [],int): перегруженная функция-член не найдена в 'Good' 40
Ошибка 1 error C2511: void Good::SortNames(Good [],int): перегруженная функция-член не найдена в 'Good' 29
Ошибка 4 error C3861: SortAmounts: идентификатор не найден 28
Ошибка 5 error C3861: SortNames: идентификатор не найден 34
Вот. Я не понял почему не видит функцию.
Условие.Пусть имеется склад, в котором хранятся различные товары. Каждый товар описывается его названием, количеством, массой и ценой одной единицы товара.
Программа сортирует данные по общей стоимости (произведение количества товара на стоимость одной единицы), по названию товара.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2017, 08:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сортировка по сумме и по названию -С++ (C++):

Сортировка структур по названию книги
Помогите пожалуйста. Идея такая: с помощью функции void write_to_file()...

Сортировка по названию из процессора (структура)
Пользователь вводит названия процессора, его частоту, рам и тип и так несколько...

Работа с файлами данных (сортировка по названию пункта назначения)
Надо подправить программу. Вот задание: Структура AEROFLOT с полями: -...

Сортировка по сумме цифр
Вывести все элементы массива в порядке неубывания суммы цифр. Я реализовала...

Сортировка массива по сумме цифр числа
Написать программу сортировки по сумме цифр. Использовать функцию. в...

Сортировка массива по сумме квадратов десятичных цифр
Объясните как работает данная программа. Что делает каждый оператор? #include...

5
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,352
29.05.2017, 09:07 #2
Потому что прототип не совпадает с реализацией. Внимательно сравни.
1
enuvin
0 / 0 / 2
Регистрация: 30.03.2017
Сообщений: 14
29.05.2017, 11:55  [ТС] #3
Цитата Сообщение от nmcf Посмотреть сообщение
Потому что прототип не совпадает с реализацией. Внимательно сравни.
А можешь указать где именно?
0
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,352
29.05.2017, 12:04 #4
C++
1
2
3
void SortAmounts();
 
void Good::SortAmounts(double a[],int b){
1
enuvin
0 / 0 / 2
Регистрация: 30.03.2017
Сообщений: 14
29.05.2017, 13:05  [ТС] #5
Исправил, но все равно не видит функции
0
nmcf
6243 / 5555 / 2526
Регистрация: 14.04.2014
Сообщений: 23,352
29.05.2017, 16:50 #6
Показывай.
1
29.05.2017, 16:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2017, 16:50
Привет! Вот еще темы с решениями:

Сортировка двумерного массива по сумме элементов строк
Добрый день. Делаю лабораторную, задача: В двумерном массиве хранятся данные...

Сортировка массива структур "Студент" по сумме баллов
Здравствуйте. Помогите пожалуйста. Делаю уже месяц, задача простоя а наверно я...

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

Сортировка по названию
Здравствуйте друзья, у меня возникла сложность, нужно сделать так, чтобы после...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru