функция — передача данных в структуру

Я перевожу код Fortran 77 на C ++, а Fortran 77 использует общие блоки. Я пытаюсь заменить общие блоки структурами, которые я затем заполню значениями из функции, а затем вызову оба для использования в моем main. На данный момент мой код выглядит так:

#include <iostream>
#include <cmath>
using namespace std;

// data_list
struct data_list {
double g, dw, Vel, M, dt, N;
int Ioutp1, Ioutp2;
} values;

void data (data_list& val) {
val.g = 9.80665;
val.dw = 0.05;
val.Vel = 20.0;
val.M = 128;
val.dt = 0.05;
val.N = 4000;
val.Ioutp1 = 1;
val.Ioutp2 = 1;
}

void Pierson_Moskowitz(data_list& val) {

/*
* Calculation of properties of Pierson_Moskowitz Spectrum
*/
double Ug, Hs, A, B, Std;
cout << values.Vel << "\t\t" << values.g;
Ug = values.Vel/values.g;
cout << Ug << endl;

}
int main() {
data(values);
//float dw = values.dw = 0.05;
cout << values.dw << endl;

}

Это всего лишь тест, так как в данный момент моя основная ничего не делает, кроме печати значения. То, что я хочу, для переменных, которым даны значения в моем data функция, чтобы можно было использовать во всем коде. На данный момент есть две вещи, которые меня смущают:

1) Мой Pierson-Moskowitz функция ничего не печатает за уг. Я не понимаю, почему нет?
2) Я не уверен, что мне даже нужно data функция. По сути, код Fortran, который я транслирую, использует подпрограмму для присвоения значений переменным в общем блоке. Я пытаюсь сделать что-то подобное, используя структуру, а затем функцию, чтобы заполнить его значениями.

Этот код довольно короткий, и я планирую хранить все в одном файле. Любая помощь очень ценится!

0

Решение

Вы хотите передать ссылку на ваш общий блок:

void data (data_list& val) {

тогда ваши изменения будут общий блок, а не копия.

4

Другие решения


По вопросам рекламы [email protected]