Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 17.02.2018
Сообщений: 13

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

20.02.2020, 17:53. Показов 1159. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2020, 17:53
Ответы с готовыми решениями:

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

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

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

1
Мозгоправ
 Аватар для L0M
1745 / 1039 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
21.02.2020, 05:13
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2020, 05:13
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru