0 / 0 / 0
Регистрация: 02.10.2021
Сообщений: 6
1

Присвоение значений целой структуре

20.02.2024, 12:42. Показов 227. Ответов 4

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, как присвоить значения всей структуре переменных целиком.

Допустим, имею структуру однотипных переменных в кол-ве 10 шт.
Инициализирую структуру - без проблем,
Использую структуру - без проблем.

Но вот присвоить массив значений при соответствующем условии для структуры не получается, само собой компилятор ругается.

Вот пример кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct {int a, b, c;} Data; // Структура данных из переменных, всего их будет 10
 
void Send_Data (int local_data)
{
    // Программа отправки данных
}
 
int main(void)
{
    char x; // Условие присвоение данных структуре
 
    if (x == 1) Data = {11, 21, 31};    // Присвоение значений в 1-м случае
    if (x == 2) Data = {12, 22, 32};    // Присвоение значений в 2-м случае
    if (x == 3) Data = {13, 23, 33};    // Присвоение значений в 3-м случае
    // И так далее...
 
    // Далее отправка данных по отдельности:
    Send_Data (Data.a); // Отправка данных 1-й переменной
    Send_Data (Data.b); // Отправка данных 2-й переменной
    Send_Data (Data.c); // Отправка данных 3-й переменной
    // И так далее...
Пробовать модифицировать эти строки по всякому, бесполезно, компилятор ничё не принимает.

Само собой, я могу присвоить значения по отдельности каждым переменным в структуре, но тогда код будет нерациональным

Как нужно правильно? Есть какой другой способ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2024, 12:42
Ответы с готовыми решениями:

Присвоение значений элементам в структуре
#include <string.h> #include <iostream.h> using spacename std; struct mystruct { ...

Реализовать программно присвоение целой Python
Реализовать программно присвоение целой переменной d первой цифры из дробной части положительного...

Присвоение структуре имя
Вообщем как всегда запутался я на простых вещах :wall: Почему я не могу присвоить g.fullname...

Присвоение значения данным в структуре
Здравствуйте! Подскажите, пожалуйста, как присвоить значение переменной структуры. Например:...

Присвоение одной структуры другой структуре
#include <stdio.h> //#include <malloc.h> typedef struct hi { int i; int b; } Hi; ...

4
Эксперт .NET
10556 / 6483 / 1503
Регистрация: 25.05.2015
Сообщений: 19,644
Записей в блоге: 14
20.02.2024, 12:51 2
Не скажу, что правильно, но по другому :
https://onlinegdb.com/AUNciFhBZC

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
#include <stdlib.h>
#include <stdio.h>
 
struct Data { int a, b, c; };
 
 
int main()
{
    constexpr const Data d1 { .a = 11, .b = 21, .c = 31 }; 
    constexpr const Data d2 { .a = 12, .b = 22, .c = 32 }; 
    constexpr const Data d3 { .a = 13, .b = 23, .c = 33 }; 
    
    Data d;
    int x = 2;
    
    if (x == 1) {
        d = d1;
    }
    else if (x == 2) {
        d = d2;
    }
    else {
        d = d3;
    }
    
    printf("%d", d.a);
 
    return 0;
}
1
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,878
20.02.2024, 13:20 3
Просто используйте приведение типов:
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
typedef struct{
  int a, b;
}S;
 
int main(){
  S s = {1,2};
  printf("%i %i\n", s.a, s.b);
  s = (S){3,4};
  printf("%i %i\n", s.a, s.b);
}
1
0 / 0 / 0
Регистрация: 02.10.2021
Сообщений: 6
20.02.2024, 14:25  [ТС] 4
Rius, COKPOWEHEU,
Спасибо за помощь и наталкивание на идеи, немного доработав, получил такой код:
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
#define x 3
 
typedef struct {int a, b, c;} Data;
Data data = {0, 0, 0};
 
void Send_Data (int local_data)
{
    // Программа отправки данных
    
    printf("%d", local_data);
}
 
int main()
{
    if (x == 1) data = (Data) {11, 21, 31}; // Присвоение значений в 1-м случае
    if (x == 2) data = (Data) {12, 22, 32}; // Присвоение значений в 2-м случае
    if (x == 3) data = (Data) {13, 23, 33}; // Присвоение значений в 3-м случае
    // И так далее...
 
    // Далее отправка данных по отдельности:
    Send_Data (data.a); // Отправка данных 1-й переменной
    Send_Data (data.b); // Отправка данных 2-й переменной
    Send_Data (data.c); // Отправка данных 3-й переменной
    // И так далее...
}
В принципе то, что нужно.
Ну по крайней мере по эмулятору работает. Потом испытаю в деле, и отпишусь окончательно
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,519
20.02.2024, 22:47 5
Цитата Сообщение от Mr McLaren Посмотреть сообщение
Но вот присвоить массив значений при соответствующем условии для структуры не получается, само собой компилятор ругается.
а вот так

C
1
2
3
4
5
6
7
8
9
typedef struct {
int a; 
int b; 
int c;} Data;
Data data[3]={
 {1,2,3},
 {3,4,5},
 {6,7,8)
};
Добавлено через 4 часа 55 минут
Цитата Сообщение от Mr McLaren Посмотреть сообщение
if (x == 1) Data = {11, 21, 31};    // Присвоение значений в 1-м случае
    if (x == 2) Data = {12, 22, 32};    // Присвоение значений в 2-м случае
    if (x == 3) Data = {13, 23, 33};    // Присвоение значений в 3-м случае
извини не правильно прочитал первое сообщение, неправильно понял, поэтому ответил не то(не так)
ударило в голову массив структур
Цитата Сообщение от Mr McLaren Посмотреть сообщение
Пробовать модифицировать эти строки по всякому, бесполезно, компилятор ничё не принимает.
не понимает потому что уже он создал переменную Data, а конструктора копирования по типу C++ у Си нет.
так что или присваивай каждое поле
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (x == 1) 
{
Data.a =11;
Data.b=21;
Data.c=31;    // Присвоение значений в 1-м случае
 
}
    if (x == 2)
{
 Data.a =12;
Data.b = 22;
Data.c = 32;
}    // Присвоение значений в 2-м случае
    if (x == 3) 
{
Data.a =13,
Data.b = 23,
Data.c = 33;    // Присвоение значений в 3-м случае
}
или объявляй новую переменную
C
1
2
3
4
typedef struct {int a, b, c;} Data;
   if (x == 1) Data data={11, 21, 31}; // создание структуры в 1-м случае
    if (x == 2) Data data={12, 22, 32}; // создание структуры в 2-м случае
    if (x == 3) Data data={13, 23, 33}; // создание структуры в 3-м случае
можно и так(без создания типа typedef )
C
1
2
3
4
 struct  Data {int a, b, c;};
   if (x == 1)  struct Data data={11, 21, 31}; // создание структуры в 1-м случае
    if (x == 2) struct Data data={12, 22, 32}; // создание структуры в 2-м случае
    if (x == 3) struct Data data={13, 23, 33}; // создание структуры в 3-м случае
ну или как у тебя
Цитата Сообщение от Mr McLaren Посмотреть сообщение
C
1
2
3
if (x == 1) data = (Data) {11, 21, 31}; // Присвоение значений в 1-м случае
    if (x == 2) data = (Data) {12, 22, 32}; // Присвоение значений в 2-м случае
    if (x == 3) data = (Data) {13, 23, 33}; // Присвоение значений в 3-м случае
0
20.02.2024, 22:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2024, 22:47
Помогаю со студенческими работами здесь

Присвоение строки массиву char[] в структуре
Здравствуйте. Объявлена структура: struct worker { char name ; float salary; int...

Присвоение наследственной структуре значения наследуемой структуры
У меня есть 2 структуры А и Б, которая наследует значения А. Подскажите, пожалуйста, в с++ как...

Присвоение структуре другой структуры из массива структур
Привет всем вот всё ковыряю задание с клубами. Из-за незнания нюансов и отсутствие практики не могу...

Присвоение элементам массива значений, зависящие от значений элементов другого массива
Вот мой код, который должен делать свою работу: #include &lt;iostream&gt; #include &lt;math.h&gt;...

Присвоение значений
Есть код Delphi: unit Unit2; interface uses Windows, Messages, SysUtils, Variants,...

Присвоение значений
Нужно дать пользователю ввести количество, допустим, пассажиров, и каждому пассажиру ввести вес в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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