C ++: я хочу скопировать / сохранить данные из структуры в отдельные массивы

0

Я написал базовую функцию get, которая принимает элементы структуры и копирует/сохраняет их в отдельные переменные. Я хочу сделать то же самое, за исключением того, чтобы хранить массив структур в переменных массива (главное, что я хочу использовать функцию get, которую я уже написал). Я легко могу сделать то, что хочу, не встраивая свою первую функцию, но мне нужно использовать мою первую функцию во втором, и у меня есть некоторые проблемы.

Одна из моих ошибок заключается в том, что во встроенной функции get нет встроенного метода get, который я вставлял в свою вторую функцию (я думал, что правильно сопоставил переменные с моей первой функцией get (т.е. n, c, a и Икс)).

Спасибо, что посмотрели.

#include <iostream> 
#include <cstdlib> 

using namespace std; 

struct ABC
{ 
    int n; 
    char c; 
    double a[3]; 
}; 


void get( int & n, char & c, double a[3], const ABC & x )
{ 
    n = x.n; 
    c = x.c; 

    for (int i = 0; i < 3; i++){ 
    a[i] = x.a[i]; 

    } 
} 

void get( int n[], char c[], double a[][3], const ABC x[], int elements )
{
    for (int i = 0; i < elements; i++){ 

    get(n, c, a, x); 

    } 

} 

int main()
{ 

    ABC x = {number, m, {1, 2, 3}}; 

    ABC xx[4] = { 

    {123, 'A', {1.1, 1.2, 1.3}}, 
    {234, 'B', {2.1, 2.2, 2.3}}, 
    {345, 'C', {3.1, 3.2, 3.3}}, 
    {456, 'D', {4.1, 4.2, 4.3}} 

    }; 

    int n; 
    char c; 
    int a[] = {}; 

    int n1 [4] = {}; 
    char c1 [4] = {}; 
    double a3 [4] [3] = {}; 

    int elements = 3; 

    get(n1, c1, a3, xx, elements); 

    return 0; 
} 
  • 0
    Некоторые отступы были бы хорошими.
  • 0
    Название сразу напоминает мне о проблемах XY . Итак: почему?
Теги:
arrays
struct

2 ответа

1

Вы, наверное, хотели сказать

get(n[i], c[i], a[i], x[i]); 

Это не отвечает на вашу XY-проблему, хотя

"фиксированный" код (для компиляции) Live On Coliru

  • 0
    Спасибо! Не знаю, почему я забыл просто добавить индекс для каждого из параметров. Много HW, так что это, вероятно, просто ускользнуло от ума.
1

Мне кажется, что в ваших функциях get с массивами вы всегда сохраняете значения в одном и том же месте в каждом массиве. Вероятно, вы должны сделать что-то вроде:

get (n [i], c [i], a [i], x [i]);

  • 0
    Спасибо за помощь!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню