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

Выражение должно иметь тип класса в Visual Studio

09.01.2015, 11:21. Показов 3648. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Около года назад прорешивали с братом возможные задания на экзамен (он учился на курс старше меня), а мне сейчас выпала решенная нами задачка про быструю сортировку массива точек, где одна точка считается больше другой, если она лежит правее, или, если координаты совпадают, выше.
Дело в том, что брат писал код и объяснял что к чему мне через скайп, все прекрасно работало и сортировалось, но он работал в С++ билдере, а мне нужно показывать работу в Visual Studio, а в ней выпадает следующая ошибка: не выходит вывести на экран отсортированные точки, в списке ошибок поясняется, что выражение должно иметь тип класса. Что нужно добавить или изменить?

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
POINT massiv[] =
 {
    {11, 6}, {6, 2}, {12, 8}, {15, 9},
    {4, 10}, {11, 9}, {8, 9}, {10, 10},
    {11, 9}, {9, 10}, {9, 11}, {6, 15},
    {14, 12}, {4, 11}, {11, 6}, {11, 15}
 };
 
int sravX(const void *t1, const void *t2)
{
    return ((POINT *)t1)->x-((POINT *)t2)->x;
}
 
int sravY(const void *t1, const void *t2)
{
    return ((POINT *)t1)->y-((POINT *)t2)->y;
}
 
void sorting(POINT *massiv, int width, int height)
{
    int k=width*height;
 
    qsort(massiv, k, sizeof(POINT), &sravX);
        for (int i=0; i<k; i=i+height)
    qsort(&massiv, height, sizeof(POINT), &sravY);
    for (int i=0; i<k; i++)
        cprintf("%d %d\r\n", massiv.x, massiv.y);//ошибка: выражение слева от .x и .y должно представлять ///класс, структуру или объединение
    getch();
}
 
int main(void)
{
    sorting(massiv, 4, 4);
    return 0;
}
Брат сейчас в армии, у него спросить, в чем проблема, не могу, прошу помочь знающих людей
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.01.2015, 11:21
Ответы с готовыми решениями:

Выражение должно иметь тип класса
Вот код мне нужно проверить пустое поле textBox1. if (textBox1-&gt;Text.Empty) { Form2 ^ F2; F2 = gcnew Form2(); ...

Выражение должно иметь тип класса. Да ну?
перекопал весь форум, ни где не нашел решение моей проблемы. #include &lt;GL/glut.h&gt; #include &lt;Windows.h&gt; #include...

Выражение должно иметь тип класса
Есть класс матрица, содержащий следующие поля: int rows, cols;//количество строк и столбцов vector &lt;vector &lt;float&gt;&gt;...

7
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.01.2015, 11:34
C++
1
cprintf("%d %d\r\n", massiv[i].x, massiv[i].y);
Добавлено через 39 секунд
tie_rs, Тэги кодов не забывай.
1
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 6
09.01.2015, 12:20  [ТС]
Спасибо, помогло, компиляция пошла, однако теперь выпадает необработанное исключение: нарушение прав доступа. Почему-то в i вместо максимального 16 лежит 2715648...
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
09.01.2015, 12:45
Возможно,Вы хотели написать
C++
1
2
  for (int i=0; i<k; i=i+height)
        qsort(massiv+i, height, sizeof(POINT), &sravY);
Однако, это решит задачу сортировки по 2 параметру
только, если есть по 4 одинаковых значений первого параметра.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.01.2015, 13:49
Цитата Сообщение от tie_rs Посмотреть сообщение
однако
Подробно разбираться в твоей логике не стал, похоже, что сам назначаешь такое i. Но у меня другой вопрос. Зачем тебе делать 2 сортировки? Все можно отсортировать за один проход, одной сортировочной функцией.
0
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 6
09.01.2015, 14:15  [ТС]
Ну я уже плохо помню, как мне брат это дело объяснял, я тогда еще даже программирование не начал изучать, но то, что у него в С++ билдере все правильно сортировалось, это точно.
Цитата Сообщение от Байт Посмотреть сообщение
можно отсортировать за один проход, одной сортировочной функцией.
__________________
Не могли бы Вы, если вас не затруднит, конечно, вашу идею реализовать в виде кода или алгоритма?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.01.2015, 16:05
Лучший ответ Сообщение было отмечено tie_rs как решение

Решение

Цитата Сообщение от tie_rs Посмотреть сообщение
Не могли бы Вы,
C++
1
2
3
4
5
6
7
8
9
int srav(const void *t1, const void *t2)
{
    if (((POINT *)t1)->x-((POINT *)t2)->x)
      return ((POINT *)t1)->x-((POINT *)t2)->x;
    else
      return ((POINT *)t1)->y-((POINT *)t2)->y;
}
..... 
qsort(massiv, k, sizeof(POINT), &srav);
1
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 6
09.01.2015, 17:48  [ТС]
Огромное спасибо за помощь, все заработало!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2015, 17:48
Помогаю со студенческими работами здесь

Выражение должно иметь тип класса, как исправить?
Ошибку выдает в строчке кода bool kill (Rplane x, Uplane y){ if(x.set &lt; y.set) return false; else return true; }

Работа с текстами/строки. Error: выражение должно иметь тип класса
Есть код #include &quot;stdio.h&quot; #include &quot;stdafx.h&quot; #include &quot;stdlib.h&quot; #include &lt;string.h&gt; #include &quot;iostream&quot; #include...

Найти причины ошибки "This - выражение должно иметь тип класса"
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class X { int *i; // Будущие объекты -...

Выражение должно иметь тип указателя
что тут не так IClientEntity *player= I::EntList-&gt;GetClientEntity(I::Engine-&gt;GetLocalPlayer()); player-&gt;GetEyeAngles()-&gt;y =...

Выражение должно иметь тип указателя
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; struct laiks { int h; int m; int s; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru