0

Hi! I have this kind of project and im really needing help for it. The compiling and print have to be a spiral matrix. it must start in the center and then move to the right and then up and then to the left, making a spiral. I have to introduce an initial and final value. the initial value must be in the center and the final value would be the end of the spiral.
Like this
initial Value = 4
final Value = 18

      4   5   6
  14  15  16  7
  13  18  17  8
  12  11  10  9

Code:

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

void main()
{
    int m[20][20],i,j;
    int lc,hc,lr,hr,r,c,cnt;    
    clrscr();
    printf("\nEnter r & c :");
    scanf("%d %d",&r,&c);
    cnt = 1;
    lr = 0; lc = 0;
    hr = r - 1;
    hc = c - 1;
    while ( lr <=hr && lc <= hc )
    {
        i = lr;
        for(j=lc;j <= hc;j++)
        {
            m[i][j] = cnt++;    
            j = hc;
            for(i=lr+1;i<=hr;i++)
            {
                m[i][j] = cnt++;    
                if( lr != hr )
                {
                    i = hr;
                    for(j=hc-1;j>=lc;j--)
                    m[i][j] = cnt++;
                }   
                if ( lc != hc )
                {
                    j = lc;
                    for(i=hr-1;i>lr;i--)
                    m[i][j] = cnt++;
                }
            }
        }
        lr++;lc++;
        hr--;hc--;
    }//while    
    printf("\nSpirally filled matrix is\n");
    for(i=0;i < r;i++)
    {
        for(j=0;j < c;j++)
        {
            printf("%4d",m[i][j]);
            printf("\n");
        }       
    }
} // main

I have this program but isnt runnig well. Please please help

Edited by deceptikon: Fixed example formatting

3
Contributors
3
Replies
42
Views
4 Years
Discussion Span
Last Post by jose.a.rueda.5
0

Your example does not match what you said should be the pattern.

it must start in the center and then move to the right and then up and then to the left, making a spiral.

Yet your example starts at the top and moves right and down, as in:

      4   5   6
  14  15  16  7
  13  18  17  8
  12  11  10  9
0

ok now i figured that out. youre right.
it would be like this:
initial number = 4
final number = 18

      18  17  16
  8   7   6   15
  9   4   5   14
  10  11  12  13
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.