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

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

09.01.2015, 11:21. Показов 3447. Ответов 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;...

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

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

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

7
Диссидент
Эксперт C
27709 / 17327 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
09.01.2015, 11:34 2
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  [ТС] 3
Спасибо, помогло, компиляция пошла, однако теперь выпадает необработанное исключение: нарушение прав доступа. Почему-то в i вместо максимального 16 лежит 2715648...
0
Модератор
Эксперт С++
13727 / 10923 / 6479
Регистрация: 18.12.2011
Сообщений: 29,155
09.01.2015, 12:45 4
Возможно,Вы хотели написать
C++
1
2
  for (int i=0; i<k; i=i+height)
        qsort(massiv+i, height, sizeof(POINT), &sravY);
Однако, это решит задачу сортировки по 2 параметру
только, если есть по 4 одинаковых значений первого параметра.
0
Диссидент
Эксперт C
27709 / 17327 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
09.01.2015, 13:49 5
Цитата Сообщение от tie_rs Посмотреть сообщение
однако
Подробно разбираться в твоей логике не стал, похоже, что сам назначаешь такое i. Но у меня другой вопрос. Зачем тебе делать 2 сортировки? Все можно отсортировать за один проход, одной сортировочной функцией.
0
0 / 0 / 0
Регистрация: 09.01.2015
Сообщений: 6
09.01.2015, 14:15  [ТС] 6
Ну я уже плохо помню, как мне брат это дело объяснял, я тогда еще даже программирование не начал изучать, но то, что у него в С++ билдере все правильно сортировалось, это точно.
Цитата Сообщение от Байт Посмотреть сообщение
можно отсортировать за один проход, одной сортировочной функцией.
__________________
Не могли бы Вы, если вас не затруднит, конечно, вашу идею реализовать в виде кода или алгоритма?
0
Диссидент
Эксперт C
27709 / 17327 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
09.01.2015, 16:05 7
Лучший ответ Сообщение было отмечено 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  [ТС] 8
Огромное спасибо за помощь, все заработало!
0
09.01.2015, 17:48
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2015, 17:48
Помогаю со студенческими работами здесь

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

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

Выражение должно иметь тип указателя
что тут не так IClientEntity *player=...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru