Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: tähti-ä

Sivun loppuun

cloudi [27.11.2003 21:58:10]

#

ny mäni hermot prkl..

-mitenkä toi silmu ja if-jutska pitäs mennä, jotta sais
kutakuink. tän tyypp. kuvion (esim. ku antaa korkeuden 3):

  * * *
*       *
* * * * *

mulla on tällanen (en oo kyl sit kuviomestari,jotenka sori)

int rivi,loppu ,sarake;
for( rivi=korkeus,loppu= korkeus ;rivi>0;rivi--,loppu++)       //loppu=2*(korkeus-1)
	{
for(sarake=1;sarake<=loppu;sarake++)

if(sarake==rivi||sarake==loppu||rivi==1||rivi==korkeus)     cout<<merkki;
	else  cout<<' ';
cout << '\n';
  	}

-missäköhä kaikkialla vika(t) mahtais piilee?!

sqwiik [28.11.2003 11:42:37]

#

Pelkkä \n-merkki vaihtaa riviä. Kannattaa käyttää cout:in kanssa endl-vakiota, ja merkkijonoja bittien sijaan:

/*
  leveys = 5 ja korkeus = 3 tuottaa seuraavan:
  *****
  *   *
  *****
*/
int leveys, korkeus;
int sarake, rivi;
  for(rivi = 0; rivi < korkeus; rivi ++){
    for(sarake = 0; sarake < leveys; sarake ++){
      if(rivi==0||rivi==korkeus-1||sarake==0||sarake==leveys-1)
        cout<<"*"; else cout<<" ";
    }
    cout<<endl; /* Vaihdetaan riviä */
  }

Oliko tuosta apua?

cloudi [28.11.2003 12:43:07]

#

No ku jos annettu koko (eli korkeus) olisi 3. pitäs just korkeus olla 3 ja leveys olla 3. ja pohja olisi sitten leveämpi (enpä ole varma pitäskö pohja olla 4 vai 5! no, kunhan ois hiukka leveempi!)
-että onks tällanen mahdollista.. kyl oon sompaillu vaik mitenkin noita for-lauseita,ja iffejä. jopa askelsin läpi paperilleki, ja kyl sen tajus missä kohdin tähtiä tulee millon mikäki rivi jne., mutta eipäs ny auta kuitenkaan et mikä muutos vaik pitäis olla ehdoissa.

(tai-ehdot: yksi ehto kun toteutuu, tekee tähden...ja kyllä täs tapaukses toteutuu yksi ehto herkästi, joten tähti tulee, vaikkei ehkä haluais!)
eli kuvion sisälle pitäs saada tyhjää enempi, mut miten?

edit: niin tois loppu-juttu tekis siis sitä leveemmäks alhaalta (okei). -mutta kokeilepa vaikka antaa kooksi 5, niin sivut (laitatähdet) jää ylhäältä liian yhteen, eikä sit se "katto" Ei istaha päälle! (jopas on mulla hankala selvitys!!!)

sqwiik [28.11.2003 17:47:31]

#

Selitäs vähän... minkä kuvion tähtien pitäisi muodostaa? Neliö? Kolmio? Suunnikas? Vinokas? Suorakulmainen ympyrä?

cloudi [28.11.2003 18:04:34]

#

Kyllä kysyit hankalan... ja jotenki kuvan tekeminen ei onnaa sille ku pitäs.. esim jos kuvio(5,*);

void kuvio(int korkeus,char merkki)
{ ..ja yllämainittu kodeksi..

ja sit pitäs tulla:

     * * * * *
   *           *
  *             *
 *               *
* * * * * * * * * *

-siis myönnän nyt kyllä etten ole varma kuvasta, varsinkin pohjana olevien tähtien määrästä, mutta tätä mallia kuitenkin, Ei neliö, Ei kolmio, Ei suunnikas, Ei vinokas... eikä suorakulm.ympyrää voine olla =)
- mut sen varma että esim. nyt 5 ylälaita ja levenee, 5 tähtee ovat sivut ja pohjan pitis mukautua.

AK [28.11.2003 18:05:16]

#

lainaus:

Suorakulmainen ympyrä?

?

sooda [28.11.2003 18:06:35]

#

Puolisuunnikashan toi

AK [28.11.2003 18:09:27]

#

En edelleenkään ymmärrä mutta ihan sama.

sqwiik [28.11.2003 18:25:20]

#

Ahaa... vastaushan makoilee nenäsi alla: Joka rivillä sisäosan leveys kasvaa kahdella. Yläkerran leveys on samalla ensimmäisten reunojen väliin jäävä tyhjä tila.
Lue seuraava koodi tarkasti, muuntele sitä ja opi siitä elämän tärkeitä pikkuseikkoja.

void kuvio(int korkeus, char * merkki){
int k,ssp,usp,z; /* ssp=sisäspacet, usp=ulkospacet, z=apumuuttuja*/
  usp = korkeus-1; /* Tämän voit tarkistaa vaikka piirtämällä paperille; pätee aina */
  isp = korkeus-2; /* Kuin myös tämän :)*/
  for(k=0;k<korkeus;k++){
    for(z=0;z<usp;z++)cout<<" ";
    cout<<merkki;
    /* Tässä hauskaa... muuntele ja opi. */
    for(z=0;z<isp;z++)
      if(k==0||k==korkeus-1)cout<<merkki; else cout<<" ";
    cout<<merkki;
    for(z=0;z<usp;z++)cout<<" ";
    /* Kun etenemme alaspäin tätä pyramiidia, niin usp pienenee ja isp suurenee KAHDELLA... */
    usp--; isp+=2;
    cout<<endl;
  }
}

cloudi [28.11.2003 19:23:30]

#

Vai puolisuunnikas, vaik matikast ysiluokan aikana
k i i p e sin ysiin.(jokin kiinnostus ja vihanvimma mua mättäs että matikka luistikin,vaikka kettinkisiä "ystäviä" ympärillä,ja kaameat meikit kuin viikko sitte tehtyjä ja saunas käyty ja vaan lisätty meikkii...ym heko hee ja nou tanke söör, hartsa mikä hartsa)
- mut siitä on miljoooona vuotta, noita muista
'isp' : undeclared identifier
kun isp esitelty int tyyppiseksi:
'ssp' : unreferenced local variable
iiks.. . jopas olenki pönttö eikä voisi muttailla..

edit: hmms. ainaki se että funktiossa ollaan aarghh
ja siis..argum. nimet..ei isp yms. -pitipä marista muka.jo heti.

siis katsotaan..myöhemmin!!!
edit: siis swiikille kiitokset! (lets asia later)

sqwiik [28.11.2003 19:32:15]

#

Hups... sen siitä saa kun kirjoittaa koodia ilman kääntäjää.

void kuvio(int korkeus, char * merkki){
int k,ssp,usp,z; /* ssp=sisäspacet, usp=ulkospacet, z=apumuuttuja*/
  usp = korkeus-1; /* Tämän voit tarkistaa vaikka piirtämällä paperille; pätee aina */
  ssp = korkeus-2; /* Kuin myös tämän :)*/
  for(k=0;k<korkeus;k++){
    for(z=0;z<usp;z++)cout<<" ";
    cout<<merkki;
    /* Tässä hauskaa... muuntele ja opi. */
    for(z=0;z<ssp;z++)
      if(k==0||k==korkeus-1)cout<<merkki; else cout<<" ";
    cout<<merkki;
    for(z=0;z<usp;z++)cout<<" ";
    /* Kun etenemme alaspäin tätä pyramiidia, niin usp pienenee
       yhdellä ja ssp suurenee KAHDELLA... Miksi? Mieti sitä.*/
    usp--; ssp+=2;
    cout<<endl;
  }
}

cloudi [28.11.2003 20:16:24]

#

C:\Ratol1\kuvio_swiik.cpp(10) : error C2664: 'kuvio' : cannot convert parameter 2 from 'const char' to 'char *'
- eli osoitin, mut en ymmärrä niist mitään.vaikka pitäisi.

on suorastaan v--stä olla etis-opiskelija. ellei ny satu tilanne oleen niin et: hyvii frentsei, oot nuori ja himas jen. ja aloitat nuorena kaiken etsimisen(tajuat tiedonjanosi ja mitä haet) MINKÄ tiedät vahvasti kiinnostavan.. josta voit pykästä ittes ain eteenpäin. Käsitys on en monet näis Ohjelmointiputkan jäsenist on iha upeita, ja selkeesti niil on tulevaisuudenammatti ohejelmointi taval taik toisel.
-meikä ei oo niin nuori ku te, mutta hokasin sen kiinnostuksen..et mikä olisi mun-juttu. ..vastny, ja voinen olla rasittavan .. something. mut kiinnostunu sikana ja sitkeä. sorii !

edit: allaoleva: swiikin vastaus enne tätä mun viestiä!

sqwiik [28.11.2003 20:20:44]

#

Kutsutaan seuraavasti: kuvio(5, "*"); Huomaa _lainausmerkit_, heittomerkkien '*' käyttö johtaa virheeseen.

Edit: vastaus yläpuolisen muokkaukseen: Älä sure. Ihminen oppii. Olen miltei 20, ja aloitin koodauksen 3 vuotta sitten QB:llä. Nyt väsään engineä C-kielelle.

cloudi [28.11.2003 20:52:28]

#

C:\Ratol1\kuvio_swiik.cpp(10) : error C2664: 'kuvio' : cannot convert parameter 2 from 'const int' to 'char *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

-ja ookke. kiitän sua vastauksesta. mä oon vast ruvennu opisk. niit' hiivatin *osoitin asioita, ja jos noi kuulema jumartaa ni "hiitsi pääsee irti".
-ei vaik muka jummartas et *p on kokonaisluvun osoitteeseen, ei sen arvoon -tieto, niin mitä faksia sillä on merkitystä ja tietoa en ymmärrä.
-eli jos joku mies kattois että se naine on se kaikist mahtis joka asuu Iikskadulla, ja kun se nainen muuttaa veke sieltä, niin se mies silti soittaa tms. (ja o-soittaa) vaan faksisti se sinne entiseen Iikskadulle (o-soittaa) -ja siel saattaa olla vastassa vaikka mitä. -näin olen kässiny tämän asian!
-ja osoitin voi: sekoittaa siis millä tavalla koneen (ja muistin ja kaikki)?
(ja sqwiik testaan jutskaasi huomen, olen nyt viihteellä hieman.. iiks..)

cloudi [30.11.2003 00:33:03]

#

piti nyt kuitenki nousta ylös ja aukasta kone...
no kuvio pelittää!
thanks viel kerran avusta! otin pois osoitin-homman...

cloudi [30.11.2003 00:41:05]

#

ja pelittäähä se osoittimen kanssa myös! ku laitoin kutsuun kiltisti lainausmerkit "*" (että ei: '*')

-hohhoijaa tässähän ollaa ihan herättyki jopa =)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta