Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C# ja neliön tulostus for-loopilla

Sivun loppuun

Tinketti [20.09.2012 10:07:50]

#

Mitenkähän onnistuu tämmöinen tehtävä?

Tee ohjelma, joka pyytää kaksi positiivista kokonaislukua: leveys ja korkeus. Tulosta lukujen perusteella suorakulmio. Käytä for-luuppia.
Esimerkkitulostus

Anna leveys: 5
Anna korkeus: 3
*****
*****
*****

Olen saanut aikaiseksi alla olevan, mutta tähtiä ei näy.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {


            int luku1 = 0;
            int luku2 = 0;


            Console.Write("Anna leveys: ");
            luku1 = int.Parse(Console.ReadLine()); ;

            Console.Write("Anna korkeus: ");
            luku2 = int.Parse(Console.ReadLine()); ;



            for (int i = 0; i == luku1; i++)
            {
                Console.Write("*");

            }
             for (int i = 0; i == luku2; i++)
            {
                Console.Write("*");

            }
            }
        }
    }

vuokkosetae [20.09.2012 11:22:28]

#

for (alkutilanne; tehdään niin kauan tämä on tosi; kierroksen lopuksi)

Macro [20.09.2012 12:12:32]

#

for(int i = 0; i < korkeus; i++) {
	for(int j = 0; j < leveys; j++) {
		Console.Write("*");
	}

    Console.Write("\n");
}

Mahtaako riveillä 19 ja 22 olla ylimääräiset puolipisteet?

Grez [20.09.2012 17:04:24]

#

Macro kirjoitti:

Console.Write("\n");

Pitäisin tyylikkäämpänä ja toimivampana:

Console.WriteLine();

Macro [20.09.2012 17:29:40]

#

Voi olla, ei ole kokemusta C#:sta :)

Tinketti [21.09.2012 21:19:10]

#

Molemmat toimii, kiitos kumminkin!

Tinketti [24.09.2012 10:02:32]

#

Milläs tavalla tuo hoidetaan Do Whilella? Menossa olisi C# etäkurssi, mutta opettajassa on hiukan "natsin" elkeitä, eli ei voi kunnolla neuvoa. Oon pähkäillyt tuota jo suht pitkään.

tneva82 [24.09.2012 10:13:54]

#

int width = 0;
int length = 0;


Console.Write("Anna leveys: ");
width = int.Parse(Console.ReadLine()); ;

Console.Write("Anna korkeus: ");
length = int.Parse(Console.ReadLine()); ;
int j=0;

do {
   int i=0;
   do {
     Console.Write("*");
     i++;
   }while(i<width)
   Console.Write("\n");
   j++;
} while(j<length)

Jonkinsortin ajatus. Syntaksi varmaan pielessä kun en jaksanu kaivella c# do while syntakstia.

Mod. korjasi kooditagit!

jalski [24.09.2012 11:08:53]

#

Tinketti kirjoitti:

Milläs tavalla tuo hoidetaan Do Whilella? Menossa olisi C# etäkurssi, mutta opettajassa on hiukan "natsin" elkeitä, eli ei voi kunnolla neuvoa.

Käskikös tuo opettaja myös lisätä syötteen tarkistuksen? Kaikista silmukoista Do While on varmaankin yleisesti vähiten käytetty ja tähän harjoitteeseen ainakin kohtuullisen huono valinta.

Vihjeeksi, että mieti toimiiko oikein, jos ohjelman saamat syötteet eivät olekaan positiivisia kokonaislukuja?

Tinketti [24.09.2012 12:28:58]

#

Sitä ei käskenyt. Eikös se menisi silloin uint:inä, jolloin voi käyttää vaan positiivisiä lukuja?

jalski [24.09.2012 12:34:59]

#

Tinketti kirjoitti:

Eikös se menisi silloin uint:inä, jolloin voi käyttää vaan positiivisiä lukuja?

Ja nollaa...

Tinketti [24.09.2012 13:09:17]

#

Niin sekin tietysti mukana.

Grez [24.09.2012 18:52:23]

#

jalski kirjoitti:

Kaikista silmukoista Do While on varmaankin yleisesti vähiten käytetty ja tähän harjoitteeseen ainakin kohtuullisen huono valinta.

No eikös for -looppi for(a;b;c) { d } ole olennaisesti a; do { d; c; } while (b)

tneva82 [25.09.2012 11:33:34]

#

Grez kirjoitti:

jalski kirjoitti:

Kaikista silmukoista Do While on varmaankin yleisesti vähiten käytetty ja tähän harjoitteeseen ainakin kohtuullisen huono valinta.

No eikös for -looppi for(a;b;c) { d } ole olennaisesti a; do { d; c; } while (b)

Onhan se mutta vähän erikoisempi ratkaisu tähän tilanteeseen. Yleensä tuo tehdään for loopeilla. do...while loopeille on omat käyttökohteensa.

jlaire [25.09.2012 12:14:42]

#

Grez kirjoitti:

No eikös for -looppi for(a;b;c) { d } ole olennaisesti a; do { d; c; } while (b)

for (;0;) { exit() }  ≠ do { exit() } while (0)

Melkein vastaava do-while olisi esim. a; if (b) { do { d; c; } while (b); }

jalski [25.09.2012 13:50:25]

#

jlaire kirjoitti:

Melkein vastaava do-while olisi esim. a; if (b) { do { d; c; } while (b); }

Nuo rimpsut saavat silmät särkemään... ;-)

Lähinnä meinasin yksinkertaisesti vain sitä, että:

While-looppi:
-ehto testataan silmukan alussa.

Do While-looppi:
-ehto testataan silmukan lopussa
-normaalisti suoritetaan aina vähintään kerran, mikä monessa tapauksessa saattaa olla yhden kerran liikaa.


Sivun alkuun

Vastaus

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

Tietoa sivustosta