Dokončování programu - neprávné znaky na konzoli – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dokončování programu - neprávné znaky na konzoli – C / C++ – Fórum – Programujte.comDokončování programu - neprávné znaky na konzoli – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
oxidián0
Grafoman
25. 7. 2017   #1
-
0
-
Nahlásit jako SPAM
IP: 78.102.61.–
KIIV
~ Moderátor
+43
God of flame
25. 7. 2017   #2
-
0
-

#1 oxidián
Pravdepodobne to vyvolava to, ze pises v UTF-8, ale konzole je ve vetsine pripadu na neco jako cp852 (tj. ani cp1250 se nezobrazi dobre)

Melo by jit ale v ramci programu zmenit kodovani na UTF, a pak by to mohlo zacit fungovat. Mozna jeste nastavit font jako Lucida nebo tak.

Nahlásit jako SPAM
IP: 93.91.151.–
Program vždy dělá to co naprogramujete, ne to co chcete...
gna
~ Anonymní uživatel
1891 příspěvků
25. 7. 2017   #3
-
0
-

Ten stupeň bude tím kódováním, ale ve zbytku máš prostě rozbité stringy. Asi jsi dovrtal ten sprintf z předchozího dotazu.

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

#3 gna
To ne, bylo to tím že nebyly kompletně iniciované structy.

"Solar zenith angle Z %s [\370]\n"\

Vyřešeno. Díky

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

Ještě mám dotaz jak nastavit pointer ii aby ukazoval na strukturu i?
getJulianDate totiž pracuje s pointerem na INPUTS.
 

void getSolarPosition(INPUTS i, SOLPOS *o) {
  if ( !i.JulianDate )
    {
    INPUTS * ii;
    i.JulianDate = getJulianDate(ii);
    }

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

   

&i
Nahlásit jako SPAM
IP: 213.211.51.–
KIIV
~ Moderátor
+43
God of flame
27. 7. 2017   #7
-
0
-

#6 gna
ale jen za predpokladu, ze to pak treba nechce vratit z funkce v returnu.

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

#6 gna
čistě náhodou jsem si na to vzpomněl a zkoušel jsem

INPUTS * ii; &i = ii;


Jenže to mi nefungovalo, to píše chybu

U:\C\Solrad\solrad\main.c|69|error: lvalue required as left operand of assignment|

V noci mě napadlo ještě toto:

i.JulianDate = getJulianDate(&i);


ale pak jsem na to zapomněl bo už jsem měl vyplý komp. A tys to myslel takto. Tak jo, funguje to. Dík

Nahlásit jako SPAM
IP: 78.102.61.–
KIIV
~ Moderátor
+43
God of flame
27. 7. 2017   #9
-
0
-

#8 oxidián
INPUTS * ii = &i;

coz znamena:  prirad adresu promenne i (= &i) do nove promenne s nazvem ii typu pointer na INPUTS (INPUTS * ii)

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

Nakonec jsem to předělal takto:

void getSolarPosition(INPUTS * inputs, SOLPOS *o) {
  INPUTS i = *inputs;
  if ( !i.JulianDate )
        (*inputs).JulianDate = getJulianDate(inputs); // date must be set to calculate Julian Date


protože dále ve funkci přistupuju ke členům pro čtení i přímo a abych to nemusel psát takto (*i) tak jsem to změnil.. *Inputs pro zápis použiju jenom jednou.

Ten zápis je nutný, jinak se mi vlastně ta hodnota ztratí.

Nahlásit jako SPAM
IP: 78.102.61.–
KIIV
~ Moderátor
+43
God of flame
27. 7. 2017   #11
-
0
-

#10 oxidián
  

void getSolarPosition(INPUTS * inputs, SOLPOS *o) {
  if (! inputs->JulianDate)
  {
    inputs->JulianDate = getJulianDate(inputs); // date must be set to calculate Julian Date
Nahlásit jako SPAM
IP: 93.91.151.–
Program vždy dělá to co naprogramujete, ne to co chcete...
oxidián0
Grafoman
27. 7. 2017   #12
-
0
-

#11 KIIV
To je ale špatně, JulianDate nebude uloženo.

Takto to je dobře:

void getSolarPosition(INPUTS * inputs, SOLPOS *o) {
  INPUTS i = *inputs;
  if ( !i.JulianDate )
        inputs->JulianDate = getJulianDate(inputs); // date must be set to calculate Julian Date

double T=( i.JulianDate-2451545.0)/36525.0;

Nahlásit jako SPAM
IP: 78.102.61.–
KIIV
~ Moderátor
+43
God of flame
27. 7. 2017   #13
-
0
-

#12 oxidián
samozrejme ze bude, bude dokonce videt i venku, jelikoz se upravuje polozka na adrese input.

#include <stdio.h>

struct Test
{
    int  a;
    int  b;
};

void uprav(struct Test * test);

int main()
{
    struct Test neco = {0, 2345};
    
    printf("neco.a==%d a neco.b==%d\n", neco.a, neco.b);

    uprav(&neco);
    
    printf("neco.a==%d a neco.b==%d\n", neco.a, neco.b);

    return 0;
}

void uprav(struct Test * test)
{
    if (! test->a)
    {
        test->a = test->b - 100;
    }
}

 A vysledek:

neco.a==0 a neco.b==2345                                                                                                                                  
neco.a==2245 a neco.b==2345

Muzes si to i ozkouset na teto adrese:  https://goo.gl/t5PzLS

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

#13 KIIV
OK, zjistil jsem že i.member vrací 0. Takže použiju i->member

Nahlásit jako SPAM
IP: 78.102.61.–
oxidián0
Grafoman
27. 7. 2017   #15
-
0
-

Program už jede, ale výpočet vzdálenosti mezi zemí a sluncem není úplně podle mých představ. Nezajímá se tu někdo o astronomii, že by poradil s výpočtem?

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

#15 oxidián
no tohle už bych hodil do samostatnýho vlákna, snad se někdo ozve.

Nahlásit jako SPAM
IP: 91.139.9.–
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, 68 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ý