@marlaaa

Как исправить выведенные ошибки C2109 и C2676?

Gosvo" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Для индекса требуется массив или указатель
Все ошибки в конце кода в строчках цикла
#include <iostream>
using namespace std;
enum stran {
    Belarus, Brasiliya, Iran
};
union no {
    int people;
    int s;
};
struct Gosvo
{
    no a;
    char name:30;
    char sity;
    stran b;
};

int main()
{
    setlocale(LC_ALL, "Russian");
    Gosvo f;
    f.a.people = 9;
    f.name = Belarus;
    f.a.s = 2;
    Gosvo k;
    k.a.people=213;
    k.name = Brasiliya;
    k.a.s=8;
    Gosvo l;
    l.a.people = 83;
    l.name = Iran;
    
    l.a.s = 16;
    Gosvo gosvos[3];
    gosvos[0] = f;
    gosvos[1] = k;
    gosvos[2] = l;
    int n;
    cout << "Введите количество структур в массиве:";
    cin >> n;

    for (int i = 0; i <= n; i++) {
        for (int j = 0; j < n - 1; j++)
        {
        if (gosvos[j] > gosvos[j + 1])
        {
            int b = gosvos->name[j]; // создали дополнительную переменную
            gosvos->name[j] = gosvos->name[j + 1]; // меняем местами
            gosvos->name[j + 1] = b; // значения элементов
        }
    }
        cout << gosvos->name[i] << " "; // выводим элементы массива
}
    return 0;
}
  • Вопрос задан
  • 169 просмотров
Решения вопроса 1
@Akela_wolf
Extreme Programmer
У вас gosvos имеет тип Gosvo[], а вы пытаетесь использовать его как тип Gosvo* (разыменовывать указатель)
gosvos[j].name - по идее должно быть так. И сравнение gosvos[j] > gosvos[j+1] тоже не должно работать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы