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

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

Vlákno bylo úspěšně vloženo.
Pokud sám přijdeš na řešení, nezapomeň ho sem přidat!
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
Věrný člen
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
Věrný člen
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
Věrný člen
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
Věrný člen
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
925 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
Věrný člen
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, 66 hostů

Moderátoři diskuze

 

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