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"); }
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; }
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.
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.
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?
Joo, do { ... } while(ehto) suoritetaan vähintään kerran. while(ehto) { ... } ei pakosta mene läpi kertaakaan.
okei kiitos paljon vastauksista! oli iso apu :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.