Anonymní profil Honza – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Anonymní profil Honza – Programujte.comAnonymní profil Honza – Programujte.com

 

Příspěvky odeslané z IP adresy 94.113.240.–

Honza
Python › Název souboru jako proměnná
10. 8. 2017   #217403

#2 gna
Při takovémto zadávání to funguje, ale problém je, že při ukládání souboru se jedná o text a zde už vaše navrhované řešení je opět prostý text. Jméno souboru poté nejsou parametry ale ""str(1) + ", " str(2) + ".png" "" a nebo rovnou přijde Syntac Error.

Honza
Python › Název souboru jako proměnná
9. 8. 2017   #217385

Ahoj, jsem začátečník s Pythonem, můj dotaz možná pro někoho bude maličkost, tak doufám, že se mi dostane pomoci.

Pracuji v programu a výsledkem je série obrázků jsou pojmenované podle parametrů za kterých byly vytvořeny. Zatím jsem musel vždy přepisovat jméno souboru podle parametrů. Co hledám je způsob jak automaticky do: 

#Name_of_image
im.save(folder+"/45, 0.5, 0.52, 20, 0.51, 0.2.png")

namísto neustále kopírování číslic, měl pouze jakousi proměnnou, která bude parametry doplňovat automaticky. 

Všem díky za pomoc :-) 

C / C++ › Binární strom
7. 9. 2015   #204801

#4 KIIV

Můj příspěvek přichází už poněkud pozdě, myslím ale, že bude mít pro někoho význam. tak tedy: Výše uvedené řešení také způsobí únik paměti. Nedojde k odalokování posledních členů stromu. (listů)

Příklad stromu:

                           10
                         /      \
                        6      14
                       /  \      /  \
                      5  8  11 18

bude se dít následující rekurzivní volání 

DeleteUzel(RootPtr_10)
  DeleteUzel(RootPtr_10->ukLevy, což je RootPtr_6)
    DeleteUzel(RootPtr_6->ukLevy, což je RootPtr_5)  
      DeleteUzel(RootPtr_5->ukLevy, což je nullptr)    // podmínka RootPtr != nullptr nesplněna 
      free(RootPtr_5->ukLevy, což je nullptr)  ;       // uvolňuje se kukazatel na nullptr
          RootPtr_5->ukLevy = nullptr; 
    DeleteUzel(RootPtr_6->ukPravy, což je RootPtr_8)  
      DeleteUzel(RootPtr_8->ukPravy, což je nullptr)   // podmínka RootPtr != nullptr nesplněna 
      free(RootPtr_8->ukPravy, což je nullptr)  ;      // uvolňuje se kukazatel na nullptr
          RootPtr_8->ukPravy = nullptr; 
  free(RootPtr_10->ukLevy, což je RootPtr_6)  ;        // ukazatel na 5 a 8 zůstává neuvolněn
  RootPtr_10->ukLevy = nullptr;                        // uvolněním 6tky zaniká přístup k jeho větvím
  
  DeleteUzel(RootPtr_10->ukLevy, což je RootPtr_6)
  ...

Lepší řešení je: 

void DeleteUzel(tUkUzel RootPtr)
{
  if( Ptr != nullptr )
  {
        DeleteUzel(RootPtr->ukLevy);
        DeleteUzel(RootPtr->ukPravy);
        free(RootPtr);
        RootPtr = nullptr;
  }
}

Volání bude probíhat takto:

DeleteUzel(RootPtr_10)
  DeleteUzel(RootPtr_10->ukLevy), což je RootPtr_6)
    DeleteUzel(RootPtr_6->ukLevy), což je RootPtr_5)
      DeleteUzel(RootPtr_5->ukLevy), což je nullptr)   // 5ka nemá levou větev. Ukazatel je nullptr pokračuje se na pravou
      DeleteUzel(RootPtr_5->ukPravy), což je nullptr)  // prava větev je rovnež nullptr
      free(RootPtr_5);                                 // uvolnění paměti
		  RootPtr_5 = nullptr;
    DeleteUzel(RootPtr_6->ukPravy), což je RootPtr_8)  // pokracuje se na pravou větev 6tky
      DeleteUzel(RootPtr_8->ukLevy), což je nullptr)
      DeleteUzel(RootPtr_8->ukPravy), což je nullptr)
      free(RootPtr_8);
		  RootPtr_8 = nullptr;
    free(RootPtr_6);                                   // 6tka už nemá pravou ani levou větev a proto je možné ji odalokovat
		RootPtr_6 = nullptr; 

 DeleteUzel(RootPtr_10->ukPravy), což je RootPtr_14)
    DeleteUzel(RootPtr_14->ukLevy), což je RootPtr_11)
      DeleteUzel(RootPtr_11->ukLevy), což je nullptr)  // 11ka nemá levou větev. Ukazatel je nullptr pokračuje, se na pravou
      DeleteUzel(RootPtr_11->ukPravy), což je nullptr) // prava větev je rovnez nulptr
      free(RootPtr_11);                                // uvolnění paměti
		  RootPtr_11 = nullptr;
    DeleteUzel(RootPtr_14->ukPravy), což je RootPtr_11)// pokracuje se na pravou větev 14tky
      DeleteUzel(RootPtr_11->ukLevy), což je nullptr)
      DeleteUzel(RootPtr_11->ukPravy), což je nullptr)
      free(RootPtr_11);
		  RootPtr_11 = nullptr;
    free(RootPtr_14);                                  // 14tka už nemá pravou ani levou větev a proto je možné ji odalokovat
		RootPtr_14 = nullptr; 
  free(RootPtr_10);                                    // Nakonec se odalokuje kořen
	RootPtr_10 = nullptr;

KIIV mně inspiroval k hledání leak detektoru pro Windows Visual Studio

Můžu doporučit https://vld.codeplex.com/ funguje perfektně a je zdarma.

Igor


C / C++ › Teorie do praxe, aneb první…
12. 12. 2014   #197223

Díky pánové,

Třídící algoritmy naprogramovat zvládnu. Zkusím naprogramovat třídu, kde by se i něco takového mohlo objevit.

Ondrej39: děkuji za materiály.

C / C++ › Teorie do praxe, aneb první…
10. 12. 2014   #197122

#6 Satik
Ahoj Satik, 

Díky za názor. 

C# vs C++: Osobně bych taky raději používal C#, ale C++ se používá u nás v práci. To platí v podstatě i pro WinAPI. 

GUI: Tady jsem se nepřesně vyjádřil, nechci implementovat vlastní GUI ale zahrnout do projektu GUI jako třeba právě Win_API nebo Qt.

V první řadě mi jde o to, abych si osvojil objektové myšlení

C / C++ › Teorie do praxe, aneb první…
10. 12. 2014   #197106

#4 ondrej39
Ahoj Ondro. C++za 21 dní mimo jiné pojednává o Abstraktních třídách. Jedna z pokročilých technik jsou například i propojené seznamy. Vcelku tomu rozumím, ale už je to už poněkud pokročilé. Asi bych měl začít postupně a jednoduššími věcmi.

Děkuji za názor ohledně implementace GUI. Ještě to rozmyslím ale patrně to nechám na dobu kdy si budu jistější s jazykem jako takovým.

Budu vděčný za jakýkoliv materiál.

Pánové, a co říkáte na návrhové vzory. Mám se tím zabývat? Používáte to?

Díky

Igor

C / C++ › Teorie do praxe, aneb první…
9. 12. 2014   #197091

Ahoj Vitamin, díky za hint. O Qt taky uvažuju. Ale primárně mi jde o to začít dělat "něco" praktického. Když přijde na věc ani to nemusí být v GUI, ale už jsem začal s WinAPI.

C / C++ › Teorie do praxe, aneb první…
9. 12. 2014   #197078

Ahoj,

Jsem spíš programátor samouk. (Python, LabView, TCL, Matlab) Nyní začínám s C++ a chci to dělat seriózně(ji).

Přečetl jsem knihu Naučte se C++ za 21 dni( asi za 42 dní :-)) Většinu příkladů jsem udělal a danou látku pochopil. Teď procházím Tutorial WinAPI. Ovšem veškerá teorie je jak známo k ničemu, když se nezavede do praxe. Chci si určit projekt s konkrétním cílem (vytvořit vlastní třídu, gui ...) a na něm začít pracovat. Od vás bych rád dostal rady čemu se vyvarovat, nebo co se naopak Vám osvědčilo v začátcích. Například používání návrhových vzorů  ano či ne. Kniha/ web s řešenými příklady.  Můžete být konkrétní i obecní. 

Předem moc děkuji za rady

 

 

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