c++,rada

Sekcia o programovaní, programovacích jazykoch...
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

c++,rada

Príspevok od používateľa Sato »

Prosim vas,nevie mi niekto do podrobna vysvetlit,ako tento cyklus pracuje?Vsetkemu rozumiem,okrem tohoto riadku:
factorials = i * factorials[i-1];

#include <iostream>
using namespace std;
const int ArSize = 16;
int main()
{
double factorials[ArSize];
factorials[1] = factorials[0] = 1.0;
int i;
for (i = 2; i < ArSize; i++)
factorials = i * factorials[i-1];
for (i = 0; i < ArSize; i++)
cout << i << "! = " << factorials << "\n";
cin.get();
return 0;
}

Co je toto a [i-1] ?
DAKUJEM
Používateľov profilový obrázok
RP
Administrátor
Administrátor
Príspevky: 2539
Dátum registrácie: St 21. Mar, 2001, 20:00
Bydlisko: Kosice

Re: c++,rada

Príspevok od používateľa RP »

Sato napísal:Prosim vas,nevie mi niekto do podrobna vysvetlit,ako tento cyklus pracuje?Vsetkemu rozumiem,okrem tohoto riadku:
factorials = i * factorials[i-1];

#include <iostream>
using namespace std;
const int ArSize = 16;
int main()
{
double factorials[ArSize];
factorials[1] = factorials[0] = 1.0;
int i;
for (i = 2; i < ArSize; i++)
factorials = i * factorials[i-1];
for (i = 0; i < ArSize; i++)
cout << i << "! = " << factorials << "\n";
cin.get();
return 0;
}

Co je toto a [i-1] ?
DAKUJEM



je i-ty prvom pola factorials
[i-1] je i minus jedna -ty prvok pola

Ide o vypocet faktorialu.

Faktorial je funkcia sucinu vsetkych celych cisel mensich ako dane cislo :

cize faktorial 1 je 1
faktorial 2 = 2 *1 = 2
faktorial 3 = 3 * 2 * 1 = 6
faktorial 4 = 4 * 3 * 2 * 1 = 24
faktorial 5 = 5 * 4 * 3 * 2 * 1 = 120
atd.

Faktorial celeho cisla n

faktorial n = n * (n-1) * ... *2 * 1 sa v matematike oznacuje n! (n s vykricnikom).

A ako teda mozes vidiet plati aj ze

faktorial 2 = 2 * faktorial 1
faktorial 3 = 3 * faktorial 2
faktorial 4 = 4 * faktorial 3
faktorial 5 = 5 * faktorial 4
...

a teda vseobecnejsie napisane faktorial i = i * faktorial i-1

zapisane ako pole faktorials = i * faktorials [i-1]
Používateľov profilový obrázok
Nesqwik
Používateľ
Používateľ
Príspevky: 321
Dátum registrácie: So 04. Mar, 2006, 02:00
Bydlisko: Trnava

Príspevok od používateľa Nesqwik »

ten riadok je klasicke vyuzitie rekurzie >>> funkcia ,,factorials,, zavola samu seba
a [i-1] su prvky pola
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

Nesqwik napísal:ten riadok je klasicke vyuzitie rekurzie >>> funkcia ,,factorials,, zavola samu seba
a [i-1] su prvky pola

Toto nie je rekurzia, factorials nie je funkcia ale pole!

BTW, faktorial je vzdy cele cislo, to ze je to pole double je zbytocne.
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

Uz mi to je jasnejsie.Dakujem! A uz ked sme pri tom programovani,co myslite,oplatila by sa kupit tato kniha o OOP?
http://knihy.cpress.cz/Book.asp?ID=1841
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

Hmm, neviem, ak si predtym nikdy neprogramoval, mozno by si mal skusit najpr proceduralny pristup -> skus C, nic nepokazis.
Ked chces silou mocou knihu o OOP, skus
http://www.wndr.net/tij/html/TIJ3.htm
je to myslim na nete aj v cestine, (v slovencine prve 2 kapitoly);
vydala to Grada : Myslime v jazyku Java. Dobra kniha, mozno trochu obsirna, ale urcite jedna z najlepsich o OOP.
BTW nenechaj sa zmiast nazvom
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

Ale ja s Javou neviem ani pohnut,ucim sa len C++.Nevadi to?
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

Poloz si zakladnu otazku. (2)
1. Chces pisat ovladace, alebo nejake low-level systemove veci?
2. Potrebujes aby tvoje aplikacie boli vykonavane run-time?

Nie?
Zabudni na C++

C++ nie je vhodne na pisanie velkych projektov, vsetky firmy, portuju svoj kod na platformu .NET. Dovody?
90% svojho casu vacsina programov caka na vstup od pouzivatela a ten zvysny cas ti moze by jedno ci tvoj program bezi 10ms alebo 15ms. Java a .NET ti ponukaju omnoho komfortnejsie programovanie za trivialnu stratu rychlosti. Ak nechces stratit vacsinu casu lokalizaciou chyb a obzvlast ked sa len ucis, nechaj C++ na pokoji.
A okrem toho C++ nie je cisty OO jazyk. Howgh, nenechaj sa zviest na vseobecnej modnej vlne : Programovanie? C++!!
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

Krvopotne sa ucim z knizky MISTROVSTVY C++,teraz som v 5 kapitole a mam s tym skoncit?Aky program by si odporucal,co sa moze hodit do buducnosti aj ohladom zamestnania? Mozes vysvetlit: portuju svoj kod na platformu .NET.
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

To si si vybral sakra zlu knihu, to ti tam nevadilo to mistrvstvi v nazve? Vo mne to evokuje, alebo zlu reklamu, alebo isty predpokladany stupen vedomosti.

K tomu jazyku hovorim: Java, alebo nejaky .NET (kludne aj C++.NET) ale z .NETu skor C# (podobne ako Java). Obidve su platformovo nezavisle, programy napisane v tychto jazykoch bezia na virtual machine -> co zabezpecuje prenositelnost (program napiasny v Jave spustis bez modifikacii na Wine, Linuxe, alebo mobile) to plati aj pre .NET (aj ked o VM pre Linux som este nepocul). Tato virtual machine ti zabezpecuje kontrolu hranic poli, null pointer blah blah blah... Ked sa voalco pokasle, program vyhodi vynimku a nie suchu hlasku Program vykonal nepovolenu operaciu a skonci - to ti vela o chybe nepovie). Cim sa zvysuje bezpecnost, urcite si pocul o Buffer Overflow a roznych virusoch co to vyuzivaju. No ale najzaujimavjsie na nich je Garbage Collector, ktory sa stara o alokaciu a uvolnovanie pamate (ak si sa tam v C++ nedostal bud rad), toto je jedna z hlavnych vyhod. Skratka ma to vela ficuriek, ktore neskor ocenis.

To ze uz volaco z C++ vies je len dobre, ono to neznamena, ze ked chces pisat v Jave musis zacat odznova na zelenej luke.

Portovanie - prepis kodu, tak aby bezal na inej platforme, v tomto pripade prepis z nativneho C++ do C#, pripadne C++.NET
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

BTW vo Viste bude .NET CLR (Common language runtime) uz integrovany, rovnako WinFX (nove Win API, Microsoft neodolal modnej X vlne) je postavene na .NETe. Takze ked chces pisat nejake okna, odporucam C#. Je to podobne ako Java, takze mozes kludne pouzit aj tu knihu...
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka
Používateľov profilový obrázok
Nesqwik
Používateľ
Používateľ
Príspevky: 321
Dátum registrácie: So 04. Mar, 2006, 02:00
Bydlisko: Trnava

Príspevok od používateľa Nesqwik »

hopla kremso ma ma pravdu zle som si precital deklaracie :red:
Používateľov profilový obrázok
Sato
Nový používateľ
Nový používateľ
Príspevky: 121
Dátum registrácie: Ne 03. Apr, 2005, 20:00

Príspevok od používateľa Sato »

Este by som sa chcel spytat,co sa neda spravit v Jave oproti C++ a co znamena Java & Javascript.Dik
Používateľov profilový obrázok
Payne
Používateľ
Používateľ
Príspevky: 1334
Dátum registrácie: Ne 13. Mar, 2005, 20:00
Bydlisko: Poprad (18)

Príspevok od používateľa Payne »

Java je samostatny programovaci jazyk, ako uz pisal Kremso...

JavaScript nie je programovaci jazyk, ale skriptovaci a sice vyuziva sa pri tvorbe www stranok na rozne doplnujuce finticky ako napr. datum...
CPU : Celeron 1200MHz&1440MHz - 12*120MHz, DVD : Sony DRU 800A,
HDD : Maxtor 40GB 7200ot. 2MB cache, MB : Abit ST6 RAID, RAM : 256 MB SDRAM PC133 PQI + 128 MB SDRAM PC133 Apacer, VGA : Inno3D GeForce 2MX 400 64MB 175MHz/155MHz@205MHz/165MHz, Zdroj : 250W, Zvuk : Sound Blaster 5.1 Live!
Používateľov profilový obrázok
kremso
Nový používateľ
Nový používateľ
Príspevky: 161
Dátum registrácie: Št 22. Júl, 2004, 14:00
Bydlisko: Trnava (19)

Príspevok od používateľa kremso »

Java napriklad nema pointery, ale len referencie. V pripade pointerov na datove typy je to dobre, ale chyba mi pointer na funkciu. To sa da nastastie obist pomocou reflexie, aj ked je to trochu tazkopadne.
Otazka mala byt polozena skor co sa neda spravit v C++ oproti Jave. Java je vyssi programovaci jazyk, takze ti umoznuje robit veci jednoduchsie ako v C++, strasne vela uzitocnych funkcii, ktore potrebujes su sucastou Java API. Naproti tomu v C++ mas plnu kontrolu nad tym co robis, nikto sa o nic nestara, tym padom je to rychlejsie (zanedbatelne).
Leopold Kronecker: Boh vytvoril cele cisla, vsetko ostatne je vytvorom cloveka

Návrat na "Programovanie"