Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C (Си) Вывести в том же порядке все различные элементы заданного набора Всем здравствуйте. Не могу решить задачку, трудность в том, что я не могу по условию использовать массивы, не понимаю, как можно проверить числа на различие в наборе, помогите пожалуйста. Дано целое число N и набор из N целых чисел, упорядоченный по возрастанию. Данный набор может содержать одинаковые элементы. Вывести в том же порядке все различные элементы данного набора. Набор... https://www.cyberforum.ru/ c/ thread2563282.html C (Си) Массивы и указатели: найти среднее арифметическое всех четных и всех нечетных элементов в массиве
Написать программу, которая находит среднее арифметическое всех четных и всех нечетных элементов в массиве размером N. Размер массива вводится пользователем с клавиатуры. Для заполнения массива использовать функцию rand. Программа должна вывести на экран полученный массив и найденные значения. Пример: Исходный массив: -7 2 3 8 6 6 75 38 3 2 Среднее арифметическое четных элементов: 10.3...
C (Си) Вывести цифрами указанную фигуру https://www.cyberforum.ru/ c/ thread2561947.html
Вывести цифрами указанную фигуру используя вложенный цикл:
C (Си) Что выведет программа на языке С ? https://www.cyberforum.ru/ c/ thread2556521.html
П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. Перепечатайте
C (Си) Список удалить определённый символ списка
как удалить вводимое число из списка например ввожу- 5 1 2 3 4 5 удалить символо под номером 3 вывод 1 2 4 5 #include <stdio.h> #include <stdlib.h>
C (Си) Нужно описать, что происходит в теле цикла нескольких кодов https://www.cyberforum.ru/ c/ thread2555875.html
int fun20(int n) { int A; int i, k, j; for (i = 1, k = 0; i<z; i++) if (A>A)k = i; for (j = k; j<n - 1; j++) A = A; z--; return z; }
C (Си) Не знаю как надо написать прогу Для двух чисел, представленных в виде своих цифр и символов A…F определить системы счисления каждого, в которых они будут равны, например 134 и 30 - пятиричная и двенадцатиричная. Модификация сортировки Шелла. Пузырьковая сортировка с шагом M, т.е. просмотр пар 0--M,1--M+1, 2—M+2 и т.д. до тех пор, пока есть перестановки при однократном просмотре, затем уменьшение шага в 2 раза. Заранее... https://www.cyberforum.ru/ c/ thread2555578.html Перемещение min в матрице C (Си)
Дана квадратная матрица NxN, в которой требуется найти минимальное по модулю число (будет находится в строке i, столбце j, 0 <= i,j < N). Минимальное по модулю число только одно в матрице. Далее необходимо поменять столбец j со столбцом N-1, а затем строку i со строкой N-1: при этом найденное число окажется в нижнем правом положении. Вывести полученную матрицу. Порядок ввода данных...
C (Си) Надо написать прогу! Если первый аргумент командной строки-опция-%d,то распечатать введенное далее вещественное число без точки, указав в скобках число цифр после точки, а если число целое, то число не изменять. Если указана опция-%f, распечатать введенное далее целое число добавив ".0", вещественное без изменения. https://www.cyberforum.ru/ c/ thread2554360.html C (Си) Пишет ошибку: "segmentation fault core dumped", где допустил ошибку? #include <stdio.h> #include <stdlib.h> void show_menu() { puts("1.Enter array size"); puts("2.Enter array"); puts("3.Array formation and output"); } https://www.cyberforum.ru/ c/ thread2554356.html
C (Си) Символьные массивы
Прошу вас помочь: Требуется написать программу, которая во вводимом с клавиатуры тексте выберет слова, количество букв «м» в которых будет максимально, и выведет их на экран.
C (Си) Нужен репетитор по С (Си) Доброго дня всем! Очень нужен репетитор по языку С (Си), обучение по скайпу или в любой подобной программе. Если вы умеете хорошо объяснять и знаете язык С на должном уровне, напишите пожалуйста! Спасибо Добавлено через 48 минут нужно помочь разобраться в темах: Функции Массивы и строки Указатели и структуры Динамические массивы, аллокация памяти Сложность алгоритма https://www.cyberforum.ru/ c/ thread2554260.html
0 / 0 / 0
Регистрация: 29.12.2019
Сообщений: 4
29.12.2019, 16:24  [ТС] 0

Доступ к полю структуры - C (Си) - Ответ 14137283

29.12.2019, 16:24. Показов 1994. Ответов 6
Метки (Все метки)

Ответ

Всё верно, раньше так и делал как вы предлагаете, в качестве аргумента передавал указатель на структуру, а внутри функции её разбирал. Всё работало.

Теперь для универсальности модифицирую код, и решил передавать в функцию непосредственно указатель на массив, который входит в состав структуры.

Проект содержит:

1). Глобальный модуль с определениями типов данных include.h
C++
1
2
3
4
5
6
7
//Структура данных базовый конечный автомат
volatile struct FSM_BASE                   
{
               u8 *message;  //Указатель на массив сообщений FSM
             void *data;     //Указатель на данные FSM
    struct TIMERS *tim;      //Указатель на массив таймеров FSM
};
2). Модули представления и реализации для каждого объекта (конечного автомата)
например uart_fsm.h, uart_fsm.c с указанием наличия внешней переменной (указателя)
C++
1
extern struct FSM_BASE *uart_fsm;
3). Модуль сообщений (для обмена данными между автоматами)
message.h, mesagge.c, с функциями которые могут передавать и читать сообщения от (между) автоматов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void send_Message(u8 *msg, u8 num) //Функция отправки сообщения
{
    if (msg[num] == Pass)
        msg[num] = Set;
}
 
s8 get_Message(u8 *msg, u8 num)     //Функция получения сообщения
{
    if (msg[num] == Activ)
        {
            msg[num] = Pass;
            return 0;
        }
    
    return -1;
}

4). В функции main, созданы глобальные переменные (массивы) для инициализации структур конечных автоматов, и создан массив структур для конечных автоматов. Для удобства, решил каждому конечному автомату (элементу массива структур), присвоить свой указатель.
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
//------------------------------Глобальные переменные для обмена данными между модулями----------------------------------//
/*************************************************************************************************************************/
    
//--------------------Массивы сообщений FSM----------------//
state msg_uart[BUF_MSG_FSM]; //UART
state msg_key [BUF_MSG_FSM]; //KEY
state msg_lcd [BUF_MSG_FSM]; //LCD
state msg_tmp [BUF_MSG_FSM]; //
state msg_clk [BUF_MSG_FSM]; //
 
//----------------Типы данных для обмена между FSM---------------//
u8 dat_uart[2][BUFFER_SIZE]; // UART
u8 dat_key    [BUF_DAT_FSM]  // KEY
u8 dat_lcd    [BUF_DAT_FSM]; // LCD
u8 dat_tmp    [BUF_DAT_FSM]; //
struct DATA_TIME data_time;  //
    
//------------Массивы таймеров FSM---------//
struct TIMERS tim_uart[BUF_TIM_FSM]; //UART
struct TIMERS tim_key [BUF_TIM_FSM]; //KEY
struct TIMERS tim_lcd [BUF_TIM_FSM]; //LCD
struct TIMERS tim_tmp [BUF_TIM_FSM]; //
struct TIMERS tim_clk [BUF_TIM_FSM]; //
 
struct FSM_BASE all_fsm [FSM]= 
{
    {msg_uart, dat_uart,  tim_uart}, 
    {msg_key,  dat_key,   tim_key}, 
    {msg_lcd,  dat_lcd,   tim_lcd}, 
    {msg_tmp,  dat_tmp,   tim_tmp}, 
    {msg_clk, &data_time, tim_clk}
};
 
struct FSM_BASE *uart_fsm = &all_fsm[0];
struct FSM_BASE *key_fsm  = &all_fsm[1];
struct FSM_BASE *lcd_fsm  = &all_fsm[2];
struct FSM_BASE *tmp_fsm  = &all_fsm[3];
struct FSM_BASE *tim_fsm  = &all_fsm[4];
5). И вот теперь загвоздка, как мне в любом из модулей для конечного автомата (объекта), воспользоваться функцией передачи или чтения сообщения?

6). Параллельно всплыл ещё вопрос, как работать с двухмерным массивом в модуле объекта
когда в функцию необходимо передать указатель на первый элемент массива (не нулевой), и содержание нулевого элемента массива
C++
1
2
3
//---------------------------Функция передачи массива байта по UART----------------------------------------//
//---------------------------------------------------------------------------------------------------------//
s8 tx_Srting(const u8 *data, u8 size)
Простите возможно сумбурно и сложно, но вот как есть .

Вернуться к обсуждению:
Доступ к полю структуры C (Си)
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2019, 16:24
Готовые ответы и решения:

Доступ к полю структуры из буфера
Добрый день. Столкнулся с такой проблемой - необходимо обратиться к полю структуры,которая...

Поиск по полю структуры
struct s { int k; char p; float l; char n; } дана структура как осуществить поиск по...

Сортировка по структуры по полю ФИО
О ГУРУ программирования! Помогите мне решить задачу. Нужно отсортировать структуру по полю FIO. Но...

Сортировка структуры по полю char
Есть структура struct AeroFlot { char* destination; char* tip; int nomer; int...

6
29.12.2019, 16:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2019, 16:24
Помогаю со студенческими работами здесь

Сортировка структуры по полю double
Доброе утро! Написал программу.. вот: #include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include...

Быстрая сортировка структуры по одному полю
Задача такова: Составить программу, в которой будет таблица, которая будет выводится после...

Каким образом получить доступ к полю i через указатель ptr?
Дан код: struct K {int i, char a;}; struct K *ptr; struct K a1={8,”abcdefg”}; ptr=&amp;a1;

Можно ли присвоить случайное значение (rand), полю символьному структуры, состоящему из N элементов?
Здравствуйте, возник один вопросик. Можно ли присвоить случайное значение (rand), полю символьному...

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