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

Ошибка: Выражение должно быть допустимым для изменения левосторонним значением

09.03.2013, 19:19. Показов 154612. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
class ts_ch
{
    int zn;
public:
    ts_ch()
    {
        zn=0;
    }
    ts_ch(int a)
    {
        zn=a;
    }
    int proverka(int a)
    {
        zn=a;
        if (zn % 2 = 0)
        {
            std::cout << "Число четное";
            return 1;
        }
        else
        {
            std::cout << "Число не четное";
            return 0;
        }
    }
    void print()
    {
        std::cout << "Значение числа: " << zn << ". Проверка: " << proverka(zn);
    }
};
Условие задачи:
Кликните здесь для просмотра всего текста

Создать класс «целое число».
Элементы класса:
поле задает значение целого числа (статус доступа private);
конструктор для инициализации поля;
метод, возвращающий 1, если число четное, и 0, в противном случае.
Создать 1 объект данного класса, проверить четное ли число, вывести соответствующее сообщение.


В строке if (zn % 2 = 0) компилятор указывает на zn и пишет: Выражение должно быть допустимым для изменения левосторонним значением.
В чем у меня ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2013, 19:19
Ответы с готовыми решениями:

Ошибка: выражение должно быть допустимым для изменения левосторонним значением
Делаю односвязный список. #include &quot;stdafx.h&quot; #include &quot;locale.h&quot; #include &quot;math.h&quot;...

Ошибка: Выражение должно быть допустимым для изменения левосторонним значением
Всем привет. У меня есть очередь, состоящую из объектов класса classA, которую нужно заполнить из...

Ошибка: выражение должно быть допустимым для изменения левосторонним значением. Что это?
Добрый день! Строка в коде const int mx=4; if(top==(mx-1))//mx это размер массива ... Но...

Выражение должно быть допустимым для изменения левосторонним значением
День добрый просветите пожалуйста что ему не нравится ? #include &lt;iostream&gt; #include &lt;cstdlib&gt;...

11
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
09.03.2013, 19:21 2
C++
1
if (zn % 2 == 0)
5
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
09.03.2013, 19:48  [ТС] 3
Черный ворон, спасибо) Тупая ошибка..
0
0 / 0 / 0
Регистрация: 30.12.2019
Сообщений: 1
30.12.2019, 12:32 4
Добрый день у мене такая проблема:
E0137 выражение должно быть допустимым для изменения левосторонним значением TreeC++



C:\Users\Admin\source\repos\TreeC++\TreeC++\Main.cpp


вот код

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
#include <iostream>
#include <vector>
using namespace std;
 
struct node
{
int key[1];
node* l, * r;
int day, month, year;
};
node p;
struct Porushena
{
int day, month, year;
};
Porushena pr;
void Enter()
{
cout << "Enter day:";
cin >> pr.day;
cout << "Enter month:";
cin >> pr.month;
cout << "Enter year:";
cin >> pr.year;
p.day = pr.day;
 
p.month = pr.month;
p.year = pr.year;
}
void Add(int a[4], node** t[5])
{
if ((*t) == NULL)
{
(*t[1]) = new node;
(*t[2])->l = (*t[2])->r;
(*t[2])->key = a[1];
(*t[3])->l = (*t[3])->r;
(*t[3])->day = a[2];
(*t[4])->l = (*t[4])->r;
(*t[4])->month = a[3];
(*t[5])->l = (*t[5])->r;
(*t[5])->day = a[4];
}
}
int main()
{
Enter();
system("pause");
return 0;
}
подскажите почему оно указывает на 36 строчку "(*t[2])->key = a[1];" ?
0
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
30.12.2019, 12:35 5
Цитата Сообщение от Kruti Посмотреть сообщение
(*t[2])->key = a[1];
C++
1
(*t[2])->key[0] = a[1];
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
30.12.2019, 12:50 6
Kruti,
1) Официальные языки форума русский и английский. По правилам форума общаться можно только на этих языках.
2) Не надо вручную перед каждой строкой писать ее номер, достаточно выделить код, нажать на кнопку "C++" в редакторе сообщений и нумерация сама появится. + будет подсветка синтаксиса. Такой код читать намного проще. Не надо кидать код без тегов(когда нажимаете на кнопку, код автоматически обернется в теги [CPP]ваш код[/CPP]).
3) Для решения своей проблемы лучше создавать новую тему, а не писать в теме 6-летней давности.
Я понимаю, что на форуме вы первый день, но в следующий раз рекомендую действовать по правилам.
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
30.12.2019, 12:53 7
Цитата Сообщение от Kruti Посмотреть сообщение
подскажите почему оно указывает на 36 строчку "(*t[2])->key = a[1];" ?
Потому что (*t[2])->key - это массив. Массивы не разрешается присваивать.
0
0 / 0 / 0
Регистрация: 01.12.2020
Сообщений: 1
01.12.2020, 22:39 8
У меня такая же проблема

Вот код:

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
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
    srand(time(NULL));
    setlocale(LC_ALL, "RUSSIAN");
    int n = 0;
    int first_massiv[21];
    int a[6][6];
    cout << " 1) Рандомные числа\n 2) Ручной ввод с клавиатуры \n что хочешь: ";
    cin >> n; // ЗДЕСЬ ПРОВЕРКА
    switch (n)
    {
    case 1:
        for (int i = 0; i < 21; i++)
        {
             a[i] = -10 + rand() % 21;
        }
        break;
    case 2:
        for (int i = 0; i < 11 && i > -11; i++)
        {
            cout << "Вводи число ";
            cin >> n; // ЗДЕСЬ ПРОВЕРКА
            first_massiv[i] = n;
        }
        break;
    }
 
    cout << endl;
    for (int i = 0; i < 21; i++)
    {
        cout << first_massiv[i] << " ";
    }
    cout << endl;
    cout << endl;
 
    for (int i = 0, q = 0; i < 6; i++)
    {
        for (int j = 0; j < 6; j++)
        {
            if (i == j || i > j)
            {
                a[i][j] = first_massiv[q];
                q++;
            }
            else a[i][j] = 0;
        }
    }
 
    for (int i = 0; i < 6; i++)
    {
        for (int j = 0; j < 6; j++)
        {
            if (a[i][j] < 10) cout << a[i][j] << " ";
            else cout << a[i][j] << " ";
        }
        cout << endl;
    }
 
    return 0;
}
Почему появилась ошибка в этом месте a[i] = -10 + rand() % 21?
0
41 / 26 / 17
Регистрация: 11.11.2019
Сообщений: 92
01.12.2020, 22:58 9
Цитата Сообщение от Xeronchik Посмотреть сообщение
Почему появилась ошибка в этом месте a[i] = -10 + rand() % 21?
Взгляните на массив a, какой он у вас при объявлении, а затем на массив a в цикле. Вы наверное хотели использовать массив first_massiv, но не заметили.
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
01.12.2020, 22:58 10
Цитата Сообщение от Xeronchik Посмотреть сообщение
Почему появилась ошибка в этом месте a[i] = -10 + rand() % 21?
Почему код не оформлен тегами?

Что такое a[i] и почему вы пытаетесь что-то присваивать в a[i]?
0
0 / 0 / 0
Регистрация: 19.03.2024
Сообщений: 1
19.03.2024, 16:34 11
У меня вроде тоже схожая ошибка в коде

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
#include <stdio.h> 
#include <string.h> 
#include <locale.h> 
 
int main() {
    setlocale(LC_ALL, "rus");
    char str[100];
 
    printf("Введите символьную строку: ");
    fgets(str, sizeof(str), stdin);
 
    int count = 0;
    int word = 0;
    int minWordLength = strlen(str);
    int currentWordLength = 0;
    char minWord[100];
 
    while (*str) {
        if (*str == ' ' && *str == '\t' && *str == '\n') {
            if (word) {
                count++;
                word = 0;
                if (currentWordLength < minWordLength) {
                    minWordLength = currentWordLength;
                    strncpy_s(minWord, str - currentWordLength, currentWordLength);
                    minWord[currentWordLength] = '\0';
                }
                currentWordLength = 0;
            }
        }
        else {
            word = 1;
            currentWordLength++;
        }
        str++;
    }
    if (word) {
        count++;
        if (currentWordLength < minWordLength) {
            minWordLength = currentWordLength;
            strncpy_s(minWord, str - currentWordLength, currentWordLength);
            minWord[currentWordLength] = '\0';
        }
    }
    printf("Количество слов: %d\n", count);
    printf("Наименьшее слово: %s\n", minWord);
 
    return 0;
}
На 35 строчке выдает ошибку "выражения должно быть допустимым для изменения левосторонним значением".
Кто понимает ошибку, помогите пожалуйста
0
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
19.03.2024, 16:58 12
Цитата Сообщение от supercuts Посмотреть сообщение
На 35 строчке выдает ошибку "выражения должно быть допустимым для изменения левосторонним значением".
Кто понимает ошибку, помогите пожалуйста
Но str - это массив. Вы делаете ++ на массив. Что это должно значить?
0
19.03.2024, 16:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2024, 16:58
Помогаю со студенческими работами здесь

Выражение должно быть допустимым для изменения левосторонним значением
Выдает ошибку на P = s; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;string&gt; using...

Выражение должно быть допустимым для изменения левосторонним значением
Вот код: a ^ 2 = a*a; a ^ 4 = a^2 * a^2; a ^ 8 = a^4 * a^4; a ^ 16 = a^8 * a^8; Ошибки...

Выражение должно быть допустимым для изменения левосторонним значением
struct ITEM { struct { char N; char A; char S; } NAS; char vers; }; struct LIST {

Выражение должно быть допустимым для изменения левосторонним значением
Здравствуйте! Подскажите, пожалуйста, в чем заключается ошибка и как ее исправить &quot;Выражение...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru