Tudnátok adni egy kis segítséget (c++)?
A feladat az hogy a program kiírja az első n sorát a Pascal Háromszögnek.A kérésem az lenne hogy ne konkrét kódot adjatok csak ötleteket amin elindulhatok.
Elég sokat gondolkoztam de az egyetlen dolog ami eszembe jutott(nem vagyok benne biztos hogy bármire is használhatnám) az hogy egy n. sor elemeinek száma n+n-1 ahol n-1 az üres karaktereket jelzi.
na most az a kérdés, hogy szépen, formázottan kell kiírnod, hogy egy háromszög alakuljon ki, vagy simán csak egymás alá a sorokat?
Vagy az algoritmust nem tudod megoldani?
2 tömbre lesz szükséged, egyikben mindig az előző sort tárolod, mert az aktuális sort abból kell kiszámolni ugyebár. És akkor az aktuális sorod i-edik eleme úgy jön ki, hogy az előző sor (i-1)-je + az i. Természetesen a széleken le kell kezelni, hogy 0-kat adjon hozzá, ne valami félreindexelt elemeket. Egyébként magát a formázott kiíratást is meg lehet oldani, de nem vagyok biztos benne, hogy neked arra szükséged van.
elmondom, hogy én hogy csinálnám, próbáld meg követni, kódot nem írok.
beolvasom az n-t ezzel megtudom, hogy hány sorom lesz majd, és hogy mekkora az a legnagyobb elemszám amennyit egy sor tartalmaz(mivel minden sorban annyi elem van, ahanyadik sor).
lefoglalnék két tömböt dinamukusan:
ha az n páros, akkor n+3 mérettel(egyrészt, hogy legyen középső elem, másrészt, mivel van 2 felesleges elem, ezért indexeléskor nem fogok kifutni a tömbből, ezzel megoldom, hogy biztosan jót adjak hozzá.
ha páratlan akkor n+2 mérettel.
bejárnám mindkét tömböt, és kinulláznám az elemeket.
az első tömb középső elemébe, azaz az n/2+1-edik elemébe beírnék egy egyest, ez lenne a kezdő állapotom.
és akkor a második tömb 2. elemétől az utolsó előttiig (mivel volt két felesleges elemünk, mai csak a 0-k miatt kellett) kiszámítanám azzal a képlettel, hogy előző tömb (i-1)-dik eleme+előző tömb i-edik eleme.
ezzel meg van egy lépés, de ezt még nszer meg kell ismételni. És természetesen a következő lépésnél már helyet kell hogy cseréljen ez a két tömb, ami most aktuális, azt a ciklus végén átmásolod az előzőbe, és az aktuális tömböt pedig újra kinullázod.
kiírni meg úgy írod ki, hogy bejárod a tömböt, és írsz egy feltétel,t hogy ha a tömb eleme nem 0, akkor írod ki csak, így a sok felesleges 0 nem lesz kiírva.
Elmondtam, a megoldást, már csak le kell programoznod :) Természetesen most az én észjárásomat kell követned.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!