0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 6

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте! Около года назад прорешивали с братом возможные задания на экзамен (он учился на курс старше меня), а мне сейчас выпала решенная нами задачка про быструю сортировку массива точек, где одна точка считается больше другой, если она лежит правее, или, если координаты совпадают, выше.
Дело в том, что брат писал код и объяснял что к чему мне через скайп, все прекрасно работало и сортировалось, но он работал в С++ билдере, а мне нужно показывать работу в 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
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
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
13758 / 10953 / 6487
Регистрация: 18.12.2011
Сообщений: 29,209
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
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
09.01.2015, 13:49
Цитата Сообщение от tie_rs Посмотреть сообщение
однако
Подробно разбираться в твоей логике не стал, похоже, что сам назначаешь такое i. Но у меня другой вопрос. Зачем тебе делать 2 сортировки? Все можно отсортировать за один проход, одной сортировочной функцией.
0
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 6
09.01.2015, 14:15  [ТС]
Ну я уже плохо помню, как мне брат это дело объяснял, я тогда еще даже программирование не начал изучать, но то, что у него в С++ билдере все правильно сортировалось, это точно.
Цитата Сообщение от Байт Посмотреть сообщение
можно отсортировать за один проход, одной сортировочной функцией.
__________________
Не могли бы Вы, если вас не затруднит, конечно, вашу идею реализовать в виде кода или алгоритма?
0
Диссидент
Эксперт C
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Максимальная производительность C#: Введение в микрооптимизации
stackOverflow 20.04.2025
В мире разработки на C# многие привыкли полагаться на . NET Runtime, который "магическим образом" сам оптимизирует код. И часто это работает - современные JIT-компиляторы творят чудеса. Но когда речь. . .
MVC фреймворк в PHP
Jason-Webb 19.04.2025
Архитектурный паттерн Model-View-Controller (MVC) – это не просто модный термин из мира веб-разработки. Для PHP-программистов это фундаментальный подход к организации кода, который радикально меняет. . .
Dictionary Comprehensions в Python
py-thonny 19.04.2025
Python славится своей выразительностью и лаконичностью, что позволяет писать чистый и понятный код. Среди множества синтаксических конструкций языка особое место занимают словарные включения. . .
Шаблоны и протоколы для создания устойчивых микросервисов
ArchitectMsa 19.04.2025
Микросервисы — архитектурный подход, разбивающий сложные приложения на небольшие, независимые компоненты. Вместо монолитного гиганта, система превращается в созвездие небольших взаимодействующих. . .
Изменяемые и неизменяемые типы в Python
py-thonny 19.04.2025
Python славится своей гибкостью и интуитивной понятностью, а одна из главных его особенностей — это система типов данных. В этом языке все, включая числа, строки, функции и даже классы, является. . .
Интеграция Hangfire с RabbitMQ в проектах C#.NET
stackOverflow 18.04.2025
Разработка современных . NET-приложений часто требует выполнения задач "за кулисами". Это может быть отправка email-уведомлений, генерация отчётов, обработка загруженных файлов или синхронизация. . .
Построение эффективных запросов в микросервисной архитектуре: Стратегии и практики
ArchitectMsa 18.04.2025
Микросервисная архитектура принесла с собой много преимуществ — возможность независимого масштабирования сервисов, технологическую гибкость и четкое разграничение ответственности. Но как часто бывает. . .
Префабы в Unity: Использование, хранение, управление
GameUnited 18.04.2025
Префабы — один из краеугольных элементов разработки игр в Unity, представляющий собой шаблоны объектов, которые можно многократно использовать в различных сценах. Они позволяют создавать составные. . .
RabbitMQ как шина данных в интеграционных решениях на C# (с MassTransit)
stackOverflow 18.04.2025
Современный бизнес опирается на множество специализированных программных систем, каждая из которых заточена под решение конкретных задач. CRM управляет отношениями с клиентами, ERP контролирует. . .
Типы в TypeScript
run.dev 18.04.2025
TypeScript представляет собой мощное расширение JavaScript, которое добавляет статическую типизацию в этот динамический язык. В JavaScript, где переменная может свободно менять тип в процессе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru