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();
Du skriver ju två tecken varje gång i loopen.
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
Jaja du menar att den skriver ut ## men det förklarar inte varför column inte ska vara 8?
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.
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?
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.
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);
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)