8 svar
101 visningar
CsharpStudent behöver inte mer hjälp
CsharpStudent 80
Postad: 21 apr 2023 14:09

Koordinater övning varför blir kolumn 4?

/*Hej jag övar inför ett antagningsprov och har här facit på uppgiften.
Skriv ett program som skriver ut följande rektanglar på konsolen med hjälp av loopar:
Jag har skrivit ut koordinater och får det till 4 rader och 8 kolumner och förstår därför inte varför x bara går upp till 4.
dvs for (int x = 0; x < 4; x++).
Jag har testat koden och den stämmer ju men jag förstår inte hur. Jag skulle vara tacksam om någon här kunde förklara.*/




   //##------ //0,0 //0,1    //4 rader och 8 kolumner
   //--##---- //1,2 //1,3
   //----##-- //2,4 //2,5
   //------## //3,6 //3,7

            for (int y = 0; y < 4; y++) //Rad startar på 0, om Rad är mindre än 4 fortsätt
            {
                for (int x = 0; x < 4; x++) //Kolumn startar på 0, varför bara upp till 4?
                {
                    if ((y == x))
                        Console.Write("##");

                    else
                        Console.Write("--");
                }
                Console.WriteLine("");
            }
            Console.ReadKey();
Laguna Online 30704
Postad: 21 apr 2023 14:28

Du skriver ju två tecken varje gång i loopen.

CsharpStudent 80
Postad: 21 apr 2023 15:04

Förlåt men jag förstår inte. Här har vi en jag gjort tidigare och den förstår jag, eftersom där är 8 kolumner skriver jag ju column < 8; column++

            //#-------  //Rad 0, kolumn 0    //Hela har 4 rader och 8 kolumner
            //-#------  //Rad 1, kolumn 1    //Vi kan se att om x=y blir det #
            //--#-----  //Rad 2, kolumn 2
            //---#----  //Rad 3, kolumn 3
          
            for (int row = 0; row < 4; row++) //Här skapar jag en for loop som går
                                              //igenom raderna från 0 - 4
            {
           for (int column = 0; column < 8; column++) //Här skapar jag en for loop som går
                                                      //igenom kolumnerna 0 - 8
                {
                    if (column == row) //OM column är lika med row
                        Console.Write("#"); //Skriver den ut ett pound sign "#"
                    else
                        Console.Write("-"); //ANNARS när kolumn inte är lika med rad
                                            //skriver den ut -
                }
                Console.WriteLine(""); //Assignar en tom Console.WriteLine för radbrytning
            }
            Console.ReadKey(true); //Pausar program

CsharpStudent 80
Postad: 21 apr 2023 15:06

Jaja du menar att den skriver ut ## men det förklarar inte varför column inte ska vara 8?

Laguna Online 30704
Postad: 21 apr 2023 15:11

Du får betrakta kolumnerna som två tecken breda, om du vill tänka på x som kolumnnumret.

Det finns inget som säger att det måste finnas en variabel som går från 0 till 7 bara för att det är 8 teckenkolumner.

Peter_ 470 – Avstängd
Postad: 24 apr 2023 17:00

for (int x = 0; x < 4; x++) innebär att x startar på 0, nästa varv blir x 1, sedan 2 & 3. Därefter blir x == 4 och då stämmer inte villkoret att x ska vara mindre än 4 och då avslutas loopen med x == 4.

Förstår du?

CsharpStudent 80
Postad: 24 apr 2023 17:58 Redigerad: 24 apr 2023 17:59
Peter_ skrev:

for (int x = 0; x < 4; x++) innebär att x startar på 0, nästa varv blir x 1, sedan 2 & 3. Därefter blir x == 4 och då stämmer inte villkoret att x ska vara mindre än 4 och då avslutas loopen med x == 4.

Förstår du?

Hej, jag hade mest svårt att förstå varför det är 4 och inte 8, eftersom det är 8 kolumner och inte 4 kolumner. Men personen förklarade ovan att jag ska tänka att ## räknas som en kolumn, eftersom den skriver ut 2 tecken ihop. Om jag förstod rätt.

CsharpStudent 80
Postad: 24 apr 2023 18:03
Peter_ skrev:

for (int x = 0; x < 4; x++) innebär att x startar på 0, nästa varv blir x 1, sedan 2 & 3. Därefter blir x == 4 och då stämmer inte villkoret att x ska vara mindre än 4 och då avslutas loopen med x == 4.

Förstår du?

Kan du hjälpa mig förstå vad modulo gör här? jag förstod modulo som att den testar att dela.

 //#-#-  //0,0  //0,2     //4 rader och 4 kolumner
            //-#-# //1,1   //1,3
            //#-#- //2,0   //2,2
            //-#-# //3,1   //3,3

            for (int row = 0; row < 4; row++) //
            {
                for (int column = 0; column < 4; column++)
                {
                    if ((row + column) % 2 == 0) //OM rad + kolumn modulo (dela med) 2=0
						//Men tex 3+3=6 6/2=3 inte 0. Förstår ej
                    {
                        Console.Write("#"); //Skriv ut #
                    }
                    else //ANNARS
                    {
                        Console.Write("-"); //Skriv ut -
                    }
                }
                Console.WriteLine();
            }
            Console.ReadKey(true);
Peter_ 470 – Avstängd
Postad: 25 apr 2023 08:16 Redigerad: 25 apr 2023 08:17

Modulo är resten efter en division. Om du delar 5 med 2 får du 2 som kvot och 1 som rest (=modulo).
Dvs: 5 % 2 -> 1.

8 % 2 = 0 (ingen rest)

Svara
Close