Форум программистов, компьютерный форум CyberForum.ru

Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
wazler
2 / 2 / 0
Регистрация: 04.12.2011
Сообщений: 119
04.10.2013, 02:08     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением #1
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
#include <iostream>
#include <locale.h>
 
using namespace std;
 
struct PList
{
    int info;
    PList *prev, *next;
};
 
void Create (PList *&head, PList *&tail)
{
    int x,i,n;
    PList *p;
    p = new PList;
    cin >> x;
    p->info = x;
    head = p;
    head->prev = NULL;
    tail = head;
    cout << "Сколько чисел будите вводить? ";
    cin >> n;
    for (i = 1, i<=n; i++;);
    {
        PList *p;
        cin >> x;
        p->info = x;
        head->next = p;
        p->prev =p;
        head = p;
    }
    head->next = NULL;
}
 
void Progression (PList *tail)
{
    int min,k;
    k = 0;
    min = tail->info;
    while (tail!=NULL)
    {
        if (min <= tail->info)
        {
            cout << (k=k+1);
        }
        min = tail->info;
        tail = tail ->next;
        Progression = k;
    }
}
 
void main()
{
    setlocale(LC_CTYPE, "Russian");
    PList *head,*tail;
    Create (head, tail);
    cout << "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-" << endl << "Длина неубывающей подпоследовательности равна : ";
    Progression (tail);
    cout << "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-" << endl;
}
Вот ошибки на скрине, объясните пожалуйста, как исправить.
Миниатюры
Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 02:08     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением
Посмотрите здесь:

C++ error C2106: =: левый операнд должен быть левосторонним значением
Ошибка: Выражение должно быть допустимым для изменения левосторонним значением C++
Ошибка: левый операнд должен быть левосторонним значением C++
выражение должно быть допустимым для изменения левосторонним значением C++
Выражение должно быть допустимым для изменения левосторонним значением C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
04.10.2013, 07:19     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением #2
Цитата Сообщение от wazler Посмотреть сообщение
Progression = k;
???
PetyaVasechkin
117 / 117 / 1
Регистрация: 27.09.2013
Сообщений: 701
04.10.2013, 07:36     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением #3
Есть такой тип lvalue, например переменная является lvalue типом. Другими словами, в неё можно что то записать.
А такая ошибка может возникать, если попытаться записать туда, куда это в принципе не возможно. например выражение:
1 = 100; 1 - не является lvalue, так как 1 - константа. (в неё низя сохранять).

Просто пример смысла.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
04.10.2013, 08:14     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением #4
wazler, для возврата значения из функции используйте
C++
1
return значение;
А у Вас какой-то pascal-style.
wazler
2 / 2 / 0
Регистрация: 04.12.2011
Сообщений: 119
04.10.2013, 20:13  [ТС]     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением #5
Я как раз и перевожу из Pascal в С++, от этого так все похоже на стайл паскаля

Добавлено через 1 час 4 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
wazler, для возврата значения из функции используйте
C++
1
return значение;
А у Вас какой-то pascal-style.
Применил, что вы сказали, еще поменял условие, вот условие на паскале
Pascal
1
if min <= tail^.info then k:=k+1;
то что на с++
C++
1
 if (min <= tail->info) k=k+1;
правильно? А то перестал работать вывод...программа запускается.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
04.10.2013, 21:19     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением #6
wazler, похоже на правду. Вместо k=k+1; можно и лучше писать k++;
wazler
2 / 2 / 0
Регистрация: 04.12.2011
Сообщений: 119
06.10.2013, 22:52  [ТС]     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением #7
Цитата Сообщение от Tulosba Посмотреть сообщение
wazler, похоже на правду. Вместо k=k+1; можно и лучше писать k++;
сделал все как Вы сказали, программа продолжает работать но не выводит.
Вот код который на данном этапе:
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
#include <iostream>
#include <locale.h>
 
using namespace std;
 
struct PList
{
    int info;
    PList *prev, *next;
};
 
void Create (PList *&head, PList *&tail)
{
    int x,i;
    PList *p;
    p = new PList;
    cin >> x;
    p->info = x;
    head = p;
    head->prev = NULL;
    tail = head;
    for (i = 1; i<=4; i++)
    {
        p = new PList;
        cin >> x;
        p->info = x;
        head->next = p;
        p->prev = head;
        head = p;
    }
    head->next = NULL;
}
 
void Progression (PList *tail)
{
    int min,k;
    k = 0;
    min = tail->info;
    while (tail!=NULL)
    {
        if (min <= tail->info) k++;
        min = tail->info;
        tail = tail ->next;
        return ;
    }
}
 
void main()
{
    setlocale(LC_CTYPE, "Russian");
    PList *head,*tail;
    Create (head, tail);
    cout << "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-" << endl << "Длина неубывающей подпоследовательности равна : ";
    Progression (tail);
    cout << endl << "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-" << endl;
}
Вот скрин должно вывести 4, так как на ней обрывается возрастание
Миниатюры
Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением  
PetyaVasechkin
117 / 117 / 1
Регистрация: 27.09.2013
Сообщений: 701
07.10.2013, 00:31     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением #8
Цитата Сообщение от wazler Посмотреть сообщение
похоже на правду. Вместо k=k+1; можно и лучше писать k++;
Лучше писать ++k
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2013, 10:37     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением
Еще ссылки по теме:

Выражение должно быть допустимым для изменения левосторонним значением C++
C++ Левый операнд должен быть левосторонним значением
C++ Левый операнд должен быть левосторонним значением

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.10.2013, 10:37     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением #9
Цитата Сообщение от PetyaVasechkin Посмотреть сообщение
Лучше писать ++k
В данном случае не принципиально.

Достоверность не проверял:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int Progression (PList *tail)
{
    int k = 0;
    int min = tail->info;
    while (tail!=NULL)
    {
        if (min <= tail->info) k++;
        min = tail->info;
        tail = tail ->next;
        return min;
    }
}
C++
1
cout << Progression (tail) << endl;
Yandex
Объявления
07.10.2013, 10:37     Программа выдает 3 ошибки. Одна из них: IntelliSense: выражение должно быть допустимым для изменения левосторонним значением
Ответ Создать тему
Опции темы

Текущее время: 20:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru