0 / 0 / 0
Регистрация: 17.02.2018
Сообщений: 13
1

Возврат структуры из функции через указатель

20.02.2020, 17:53. Показов 385. Ответов 1
Метки нет (Все метки)

Помогите,пожалуйста, немного знаю C++,спрашивала у знакомой - она не знает, а я гуглила и так ничего и не поняла
Может,нужно саму программу переписать?
В функции Find нужно вернуть вторую структуру по заданию после выполнения цикла
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
#include <Windows.h>
#include <cstdlib>
#include <iomanip>
 
 
using namespace std;
struct tv
{
    char naz[81];
    float dig;
    int cena;
}Mystruct;
struct tv2
{
    char naz1[81];
    float dig1;
    int cena1;
};
 
int MyFcmp(const void* p1, const void* p2)
{
    int* q1 = (int*)p1, * q2 = (int*)p2;
    if (*q2<*q1) return 1;
    else if (*q1 == *q2)
        return -1;
    else return 0;
}
 
void In(int n, tv* tv1)
{
 
    int i;
 
    for (i = 0; i < n; i++)
    {
        cout << "Введите название телевизора: ";   cin >> tv1[i].naz;
        cout << "Введите диагональ телевизора: "; cin >> tv1[i].dig;
        cout << "Введите цену телевизора: "; cin >> tv1[i].cena;
        cout << endl;
 
 
    }
}
void Out(int n, tv* tv1)
{
    int i;
 
      for (i = 0; i < n; i++)
    {
        cout << i+1 << ") " << "Название:" << tv1[i].naz << " ";    
        cout << "Диагональ: " << tv1[i].dig << " ";
        cout << "Цена: " << tv1[i].cena << " ";
        cout << endl;
 
    }
    
}
 
int Find(float b, float a, tv2 * tv3, tv *tv1,   int n)
{   
    
    for (int i = 0; i < n; i++)
    {
        if (tv3[i].dig1 >= b && tv3[i].dig1 <= a)
        {
            cout << "Телевизор: " << tv3[i].naz1  << " ";
            cout << "Диагональ: " << tv3[i].dig1<< "'" << " ";
            cout << "Цена: " << tv3[i].cena1 << " ";
            cout << endl;
            
        }
        
    }
    cout << endl;
    delete[] tv3;
    return tv3;
    
 
    
}
 
 
    int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n,*p;
    
    float a,b;
    
    
    
    cout << "Введите кол-во товара:" << endl;
    cin >> n;
 
    tv* tv1 = new tv[n];
    tv2* tv3 = new tv2[n];
    
 
    In(n, tv1);
    Out(n, tv1);
    cout << "Введите ваш желаемый диапозон диагонали: " << endl;
    cin >> a >> b;
    if (a > b) swap(a, b);
    cout << "Ваш диапозон: " << a << "-" << b << endl;
 
    p = new int[n];
 
    for (int i = 0; i < n; i++)
    {
        tv3[i].cena1= tv1[i].cena;
        tv3[i].dig1 = tv1[i].dig;
        tv3[i].naz1 == tv1[i].naz;
    }
    
    Find(a, b,tv3,tv1 , n);
 
    
 
    qsort(p, n, sizeof(int), MyFcmp);
 
    cout << "Ваша сортировка по цене: " << endl;
    for (int i = 0; i < n; i++)
    {
        cout << setw(5);
        cout << " " << i+1 << ") "<< "Название: " << tv3[i].naz1 << setw(5) << " ";
        cout<< "Диагональ: "  << tv3[i].dig1 << "'" << setw(5) << " ";
        cout << "Цена: " << tv3[i].cena1 << setw(5) << " ";
        cout << endl;
 
        
    }
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2020, 17:53
Ответы с готовыми решениями:

Возврат значения метода через указатель
Здраствуйте, помогите зделать что бы возврат результатов с метода решения уравнения возвращался...

Возврат ссылки на указатель из функции
#include &lt;iostream&gt; int*&amp; getPtrRef(int*&amp; ref) { int*&amp; cpy = ref; std::cout &lt;&lt; &amp;ref...

Возврат структуры функцией через указатель
Здравствуй. После С++ никак не могу понять, как сделать. Нужно создать функцию struct A*...

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

1
Мозгоправ
1729 / 1023 / 468
Регистрация: 01.10.2018
Сообщений: 2,137
Записей в блоге: 2
21.02.2020, 05:13 2
sushi2go, если вашу программу немного причесать, то она даже будет работать:
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <Windows.h>
 
using namespace std;
 
struct tv
{
    char naz[81];
    float dig;
    int cena;
};
 
int cmpByDig(const void *p1, const void *p2)
{
    const tv *tv1 = (const tv *)p1;
    const tv *tv2 = (const tv *)p2;
    return (int)(tv1->cena - tv2->cena);
}
 
void In(int n, tv *tv1)
{
    int i;
 
    for (i = 0; i < n; i++)
    {
        cout << "Введите название телевизора: ";   cin >> tv1[i].naz;
        cout << "Введите диагональ телевизора: "; cin >> tv1[i].dig;
        cout << "Введите цену телевизора: "; cin >> tv1[i].cena;
        cout << endl;
    }
}
 
void Out(int n, tv *tv1)
{
    int i;
 
    for (i = 0; i < n; i++)
    {
        cout << i + 1 << ") " << "Название:" << tv1[i].naz << " ";
        cout << "Диагональ: " << tv1[i].dig << " ";
        cout << "Цена: " << tv1[i].cena << " ";
        cout << endl;
    }
 
}
 
tv Find(float b, float a, tv *tv1, int n)
{
    for (int i = 0; i < n; i++)
    {
        if (tv1[i].dig >= a && tv1[i].dig <= b)
        {
            cout << "Телевизор: " << tv1[i].naz << " ";
            cout << "Диагональ: " << tv1[i].dig << "'" << " ";
            cout << "Цена: " << tv1[i].cena << " ";
            cout << endl;
        }
    }
    cout << endl;
 
    if (n > 1)
        return tv1[1];
 
    return tv();
}
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int n;
 
    float a, b;
 
    cout << "Введите кол-во товара:" << endl;
    cin >> n;
 
    tv *tv1 = new tv[n];
 
 
    In(n, tv1);
    Out(n, tv1);
    cout << "Введите ваш желаемый диапАзон диагонали: " << endl;
    cin >> a >> b;
    if (a > b) swap(a, b);
    cout << "Ваш диапАзон: " << a << "-" << b << endl;
 
    tv found_tv =  Find(a, b, tv1, n);
    cout << "Второй телевизор) " << "Название:" << found_tv.naz << " ";
    cout << "Диагональ: " << found_tv.dig << " ";
    cout << "Цена: " << found_tv.cena << " ";
    cout << endl;
 
 
    qsort(tv1, n, sizeof(tv), cmpByDig);
 
    cout << "Ваша сортировка по цене: " << endl;
    for (int i = 0; i < n; i++)
    {
        cout << setw(5);
        cout << " " << i + 1 << ") " << "Название: " << tv1[i].naz << setw(5) << " ";
        cout << "Диагональ: " << tv1[i].dig << "\"" << setw(5) << " ";
        cout << "Цена: " << tv1[i].cena << setw(5) << " ";
        cout << endl;
    }
    return 0;
}
Цитата Сообщение от sushi2go Посмотреть сообщение
В функции Find нужно вернуть вторую структуру по заданию после выполнения цикла
Совсем не понял. Но некую затычку сделал.
Цитата Сообщение от sushi2go Посмотреть сообщение
Может,нужно саму программу переписать?
Да. Обязательно переписать. Потому что пока это жуть.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2020, 05:13

Возврат структуры из функции
Добрый день! Я только начинаю, и сразу стал путаться с массивами и структурами с горем попалам...

Возврат структуры из функции
Всем доброго времени суток. awesome.h struct point { float x = 1; float y = 1; }; struct...

Функции: возврат структуры
struct my_info{ //поля } my_struct; //структура struct my_info funct (struct my_info);...

Возврат структуры из функции
Задание на структуру: создается банковский счет с возможностью изменения его данных по ходу. Я не...


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

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

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