Понятия не имею что ему не нравиться, но указывает на эту ошибку в 5-ой строке.
void poz_perv_i_posl_par_0(int* x, int n)
{
int i;
for (i = 0; i < n; i++)
if (x[i] = 0 && x[i+1] = 0)
{
printf("Порядковый номер первого элемента первой парыn i=% ", i);
break;
}
for (i = n; i = 0; i--)
if (x[i] = 0 && x[i + 1] = 0)
{
printf("Порядковый номер первого элемента последней парыn i=% ", i);
break;
}
}
Mikhailo
12.3k2 золотых знака17 серебряных знаков41 бронзовый знак
задан 6 дек 2020 в 10:34
1
Приоритеты операторов приводят к тому, что ваше
if (x[i] = 0 && x[i+1] = 0)
рассматривается как
if (x[i] = (0 && x[i+1]) = 0)
т.е. вы, получается, хотите присвоить значение 0 выражению
0 && x[i+1]
Т.е. сделать что-то вроде
5+3 = 2
присвоить 2 сумме 5+3
А вообще, просто типичная ошибка — перепутать оператор присваивания =
и сравнения на равенство ==
. Явно хотели написать
if (x[i] == 0 && x[i+1] == 0)
ответ дан 6 дек 2020 в 10:40
HarryHarry
215k15 золотых знаков117 серебряных знаков228 бронзовых знаков
kukhtikov 2 / 2 / 0 Регистрация: 16.12.2012 Сообщений: 97 |
||||
1 |
||||
Ошибка: Выражение должно быть допустимым для изменения левосторонним значением09.03.2013, 19:19. Показов 141147. Ответов 9 Метки нет (Все метки)
Условие задачи: Кликните здесь для просмотра всего текста
Создать класс «целое число». В строке if (zn % 2 = 0) компилятор указывает на zn и пишет: Выражение должно быть допустимым для изменения левосторонним значением.
0 |
Черный ворон 137 / 131 / 57 Регистрация: 31.01.2012 Сообщений: 435 |
||||
09.03.2013, 19:21 |
2 |
|||
4 |
2 / 2 / 0 Регистрация: 16.12.2012 Сообщений: 97 |
|
09.03.2013, 19:48 [ТС] |
3 |
Черный ворон, спасибо) Тупая ошибка..
0 |
Kruti 0 / 0 / 0 Регистрация: 30.12.2019 Сообщений: 1 |
||||
30.12.2019, 12:32 |
4 |
|||
Добрый день у мене такая проблема: C:UsersAdminsourcereposTreeC++TreeC++Main.cpp вот код
подскажите почему оно указывает на 36 строчку «(*t[2])->key = a[1];» ?
0 |
zayats80888 5898 / 3300 / 1353 Регистрация: 07.02.2019 Сообщений: 8,329 |
||||
30.12.2019, 12:35 |
5 |
|||
(*t[2])->key = a[1];
0 |
1642 / 1091 / 487 Регистрация: 17.07.2012 Сообщений: 5,345 |
|
30.12.2019, 12:50 |
6 |
Kruti,
0 |
Вездепух 10982 / 5965 / 1630 Регистрация: 18.10.2014 Сообщений: 14,962 |
|
30.12.2019, 12:53 |
7 |
подскажите почему оно указывает на 36 строчку «(*t[2])->key = a[1];» ? Потому что
0 |
0 / 0 / 0 Регистрация: 01.12.2020 Сообщений: 1 |
|
01.12.2020, 22:39 |
8 |
У меня такая же проблема Вот код: #include <iostream> cout << endl; for (int i = 0, q = 0; i < 6; i++) for (int i = 0; i < 6; i++) return 0; Почему появилась ошибка в этом месте a[i] = -10 + rand() % 21?
0 |
41 / 26 / 17 Регистрация: 11.11.2019 Сообщений: 92 |
|
01.12.2020, 22:58 |
9 |
Почему появилась ошибка в этом месте a[i] = -10 + rand() % 21? Взгляните на массив a, какой он у вас при объявлении, а затем на массив a в цикле. Вы наверное хотели использовать массив first_massiv, но не заметили.
0 |
Вездепух 10982 / 5965 / 1630 Регистрация: 18.10.2014 Сообщений: 14,962 |
|
01.12.2020, 22:58 |
10 |
Почему появилась ошибка в этом месте a[i] = -10 + rand() % 21? Почему код не оформлен тегами? Что такое
0 |
Выбивает ошибку: Выражение должно быть допустимым для изменения левосторонним значением
в buffer_table.company = table[i].company;
Вот весь код:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <locale.h>
#include <Windows.h>
struct OfficePackagesTable
{
char name[11], company[11];
int quality, score;
};
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale(LC_ALL, "Russian");
short min; // Индекс минимального элемента
const short rows = 4;
OfficePackagesTable table[rows]; // Создаём объект на основе структуры OfficePackagesTable, даём ему название
OfficePackagesTable buffer_table; // Буферный объект для дальнейшей сортировки
// Ввод данных
for (int i = 0; i < rows-1; i++)
{
printf("%d. Введите -> Название | Компания | Количество | Цена n", i + 1);
scanf("%s", table[i].name);
if (!strcmp(table[i].name, "***")) break;
scanf("%s", table[i].company);
scanf("%d", &table[i].quality);
scanf("%d", &table[i].score);
}
printf("|-----------------------------------------------------------------| n");
printf("| Офисные пакеты | n");
printf("|-----------------------------------------------------------------| n");
printf("| Название | Компания | Количество | Цена | n");
printf("|----------------|----------------|------------------|------------| n");
// Выводим фактические данные
for (int i = 0; i < rows-1; i++) {
printf("| %10s | %10s | %10d |%10d | n", table[i].name, table[i].company, table[i].quality, table[i].score);
}
printf("|-----------------------------------------------------------------| n");
// Сортировка массива
for (int i = 0; i < rows - 2; i++) {
// Указываем, минимальный элемент является первым
min = i;
for (int j = i + 1; j < rows - 1; j++) {
// Если текущий элемент меньше минимального, он становится минимальным
if (strcmp(table[min].name, table[j].name) > 0) min = j; // strcmp сравнивает строки
// Перестановка первого и минимального элемента
if (min > i)
{
strcpy(buffer_table.name, table[i].name);
buffer_table.company = table[i].company;
}
}
}
}
Попробовал различные варианты, предлагаемые в интернете — никак не идёт.
Здравствуйте.
Нужно создать программу, в которой будет создаваться односвязный линейный список студентов. И нужно сделать возможность изменения имени заданного студента.
При компиляции, выходят ошибки:
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) E0137 выражение должно быть допустимым для изменения левосторонним значением Student Work C:UsersJohnsourcereposStudent WorkStudent Workmain.c 87
Ошибка (активно) E1072 объявлению не может быть назначена метка Student Work C:UsersJohnsourcereposStudent WorkStudent Workmain.c 111
Ошибка C2106 =: левый операнд должен быть левосторонним значением Student Work C:UsersJohnsourcereposStudent WorkStudent Workmain.c 87
Как можно исправить эти ошибки?
И дополнительно, посоветуйте, как я могу улучшить мой код? Может, что-то можно написать проще, лучше или эффективнее?
Код main.c:
#include <stdio.h>
#include <string.h>
#include <windows.h>
#define MAX 3
#define KOL 15
struct Student
{
int id;
char Name[KOL];
int Age;
float AverageRaiting;
struct Student* nextStudent;
};
void InitStudentList(struct Student** student)
{
*student = (struct Student*)
malloc(sizeof(struct Student));
(*student)->id = 1;
printf("Введіть ім’я 1-го студента: ");
scanf("%s", (*student)->Name);
printf("Введіть вік 1-го студента: ");
scanf("%d", &(*student)->Age);
printf("Введіть середній рейтинг 1-го студента: ");
scanf("%f", &(*student)->AverageRaiting);
printf("n");
(*student)->nextStudent = NULL;
struct Student* endStudent = *student;
for (int i = 2; i <= MAX; i++)
{
endStudent->nextStudent =
(struct Student*) malloc(sizeof(struct Student));
endStudent = endStudent->nextStudent;
endStudent->id = i;
printf("Введіть ім’я %d-го студента: ", i);
scanf("%s", endStudent->Name);
printf("Введіть вік %d-го студента: ", i);
scanf("%d", &endStudent->Age);
printf("Введіть середній рейтинг %d-го студента: ", i);
scanf("%f", &endStudent->AverageRaiting);
printf("n");
endStudent->nextStudent = NULL;
}
}
void PrintList(struct Student* student)
{
struct Student* printStudent = student;
printf("==========================n");
printf("Номер Ім’я Вік Рейтинг n");
printf("==========================n");
while (printStudent)
{
printf("%d", printStudent->id);
printf("%-15s", printStudent->Name);
printf("%4d", printStudent->Age);
printf("%8.2f", printStudent->AverageRaiting);
printf("n");
printStudent = printStudent->nextStudent;
}
printf("==========================n");
}
void FreeList(struct Student** student)
{
if (*student == NULL)
return;
struct Student* tmp = *student;
struct Student* curr_stud;
while (tmp)
{
curr_stud = tmp;
tmp = tmp->nextStudent;
free(curr_stud);
}
*student = NULL;
}
void ChangeStudentName(int n, char name[KOL], struct Student* student)
{
struct Student* changingStudent = student;
while (changingStudent)
{
if (changingStudent->id == n)
{
changingStudent->Name = name;
printf("зміни записані");
break;
}
}
}
int main(void)
{
int command;
struct Student* BaseStudent = NULL;
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
InitStudentList(&BaseStudent);
for (;;)
{
printf("Введіть команду:n 1 - Виведення списку студентів,n 2 - Змінити прізвище зазначеного студента,n 3 - вихідn");
scanf("%d", &command);
switch (command)
{
case 1:
PrintList(BaseStudent);
break;
case 2:
int n;
char name[KOL];
printf("Введіть номер студента: ");
scanf("%d", &n);
printf("Введіть нове ім'я студента: ");
scanf("%s", &name);
ChangeStudentName(n, name, BaseStudent);
break;
case 3:
FreeList(&BaseStudent);
return 0;
break;
default:
printf("Помилка вводу...");
FreeList(&BaseStudent);
return 0;
break;
}
}
return 0;
}
Заранее благодарен!
Im writing a small change to a code in visual studio and Im getting this error:
Error (active) E0137 expression must be a modifiable L-value
C:Users...events.cpp 75
This is the piece of code I added: (In bold is the line I’m getting the error):
void EV_HLDM_MuzzleFlash(vec3_t pos, float amount)
{
dlight_t *dl = gEngfuncs.pEfxAPI->CL_AllocDlight(0);
dl->origin = pos; // ERROR HERE
dl->color.r = 255; // red
dl->color.g = 255; // green
dl->color.b = 128; // blue
dl->radius = amount * 100;
dl->die = gEngfuncs.GetClientTime() + 0.01;
}
And here is the definition of dlight
:
typedef float vec3_t[3];
typedef struct dlight_s
{
vec3_t origin;
float radius;
color24 color;
float die; // stop lighting after this time
float decay; // drop this each second
float minlight; // don't add when contributing less
int key;
qboolean dark; // subtracts light instead of adding
} dlight_t;
I don’t really understand what´s wrong. I’m defining origin
as a vector
for the struct dlight
and then I’m giving a vector
in EV_HLDM_MuzzleFlash
. I don’t understand what the problem is. Please help.
I tried changing the first line in dlight_t
to Vector
and the previous error dissapear, but I got new errors:
Error C3646 'origin': unknown override specifier
Error C4430 Missing type specifier; int is assumed Note: C++ does not support default-int
I get 46 times those 2 errors when changing from vec3_t
to Vector
.
What am I missing?