Jak dostat data z csv do C headeru? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak dostat data z csv do C headeru? – C / C++ – Fórum – Programujte.comJak dostat data z csv do C headeru? – C / C++ – Fórum – Programujte.com

 

oxidián0
Grafoman
26. 7. 2017   #1
-
0
-

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ě.

Nahlásit jako SPAM
IP: 78.102.61.–
MilanL+1
Grafoman
26. 7. 2017   #2
-
0
-

#1 oxidián
máš na mysli něco jako pole konstant?

double YearSolRad[][2] ={
{1610.5,1359.8886},
{1611.5,1360.1994},
{1612.5,1360.4240},
{1613.5,1360.7240},
{
...}
}
Nahlásit jako SPAM
IP: 91.139.9.–
MilanL+1
Grafoman
26. 7. 2017   #3
-
0
-

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.

Nahlásit jako SPAM
IP: 91.139.9.–
oxidián0
Grafoman
26. 7. 2017   #4
-
0
-

#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.

Nahlásit jako SPAM
IP: 78.102.61.–
MilanL+1
Grafoman
26. 7. 2017   #5
-
0
-

#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

Nahlásit jako SPAM
IP: 185.112.167.–
oxidián0
Grafoman
26. 7. 2017   #6
-
0
-

#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ší.

Nahlásit jako SPAM
IP: 78.102.61.–
MilanL+1
Grafoman
26. 7. 2017   #7
-
0
-

#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.

}

Nahlásit jako SPAM
IP: 185.112.167.–
oxidián0
Grafoman
26. 7. 2017   #8
-
0
-

#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.

Nahlásit jako SPAM
IP: 78.102.61.–
gna
~ Anonymní uživatel
1891 příspěvků
26. 7. 2017   #9
-
0
-

To makro překvapivě funguje jako makro. Tam kde ho napíšeš je to jako bys napsal jeho obsah. Nevím k čemu by ti to tady bylo. Normálně z toho udělej to pole, jak psal Milouš.

Nahlásit jako SPAM
IP: 213.211.51.–
oxidián0
Grafoman
28. 7. 2017   #10
-
0
-

#2 MilanL
Co když by člověk chtěl použít dva typy? Double a char v jednom poli?

double YearSolRad[][2] ={ {1610.5,"abc",1359.8886}, {1611.5,"abc",1360.1994}, {1612.5,"abc",1360.4240}, {1613.5,"abc",1360.7240}, { ...} }
 

Nahlásit jako SPAM
IP: 78.102.61.–
MilanL+1
Grafoman
30. 7. 2017   #11
-
0
-

#10 oxidián
to potom asi jako strukturu nebo by možná šel použít i typ union nějakým způsobem

Nahlásit jako SPAM
IP: 185.112.167.–
KIIV
~ Moderátor
+43
God of flame
30. 7. 2017   #12
-
0
-

#10 oxidián
nebylo by nahodou lepsi pouzit strukturu v kombinaci s jednorozmernym polem. Ta inicializace by zustala stejna.

Nahlásit jako SPAM
IP: 93.91.151.–
Program vždy dělá to co naprogramujete, ne to co chcete...
oxidián0
Grafoman
31. 7. 2017   #13
-
0
-

#12 KIIV
Tuhle věc jsem už udělal. Ale teď dělám nový program, který importuje data ze souborů a na to ty struktury mám.

Nahlásit jako SPAM
IP: 78.102.61.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 41 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý