Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Tähtineliön tulostaminen

koriander [17.09.2011 14:58:14]

#

Olen vasta aloittanut ohjelmoinnin ja minulla on ongelma kurssimateriaalista löytyvässä lisätehtävässä, jossa pitää antaa luku, jonka jälkeen ohjelma tulostaa tähdistä tehdyn neliön, jonka sivun pituus on annettu luku.

Sain ohjelman toimimaan, mutta vasta kun olin lisännyt tarpeeksi muuttujia, joilla saan ulommaisen do whilen toimimaan. Tuntuu kuitenkin turhalta tehdä tämä kolmella eri "luku" muuttujalla, joten olisiko tätä mahdollista tehdä käyttämättä taulukoita (en osaisikaan) vain yhdellä muuttujalla... luulisin että oon tehnyt tästä nyt turhan monimutkaisen ja että ohjelman saisi tehtyä esim vain yhdellä "luvulla" ja do while rakenteella.

anteeksi äidinkielen taitoni.. pitkästä aikaa koulun penkillä

#include<stdio.h>

int main (void)
{
    int luku,luku2,luku3;

    printf("luku: ");
    scanf("%d",&luku);

    luku2=luku;
    luku3=luku;

    printf("\n");

    do
    {
                 printf("\n");
                 do
                   {
                        printf("*");
                        luku--;
                   }while(luku>0);

                 luku=luku3;
                 luku2--;

    }while(luku2>0);

    printf("\n\n");

    system("pause");
}

Teuro [17.09.2011 15:07:08]

#

Kelpaako tällainen versio koodistasi.

#include<stdio.h>

int main (void) {
    int luku, i, j;

    printf("anna luku: ");
    scanf("%d",&luku);

    printf("\n");

    for (i = 0; i < luku; ++i) {
        for (j = 0; j < luku; ++j) {
            printf("*");
        }
        printf("\r\n");
    }

    return 0;
}

koriander [17.09.2011 15:16:31]

#

Tuo kai olisi se oikeaoppinen vastaus, mutta eikö tuo nyt ole taulukolla toteutettu? Siis noinhan se menisi - kunhan pähkäilin omaksi opiksi tuolla do while hommalla tuota tehtävää että onnistuisiko sitä yksinkertaistamaan.

Kiitos kuitenki vastauksesta ja mukavan yksinkertainen esimerkki 2-ulotteisesta taulukosta.. käyn tätä threadia vielä varmasti vilkuilemassa myöhemmin, kun nuihin päästään koulussa :)

mut siis ei onnistu do whileä tuosta yksinkertaistamaan? en ainakaan osannut tehdä tuota kahdella muuttujalla (onko tuo edes oikea termi niille) - vaan tulosti vajaan ylösalaisin olevan pyramidin.

Metabolix [17.09.2011 15:19:39]

#

Miten niin taulukolla? For-silmukalla ei ole mitään tekemistä taulukoiden kanssa. For-silmukka ja while-silmukka tekevät aivan saman asian, kuten oppaassani havainnollisesti selitetään.

koriander [17.09.2011 15:26:40]

#

aha niinpä näyttää... en koskaan oo tota foria kunnolla kässännyt.. jos nyt oikein ymmärsin niin yksinkertaistettuna for on alkuehtoinen ja while loppuehtoinen toistorakenne?

Spongi [17.09.2011 15:33:32]

#

Joo, do { ... } while(ehto) suoritetaan vähintään kerran. while(ehto) { ... } ei pakosta mene läpi kertaakaan.

koriander [17.09.2011 15:36:04]

#

okei kiitos paljon vastauksista! oli iso apu :)

Vastaus

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

Tietoa sivustosta