Potřeboval bych tuto tabulku nastavit, tak abych se k tomu mohl dostat v C. Jde mi jen o ty čísla. Nechci to mít samostatně v externím souboru. Místo složitých výpočtů solární radiace chci udělat funkci f(date), která vrátí údaj k příslušnému roku. Nějaké složité parsování na to bych se vykašlal, stačí když to bude napevno v programu/knihhovně.
Fórum › C / C++
Jak dostat data z csv do C headeru?
navíc pokud to tam je rok za rokem bez vynechání lze k hodnotě radiace přistupovat přímo
double radiace = YearSolRad[datum.rok-1610][1];
tedy vzhledem k rozsahu by ti možná typově místo double stačil float (1/2 velikost v paměti) když to chceš mít trvale součástí programu.
#3 MilanL
Tak nějak. A možná by tam by mohlo být const double, ne? No a když to pak budu používat v tom programu pro výpočty tak ty budou pracovat v double. Protože tohle je jen solární konstanta, ale další vzorce či funkce jsou na výpočet lokální radiace a tam se pracuje i s údaji jako geopozice, zenit, azimut apod. které jsou v double. Proto možná by bylo nejlepší to nechat v double, aby se to nemuselo castovat.
A proč to vlastně začíná od indexu 2? Já někde v minulosti viděl snad i makra nebo definice pro mikroprocesor (?) ale nevím jestli to nebylo C++ nebo jiný jazyk.
#4 oxidián
nezačíná od indexu 2 ale je to 2 rozměrné pole první rozměr není definován, druhý rozměr má 2 hodnoty rok a radiaci, pokud bys pro rok používal ten výpočet indexu [datum.rok-1610] stačilo by klasické jednorozměrné pole jen s hodnotami radiace, ale nesměl by chybět žádný rok, případně by se musely chybějící roky doplnit, bud 0 nebo nějakou hodnotou
#5 MilanL
Nějak mi nedošlo že je to jen deklarace. Už chápu.
Tam jsou všechny roky takže to stačí použít rok jako index a jednorozměrné pole.
Mám to teda napsat takto?
double SolConst[1] ={
{1359.8886},
{1360.1994},
atd.
}
nebo takto?
double SolConst[407] = {
1359.8886,
1360.1994,
atd.
}
Fakt nevím
Přes define by to ale mělo jít taky ne?
#define SOLCONST { 1359.8886, 1360.1994, 1360.4240 atd }
int main(int argc, char *argv[])
{
int solconst =SOLCONST;
}
Ještě jsem vyhrabal staré poznámky:
//C++03: POD arrays and structs are aggregates
int c1[2]={0,2}; // array with two integers
char c2[]="message"; // string literals
//or you can use the more verbose form:
char c3[]={'m','e','s','s','a','g','e','�'}; // string
Tak buď použít ten první styl int c1[2]={0,2}; nebo macro a nevím co je lepší.
#6 oxidián
hm přes define nevím jestli jde array, jinak v textu ten druhej způsob, jinak postup abys to nemusel dělat ručně bych to csv natáhl do excelu nebo calc (OO) zrušil první řádek a sloupec, do dalšího sloupce za čísla nakopíroval čárku a uložil jako txt nebo rtf pak tam dáš jen definici a zavřeš do závorek a je hotovo.
double SolConst[407] = {
1359.8886,
1360.1994,
atd.
}
#7 MilanL
Mě se to povedlo přes ten define, ale teď musím zase nadefinovat podmínky a je to složitější než jsem myslel. Původně jsem myslel že ty konstanty se opakují co 11 let, jenže pak jsem zjistil, že je to nepravidelné opakování 9-12 let. Z toho mi plyne, že bych chtěl zkusit udělat funkci na výpočet vzdálenosti Slunce od Země, což nebude lehké. Protože tu vzdálenost potřebuji k přesnějšímu výpočtu solární radiace z historického hlediska a pro odhad do budoucnosti.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Když uživate napíše data do formuláře, jak dostat ty data do title? — založil Starý chábr
Jak dostat MYSQL data do JavaScriptu — založil MaxDJs
Export data z csv to csv — založil Jozef
Dostat data z jiné stránky — založil Konlos
Jak dostat do proměné? — založil Náhodný
Moderátoři diskuze