Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
swiftblade

Zdrojový kód a výstup

Recommended Posts

Takže začal som s cpp s knihou "Cpp bez předchozích znalostí". Preložil som si projekt:

#include <iostream>
using namespace std;
int main(void)
{
cout <<"Veľkosť typu short:" << sizeof(short)<<"/n";
cout <<"Veľkosť typu int:" << sizeof(int)<<"/n";
cout <<"Veľkosť typu long:" << sizeof(long)<<"/n";
cout <<"Veľkosť typu float:" << sizeof(float)<<"/n";
cout <<"Veľkosť typu double:" << sizeof(double)<<"/n";
cout <<"Veľkosť typu long double:" << sizeof(long double)<<"/n";
cout <<"Veľkosť typu char:" << sizeof(char)<<"/n";
cout <<"Veľkosť typu bool:" << sizeof(bool)<<"/n";
return 0;
}

Keď som spustil .exe súbor konzolová aplikácia sa okamžite ukončí. Vie niekdo kde mám chybu?

Share this post


Link to post
Share on other sites

A kdyz si to spustis z prikazoveho radku? Podle me bude problem jen ten, ze se proste vypise text a hned se to ukonci :).

Share this post


Link to post
Share on other sites

Protože program projde v porádku. Takže: buď tam přidej něco, co ho nakonci zastaví. Nebo ho spouštěj v cmd.exe (prostě otevřeš cmd.exe a do něj přetáhneš svůj exe a dáš enter).

 

btw. ty lomítka mají být \n a ne /n

 

 

 

Share this post


Link to post
Share on other sites

A kdyz si to spustis z prikazoveho radku? Podle me bude problem jen ten, ze se proste vypise text a hned se to ukonci :).

Je to tak ako vravíš ale skúsim nápad sileyho :D

Share this post


Link to post
Share on other sites

To nieje nápad :D, ale tak to je. Ten príkaz ti zastaví chod programu pred návratom hodnôt a tak sa ti nevypne kým nestlačíš ENTER.

Share this post


Link to post
Share on other sites

Ok ďakujem siley fakt že si mi pomohol... ale predsa len ešte jednu vec.

Keď som spustil .exe nezobrazilo mi písmená kde je ˇ čiže ľ a ť.

To je len tým že samotný program nevie rozpoznať nejaké znaky?

 

To nieje nápad :D, ale tak to je. Ten príkaz ti zastaví chod programu pred návratom hodnôt a tak sa ti nevypne kým nestlačíš ENTER.

SiLvEr ja som síce začiatočník ale nie až taký že by som nepochopil čo to robí :teehee:

Ale ďakujem za podrobnú vysvetlivku

Edited by NecroVisioN

Share this post


Link to post
Share on other sites

Pozor na doublepost :D a ešte k tomu, ja som to vysvetlil z toho dôvodu, že napr. v každej knihe o C++ je napisane, čo treba robiť keď program len tak preblikne. Tak možno si ty knihu nečital :D tak aby si vedel na čo to vôbec je.

Share this post


Link to post
Share on other sites

Pozor na doublepost :D a ešte k tomu, ja som to vysvetlil z toho dôvodu, že napr. v každej knihe o C++ je napisane, čo treba robiť keď program len tak preblikne. Tak možno si ty knihu nečital :D tak aby si vedel na čo to vôbec je.

Ok diki moc ten doublepost som si nevšimol tak sorry ak si to niekdo všimne.

Ale áno čítal som ju a aj v tomto momente ju mám pred sebou a čítam to :lol:

Share this post


Link to post
Share on other sites

swiftblade: podle me to ty znaky nepodporuje protoze dev-c++ a ani visualko (2008 i 2010) si s tim neporadilo

 

SiLvEr: ne ve vsech to je ja sem se ucil nejaky zaklady podle "Naučte se C++ za 21 dní" a vysvetleni co jakej prikaz znamena byl az uplne na konci knihy takze kdybych nelistoval co tam vse je tak bych zjistil co jakej prikaz dela az kdyz bych docet knizku

Share this post


Link to post
Share on other sites

Hlavně mi přijde trochu ujeté vytvářet pro tyhle "programy" *.exe soubory. Každé trochu schopnější IDE má přece něco jako "run" tlačítko, ne?

Share this post


Link to post
Share on other sites

btw. ty lomítka mají být \n a ne /n

Ano, plně souhlasím. Jen ještě dodám, že jde použít i endl; například:

 

#include <iostream>
using namespace std;
int main(void)
{
cout <<"Veľkosť typu short:" << sizeof(short)<<endl;
cout <<"Veľkosť typu int:" << sizeof(int)<<endl;
cout <<"Veľkosť typu long:" << sizeof(long)<<endl;
cout <<"Veľkosť typu float:" << sizeof(float)<<endl;
cout <<"Veľkosť typu double:" << sizeof(double)<<endl;
cout <<"Veľkosť typu long double:" << sizeof(long double)<<endl;
cout <<"Veľkosť typu char:" << sizeof(char)<<endl;
cout <<"Veľkosť typu bool:" << sizeof(bool)<<endl;
return 0;
}

 

 

nad return pripis

cin.get();

exe naskoci a pak se ukoncuje zmacknutim enter

Jasně, ale většinou to tam nestačí dát pouze jednou. :D Já osobně používám k pozastavení programu

system("pause");

Funkce system(...) předává příkazy na příkazový řádek a provádí je. Názorná ukázka:

 

#include <iostream>
using namespace std;
int main(void)
{
   cout <<"Veľkosť typu short:" << sizeof(short)<<endl;
   cout <<"Veľkosť typu int:" << sizeof(int)<<endl;
   cout <<"Veľkosť typu long:" << sizeof(long)<<endl;
   cout <<"Veľkosť typu float:" << sizeof(float)<<endl;
   cout <<"Veľkosť typu double:" << sizeof(double)<<endl;
   cout <<"Veľkosť typu long double:" << sizeof(long double)<<endl;
   cout <<"Veľkosť typu char:" << sizeof(char)<<endl;
   cout <<"Veľkosť typu bool:" << sizeof(bool)<<endl;
   system("pause");
   return 0;
}

POZN.: Na Windows to bude fungovat v klidu, ale na rodině operačních systémů Linux to pravděpodobně fungovat nebude. :pinch: Na linuxu se tedy znalost cin.get(); zdá být výhodou. :tongue_ss:

 

 

swiftblade: podle me to ty znaky nepodporuje protoze dev-c++ a ani visualko (2008 i 2010) si s tim neporadilo

Závisí na spousta faktorech, jako je použitý kompilátor, nebo třeba operační systém. Mě na diakritiku pomáhá dát před výpis na obrazovku něco takovýho:

locale::global(locale(""));

Ale pozor, je to součástí jmenného prostoru std, takže pokud na začátku programu nebudeš mít using namespace std; tak to použiješ takhle:

std::locale::global(std::locale(""));

Celý příklad:

 

#include <iostream>
using namespace std;
int main(void)
{
   locale::global(locale(""));
   cout <<"Veľkosť typu short:" << sizeof(short)<<endl;
   cout <<"Veľkosť typu int:" << sizeof(int)<<endl;
   cout <<"Veľkosť typu long:" << sizeof(long)<<endl;
   cout <<"Veľkosť typu float:" << sizeof(float)<<endl;
   cout <<"Veľkosť typu double:" << sizeof(double)<<endl;
   cout <<"Veľkosť typu long double:" << sizeof(long double)<<endl;
   cout <<"Veľkosť typu char:" << sizeof(char)<<endl;
   cout <<"Veľkosť typu bool:" << sizeof(bool)<<endl;
   system("pause");
   return 0;
}

 

 

Doufám že jsem to popsal alespoň trochu pochopitelně. :)

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Wolf ďakujem fakt si mi pomohol s tou diakritikou funguje to správne len prosím ťa popíš mi čo vlastne robí

locale::global(locale(""));

Share this post


Link to post
Share on other sites

locale::global(locale(""));

Nastavuje "nativní" národní prostředí (znakovou sadu, nebo stránku, jak chceš..i časový pásma a jiný..). :D

 

Ještě jinak.. Hele, tady je pár příkladů:

http://www.dotnetspider.com/resources/31822-Global-locale-native-locale-c.aspx

 

..a tady je tabulka locales:

http://www.cryer.co.uk/brian/windows/info_windows_locale_table.htm

 

Pokud bys chtěl upřesnit jakej locale to vlastně chceš použít, tak třeba ti to pomůže pochopit tohle:

locale::global(locale("slovak"));

nebo abys tomu rozuměl, podle těch příkladů:

locale slovak("slovak");
locale::global(slovak);

Udělá to obojí uplně stejnou věc.

Nastaví to locale na 1250 (pro czech je to taky 1250, všimni si toho v tý tabulce)

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Každopádne ďakujem všetko mi funguje ak sa vyskytne nejaký problém tak napíšem sem.

Idem na kapitolu aritmetické operátory takže bude hodne čo vysvetlovať :whistling:

//EDIT// Takže potrebujem spraviť taký aritmetický zápis ktorý mi dokáže odčítať všetky premenné, ktoré

majú hodnotu 0. Nepožadujem od vás aby ste mi taký kód napísali len chcem vedieť akú funkciu musím poznať na zapísanie

takéhoto kódu.

Edited by swiftblade

Share this post


Link to post
Share on other sites

Sorry za tento doublepost ale ludia si neaktualizovaný topic neotvoria a ak áno tak si nevšimnú //edit// (česť výnimkám)

No poďme k veci začal som podmienky čiže aj realizovať projekt aritmetický priemer :rolleyes: .

Ako zapíšem do podmienky if/else if že keď niekdo stlačí určitý kláves spustí sa príkaz ktorý by som bližšie definoval v if podmienke napr.

spolu = známka1 + známka2 + známka3;
 počet = 1 + 1 + 1;
 priemer = spolu/počet;
 cout <<"Tvoj priemer je: " <<priemer<<"\n";

Share this post


Link to post
Share on other sites

Nevím sice jak to přesně myslíš, ale doufám že tohle pochopíš.

 

 

#include <iostream>

using namespace std;

int main(int argc, char argv[])
{
   locale::global(locale("czech"));

   int soucet = 0;
   int pocet = 0;

   cout << "Postupně zadávejte jednotlivé známky.\nPři zadání hodnoty 0 ukončíte zadávání a vyvoláte výpis.\n\n";
   while ( 1 )
   {
       unsigned int znamka = 0;

       cout << "Zadej " << pocet+1 << ". známku: ";
       cin >> znamka;

       if(znamka == 0)
       {
           break;
       }
       else if(znamka <= 5 && znamka > 0)
       {
           ++pocet;
           soucet += znamka;
       }
       else
       {
           cout << "NEPLATNÁ HODNOTA!\n";
       }
   }

   cout <<"Aritmetický průměr je: " << soucet/pocet << endl;

   system("pause");
   return 0;
}

 

A jestli chceš přesnější výsledek, použij double (místo int.. double je s desetinou čárkou, int je celočíselná proměnná) a s tím to i počítej (všimni si změn):

 

#include <iostream>

using namespace std;

int main(int argc, char argv[])
{
   locale::global(locale("czech"));

   double soucet = 0.0;
   int pocet = 0;

   cout << "Postupně zadávejte jednotlivé známky.\nPři zadání hodnoty 0 ukončíte zadávání a vyvoláte výpis.\n\n";
   while ( 1 )
   {
       double znamka = 0.0;

       cout << "Zadej " << pocet+1 << ". známku: ";
       cin >> znamka;

       if(znamka == 0)
       {
           break;
       }
       else if(znamka <= 5 && znamka > 0)
       {
           ++pocet;
           soucet += znamka;
       }
       else
       {
           cout << "NEPLATNÁ HODNOTA!\n";
       }
   }

   cout <<"Aritmetický průměr je: " << double(soucet/pocet) << endl;

   system("pause");
   return 0;
}

Výstup může vypadat například takhle:

752_prumer_prg_WO.png

 

Prověřuje to i hodnoty - jestli jsou v rozsahu 1 až 5, dál to nebere záporný.. Myslím že to je z toho kódu poznat.. :huh:

Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Ďakujem kód som pochopil... Ale predsa len ešte otázočka k tomu automatickému priraďovaniu hodnoty pocet.

Ktorý kód sa tam stará o to že po každom zadaní číselnej hodnoty sa pocet zvýši o 1.

Viem že je to v tomto riadku ale nechápem je to riadne zjednodušené... teda klobúk dolu ja by som nedokázal tak zjednodušiť ten program na pár riadkov...

ja som každú známku... teda každý cout písal osobitne :D

cout << "Zadej " << pocet+1 << ". známku: ";

Share this post


Link to post
Share on other sites

Je to tím

 ++pocet;

to zvyšuje hodnotu proměnné počet o jedna. To že v tom kódu co máš je to pocet+1 je kvůli tomu, že základní hodnota promenne pocet je 0, takže by to vypisovalo zadej 0. známku od 0.

 

A je to zpočátku 0, protože jsi ještě nezadal žádné číslo, ale teprve budeš zadávat. Hodnota proměnné pocet vlastně udává, kolik známek jsi už zadal.

 

 

 

Edited by Chajak

Share this post


Link to post
Share on other sites

Áno to viem ale ako je možná že sa to opakuje...jastnééé ty si tam vnoril cyklus while už chápem ja som ešte prešiel len po kapitolu cyklus for kde mám operátory++ a --. Ale zachvílu budem mať aj cyklud while a do while takže ďakujem.

Share this post


Link to post
Share on other sites

Jasně, cyklus while.. Do podmínky běhu jsem dal 1

while ( 1 )

..tím pádem to běží pořát a přeruší ho jenom

break;

 

Operátory je třeba se naučit hned skoro na začátku. Tady ti napíšu to co už stejně asi víš. Jen tak pro shrnutí.

  • tohle je součet hodnoty promena s konstantní hodnotou 1, do proměný vysledek. Hodnota promena se nezmění:
    vysledek = promena+1;


  • pokud ale výsledek zobrazuješ jenom jednou a pak ho už nebudeš chtít dále zpracovávat, nemusíš si zbytečně dělat proměnnou. Stačí to sečíst hned při výpisu:
    cout << promena+1;


  • toto znamená, že k hodnotě co už proměnná promA má, se přičte hodnota proměnné promB:
    promA += promB;


  • inkrementace (zvýší hodnotu operandu o 1):
    ++promena;


  • dekrementace (sníží hodnotu operandu o 1):
    --promena;


Edited by Wolf Officious
  • Upvote 1

Share this post


Link to post
Share on other sites

Máš pravdu operátory ++ -- som už bral ale k cyklusu while som sa este nedostal najprv tu mám cyklus for takže potom to budem vedieť ak niečo tak napíšem takže tu bude zase doublepost :D

Share this post


Link to post
Share on other sites

Hele, není potřeba dělat doubleposty. Já to tak nějak sleduju. Heh.. for cyklus.. nojo.. :D

 

    for(int classID = 1; classID <= 11; ++classID)
   {
       float basehp   = 0.0f;
       float basemana = 0.0f;

       if(classID != 10)
       {
           ss << "-- " << ChrClasses[classID] << newLine;
           ss << "INSERT INTO `player_classlevelstats` (`class`,`level`,`basehp`,`basemana`) VALUES " << newLine;

           for(int level = MinLevel; level <= MaxLevel; ++level)
           {
               ss  << "(" << classID       //class
                   << "," << level         //level
                   << "," << (int)basehp   //basehp
                   << "," << (int)basemana //basemana
                   << ")";

               if(level < MaxLevel)
                   ss << ",";

           }
           ss << ";" << newLine << newLine;
       }
   }

To je příklad jedný mojí prasečinky. Můžeš to brát jako použití for cyklů v praxi, :D ale ve skutečnosti je to nic neříkající část kódu vytržená z kontextu. :rofl:

Edited by Wolf Officious

Share this post


Link to post
Share on other sites

No takže skúsil som ten cyklus while a dopadlo to asi tak týmto spoilerom :D

 

1>c:\users\kubo\documents\visual studio 2008\projects\arithmetic\arithmetic\zdrojak.cpp(25) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

1>c:\users\kubo\documents\visual studio 2008\projects\arithmetic\arithmetic\zdrojak.cpp(25) : error C2365: 'system' : redefinition; previous definition was 'function'

1> c:\program files\microsoft visual studio 9.0\vc\include\stdlib.h(521) : see declaration of 'system'

1>c:\users\kubo\documents\visual studio 2008\projects\arithmetic\arithmetic\zdrojak.cpp(25) : error C2440: 'initializing' : cannot convert from 'const char [6]' to 'int'

1> There is no context in which this conversion is possible

1>c:\users\kubo\documents\visual studio 2008\projects\arithmetic\arithmetic\zdrojak.cpp(26) : error C2059: syntax error : 'return'

 

ak mi nevyšiel tento spoiler tak fakt srry robim ho prvy krat :D

Skús sa nto pozrieť

EDIT: OOOO môj bože ja som dement ja som dal k cin << :D mna asi šlahne

EDIT2: aktualizujem spoiler dávam to do toho prvého nebudem zbytočne robiť nový :D

 

Zadajte 1. známku: 1

Nesprávna hodnota

Tvoj priemer je: -1.#IND

tu je výpis programu po odstránení týchto chýb v prvom spoileri.

Edited by swiftblade

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×