Nested loop
Hej! Jag försöker skriva en kod där man matar in ett heltal 'height' som då gör att datorn printar ut ett block av # (vertikalt och horisontellt)med det antal man matade in. Alltså, om man matar in height=4 ska man få output:
####
####
####
####
Jag har gjort något fel i min kod men vet inte riktigt vart felet ligger, antar att det ligger i loop då allt annat ser rätt ut.
x=0;
y=0;
space=0;
while(x<height)
{
while (space<height-x-1)
{
printf(" ");
space++;
}
while(y<height)
{
printf("#");
y++;
}
printf("#");
x++;
printf("\n");
}
Såhär blir min output:
Lägg till utskrifter i looparna av de ingående variablerna så kan du följa dem och se vad som går fel.
Också: Det är enklare och tydligare att åstadkomma utskriften med nästade for-loopar, nu är koden svår att följa.
Hej! Tack för tipset, jag vill dock gärna komma med underfund med while-loop även om for-loop blir mer effektivt. Jag raderade delarna som har med space att göra (ska utveckla koden efter #-blocket men råkade lägga in den delen för tidigt). Men nu får jag output:
####
#
#
#
Jag får nu rätt antal rad och kolumn när jag matar in 4 men resterande # printas inte ut? När jag testade koden för y och x för sig blev det rätt ås problemet ligger nog i hur jag har nästat loopen men jag vet inte riktigt hur jag ska ta mig vidare.
Nu ser jag inte senaste versionen men originalkoden ser lite knepig ut.
Varför skrivs # på två ställen? Den andra av dem ser onödig ut.
Du verkar inte nollställa y efter varje rad, det är nog huvudfelet (x används som rad och y som kolumn i koden).
Du verkar inte nollställa y efter varje rad, det är nog huvudfelet (x används som rad och y som kolumn i koden).
Varför ska y nollställas? Är inte problemet ATT y nollställs i min kod?
x=0;
y=0;
while(x<height)
{
while(y<height)
{
printf("#");
y++;
}
printf("#");
x++;
printf("\n");
}
Jag tänkte att det ska finnas kod för # på två ställen eftersom den ena hör till loopen för x (rad) respektive y (kolumn).
När jag matar in input height=4 ger det mig output:
####
#
#
#
Men jag försöker printa
####
####
####
####
Vad vill jag åstadkomma? Jag vill ha n st '#' på en rad:
n = 4;
for (i = 0; i < n; i++)
printf("#");
(Alltid bra att börja från grunden och se att det fungerar).
Vad vill jag nu? Jo, samma sak på lika många rader:
Då skriver jag om programmet med en loop utanför den första ...
Kommer du vidare?
Nu förstår jag, tack för all hjälp!