Click here to Skip to main content
15,890,438 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
My code should print a box with top left, and bottom right corners as '/', and top right and bottom left corners as '\', and the top and bottom rows as '*', and the sides as '|'. And I want to fill all the area in between with space.
But it is just printing the top row, and then it starts to print infinite spaces.

What I have tried:

<pre>#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int h = 30, w = 70;

void disp()
{
    system("cls");
    int i, j;
    for (i = 0; i <= h; i++)
    {
        for (j = 0; i <= w; j++)
        {
            if ((i==0 && j==0) || (i==h && j==w))
            {
                printf("/");
            }
            else if ((i==0 && j==w) || (i==h && j==0))
            {
                printf("\\");
            }
            else if ((i==0 && j<=w) || (i==h && j<=w))
            {
                printf("*");
            }
            else if ((j==0 && i<=h) || (j==w && i<=h))
            {
                printf("|");
            }
            else if (i==0 || i==h || j==0 || j==w)
            {
                printf(" ");
            }
            
            
        }
    }
}

int main()
{
    disp();

    return 0;
}
Posted
Updated 11-Sep-22 12:27pm

You have for (j = 0; i <= w; j++). The i in this expression should probably be a j.

But this highlights one of the issues of using single character variable names. If you had used row, and column and height and width, you probably would not have made this mistake to begin with.
 
Share this answer
 
Quote:
C code for printing a box not working

Did you forgot the new lines ?
C++
<pre>#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int h = 30, w = 70;

void disp()
{
    system("cls");
    int i, j;
    for (i = 0; i <= h; i++)
    {
        for (j = 0; j <= w; j++) // Correction from Solution 1
        {
            ...
        }
        printf("\n"); // The new lines
    }
}

int main()
{
    disp();

    return 0;
}


Your code do not behave the way you expect, or you don't understand why !

There is an almost universal solution: Run your code on debugger step by step, inspect variables.
The debugger is here to show you what your code is doing and your task is to compare with what it should do.
There is no magic in the debugger, it don't know what your code is supposed to do, it don't find bugs, it just help you to by showing you what is going on. When the code don't do what is expected, you are close to a bug.
To see what your code is doing: Just set a breakpoint and see your code performing, the debugger allow you to execute lines 1 by 1 and to inspect variables as it execute.

Debugger - Wikipedia, the free encyclopedia[^]

Mastering Debugging in Visual Studio 2010 - A Beginner's Guide[^]
Basic Debugging with Visual Studio 2010 - YouTube[^]

1.11 — Debugging your program (stepping and breakpoints) | Learn C++[^]

The debugger is here to only show you what your code is doing and your task is to compare with what it should do.
 
Share this answer
 
Comments
Everything Select 11-Sep-22 18:10pm    
Thanks bro, and also, HOWS DID I NOT GOT TO KNOW ABOUT THE DEBUGGER BY NOW
Patrice T 11-Sep-22 18:35pm    
Ask your teacher.
As k5054 and Patrice had already noted, the for loop with the j is faulty, the newline is missing at the end of each line and the last else is also wrong and also superfluous.
C
//else if (i == 0 || i == h || j == 0 || j == w)
else
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month


CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900