C++ - incializace

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

C++ - incializace

Příspěvek od acerr »

Ahoj,
proč proměná c musí být incializována před cyklem? Když to neprovedu, hlásí to blbosti

Kód: Vybrat vše

#include <iostream>
int main()
{
    using namespace std;

    int first;
    int second;

    cout << "Zadejte prvni cislo:\n";
    cin >> first;
    cout << "Zadejte druhe cislo:\n";
    cin >> second;

    int c = 0;
    for (int i =first;i<=second;i++)
     c += i;



    cout << "\nSoucet cisel je: " << c << endl;
    return 0;
}

Ssnake
Začátečník
Začátečník
Registrován: 25. led 2005
Bydliště: chotebuz

Re: C++ - incializace

Příspěvek od Ssnake »

tipl bych ze nemuzes c inicializovat v cyklu, ktery bezi vic nez jednou, nejde to ani logicky - kazdy cyklus by c bylo opet 0...
co je spatneho na tom to mit pred cyklem?
FD node 202, ST45SF, Z97i, i7-4980HQ CB20:1718,CB24:254 NH-L9i, 2x8, R9NANO , 5100MAX
x850xtPE, x1950xtx, hd2900gt, hd3870, hd4890, hd5870 - - 6800ultra, 7900gtx, 8800gtx, 9800gtx+, gtx285
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

Nic, mě šlo jen o to, proč ji nemohu incializovat až v cyklu - dát ji hodnotu i to by udělal poprvé a pak by už jen přičítal inkrementovanou hodnotu i ne?
1Pupik1989
Začátečník
Začátečník
Registrován: 20. říj 2011
Bydliště: Dvůr Králové nad Labem

Re: C++ - incializace

Příspěvek od 1Pupik1989 »

Já teda c++ nějak neumím, ale u skoro všech jazyků je to stejné. Nejde použít proměnnou která neexistuje. Třeba string se logicky chová pro sčítání jinak, hodnoty to zapíše za sebe. Proto se musí nejdřív nadefinovat co to bude za typ.
CPU: AMD Phenom II x4 955BE @ 4GHz FAN: Arctic Cooling Freezer Xtreme rev.2
MB: MSI 760GM-E51
RAM: Kingston 2x4Gb RAM DDR3 1333 @ 1466MHz
GPU: Gigabyte Radeon HD 6850 OC 985/1260MHz
HDD: WD Caviar Green WD10EARX 1TB SATAIII/600, ZDROJ: Fortron FSP550-APN (550W)
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

ok, dík
Ssnake
Začátečník
Začátečník
Registrován: 25. led 2005
Bydliště: chotebuz

Re: C++ - incializace

Příspěvek od Ssnake »

acerr píše:Nic, mě šlo jen o to, proč ji nemohu incializovat až v cyklu - dát ji hodnotu i to by udělal poprvé a pak by už jen přičítal inkrementovanou hodnotu i ne?
myslis takhle?

Kód: Vybrat vše

   
    for (int i =first;i<=second;i++){
    int c = 0;
     c += i;
}
nebo

Kód: Vybrat vše

   
    for (int i =first;i<=second;i++)
    int c += i;
FD node 202, ST45SF, Z97i, i7-4980HQ CB20:1718,CB24:254 NH-L9i, 2x8, R9NANO , 5100MAX
x850xtPE, x1950xtx, hd2900gt, hd3870, hd4890, hd5870 - - 6800ultra, 7900gtx, 8800gtx, 9800gtx+, gtx285
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

to druhé sem myslel
Ssnake
Začátečník
Začátečník
Registrován: 25. led 2005
Bydliště: chotebuz

Re: C++ - incializace

Příspěvek od Ssnake »

v tom pripade ale nemas jiste ze C bude na zacatku cyklu 0 (spis mas jiste ze nebude, kdyby to uz teda proslo kontrolou, a v kazdem cyklu by to nejspis chtelo definovat nove c :-) )
FD node 202, ST45SF, Z97i, i7-4980HQ CB20:1718,CB24:254 NH-L9i, 2x8, R9NANO , 5100MAX
x850xtPE, x1950xtx, hd2900gt, hd3870, hd4890, hd5870 - - 6800ultra, 7900gtx, 8800gtx, 9800gtx+, gtx285
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

Jak v c++ vypíšu obsah proměné v binárním a hex tvaru?
Maranov
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 21. črc 2006

Re: C++ - incializace

Příspěvek od Maranov »

http://www.cplusplus.com/reference/ios/hex/

Binární v std AFAIK není. Budeš si ho muset napsat sám.
DESKTOP: C2D E8200 (pasivně); ATI HD 3870 (AC S1, 120 fan@5V); 4GB RAM; OCZ Vertex2 SSD 64GB; 320+320+250GB JBOD (odhlučněno); 2x FSC P19-2 (2056x1024)
MOBILE: Lenovo Thinkpad T420 4177 CTR, Crucial M4 SSD 128GB, 6GB RAM; FSC P19-2; Logitech G400
POCKET: Nokia Hulmia 800; Hitachi 500GB@Scythe Kamazo 2 (eSATA); Creative EP-630
AUDIO: Sennheiser HD 555 (foam mod), NuForce Icon µDAC, FLAC, ReplayGain, f2k

"A Man's mortality is a compass that points his way in life."
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: C++ - incializace

Příspěvek od arxeiss »

Binární celkově v C/C++ není, jen kompilátory pro mikročipy mají přidanou možnost zapsání proměnné v binárním tvaru. Vypsání možná některé pokročilejší budou mít taky...
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

Ještě jeden problémek:
jak tento kód přepíšu pomocí 2D pole?

Kód: Vybrat vše

#include <iostream>
int main()
{
    using namespace std;
    int b = 0;
    const int months_in_year = 12;
    const char * months[months_in_year]
    {
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October ",
        "November",
        "December",
    };
    int pocet[months_in_year];

    for( int i = 0; i<12; i++)
    {
        cout << months[i] << endl;
        cin >> pocet[i];
    }
    for (int i = 0;i<12;i++)
    {
        b += pocet[i];
    }

    cout <<endl << "pocet prodanych knih je: " << b << endl;
    return 0;
}

Maranov
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 21. črc 2006

Re: C++ - incializace

Příspěvek od Maranov »

Proč?
Navíc, pokud je jedno pole typu char* a druhé int, tak je spojit nepůjde. Nehledě na to, že to druhé je nyní úplně zbytečné.

BTW to "const int months_in_year" tam je proto, aby si se vyvaroval psaní "12" později, tak ho dej i do těch forů.
DESKTOP: C2D E8200 (pasivně); ATI HD 3870 (AC S1, 120 fan@5V); 4GB RAM; OCZ Vertex2 SSD 64GB; 320+320+250GB JBOD (odhlučněno); 2x FSC P19-2 (2056x1024)
MOBILE: Lenovo Thinkpad T420 4177 CTR, Crucial M4 SSD 128GB, 6GB RAM; FSC P19-2; Logitech G400
POCKET: Nokia Hulmia 800; Hitachi 500GB@Scythe Kamazo 2 (eSATA); Creative EP-630
AUDIO: Sennheiser HD 555 (foam mod), NuForce Icon µDAC, FLAC, ReplayGain, f2k

"A Man's mortality is a compass that points his way in life."
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

takhle já to dělal podle zadání v knize a tam si to přejí udělat přes 2D pole, dík za upozornění na tu konstantu
Maranov
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 21. črc 2006

Re: C++ - incializace

Příspěvek od Maranov »

Což je na co se ptám - co to má dělat?
DESKTOP: C2D E8200 (pasivně); ATI HD 3870 (AC S1, 120 fan@5V); 4GB RAM; OCZ Vertex2 SSD 64GB; 320+320+250GB JBOD (odhlučněno); 2x FSC P19-2 (2056x1024)
MOBILE: Lenovo Thinkpad T420 4177 CTR, Crucial M4 SSD 128GB, 6GB RAM; FSC P19-2; Logitech G400
POCKET: Nokia Hulmia 800; Hitachi 500GB@Scythe Kamazo 2 (eSATA); Creative EP-630
AUDIO: Sennheiser HD 555 (foam mod), NuForce Icon µDAC, FLAC, ReplayGain, f2k

"A Man's mortality is a compass that points his way in life."
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

zadání:
Představte si, že prodáváte knihu C++ pro každého. Napište program, do kterého bude možné zadat měsíční prodeje za rok (v počtu knih, ne v penězích). Program by měl v cyklu postupně vyzvat uživatele k zadání vstupu pomocí jmen měsíců získaných z pole char * incializovaného řetězci se jmény měsíců. Vstupní data by program ukládal do pole typů int. Dále by vypočítal součet hodnot pole a zobrazil celkový prodej za rok - to je zadání 4

5) Proveďte programátorská cvičení 4, ale použijte dvojrozměrné pole na uložení vstupních hodnot měsíčních prodejů za 3 roky. Zobrazte celkové prodeje za každý jednotliví rok a za všechny roky.

Vůbec nwm jak na to...
Ale tu 4ku mám správně ne?
arxeiss
Začátečník
Začátečník
Uživatelský avatar
Registrován: 19. črc 2008
Bydliště: Krmelín (předměstí Ostravy)
Kontaktovat uživatele:

Re: C++ - incializace

Příspěvek od arxeiss »

Ta 5ka je podle mě o tom, že budeš mít dvourozměrné pole, kde jeden rozměr je rok, a druhý měsíc... tudíž něco jako
int pole[3][12];
PC : CPU: C2D E5200 2500Mhz @ 3750Mhz a AC Freezer 7PRO MB: Gigabyte GA-P31-DS3L rev.2,1 GPU: ATI Radeon 3650HD 256MB RAM: A-Data Vitesta 2x2GB Zdroj: Forton OEM 400W HDD: Samsung F2 500GB
Netbook : Asus EEE CPU: Intel Atom N270 1,6GHz RAM: A-Data 2GB HDD: 250GB 5400ot/min
Maranov
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 21. črc 2006

Re: C++ - incializace

Příspěvek od Maranov »

Dvourozměrné (statické) pole vytvoříš podobně jako jednorozměrné, jak psal arxeiss.

Pokud pak budeš chtít načíst/vypsat součty prodejů za všechny jednotlivé roky, pak udělej cyklus v cyklu. Načítání tří let v pseudokódu:

Kód: Vybrat vše

ProdejeZaTřiRoky := pole čísel 3 x 12;
Pro rok := 1 až rok 3:
  Pro měsíc := 1 až 12:
    ProdejeZaTřiRoky[rok][měsíc] := načtené prodeje;
DESKTOP: C2D E8200 (pasivně); ATI HD 3870 (AC S1, 120 fan@5V); 4GB RAM; OCZ Vertex2 SSD 64GB; 320+320+250GB JBOD (odhlučněno); 2x FSC P19-2 (2056x1024)
MOBILE: Lenovo Thinkpad T420 4177 CTR, Crucial M4 SSD 128GB, 6GB RAM; FSC P19-2; Logitech G400
POCKET: Nokia Hulmia 800; Hitachi 500GB@Scythe Kamazo 2 (eSATA); Creative EP-630
AUDIO: Sennheiser HD 555 (foam mod), NuForce Icon µDAC, FLAC, ReplayGain, f2k

"A Man's mortality is a compass that points his way in life."
acerr
Začátečník
Začátečník
Registrován: 19. dub 2012

Re: C++ - incializace

Příspěvek od acerr »

a tak jak by vypadal ten kód?
Maranov
Mírně pokročilý
Mírně pokročilý
Uživatelský avatar
Registrován: 21. črc 2006

Re: C++ - incializace

Příspěvek od Maranov »

Dva cykly v sobě.
Jeden "for rok := 1 až 3" a druhý "for měsíc := 1 až 12". K poli pak přistoupíš "Pole[rok][měsíc]".
DESKTOP: C2D E8200 (pasivně); ATI HD 3870 (AC S1, 120 fan@5V); 4GB RAM; OCZ Vertex2 SSD 64GB; 320+320+250GB JBOD (odhlučněno); 2x FSC P19-2 (2056x1024)
MOBILE: Lenovo Thinkpad T420 4177 CTR, Crucial M4 SSD 128GB, 6GB RAM; FSC P19-2; Logitech G400
POCKET: Nokia Hulmia 800; Hitachi 500GB@Scythe Kamazo 2 (eSATA); Creative EP-630
AUDIO: Sennheiser HD 555 (foam mod), NuForce Icon µDAC, FLAC, ReplayGain, f2k

"A Man's mortality is a compass that points his way in life."
Odpovědět

Zpět na „Programování a web“