cannot declare an array in c with a variable value












0















I am trying to create a program to generate magic square by a given value of n in C language.
here is the code



#include<stdio.h> 
#include<string.h>

// A function to generate odd sized magic squares
void generateSquare(int n)
{
int magicSquare[n][n];

// set all slots as 0
memset(magicSquare, 0, sizeof(magicSquare));

// Initialize position for 1
int i = n/2;
int j = n-1;

// One by one put all values in magic square
for (int num=1; num <= n*n; )
{
if (i==-1 && j==n) //3rd condition
{
j = n-2;
i = 0;
}
else
{
// 1st condition helper if next number
// goes to out of square's right side
if (j == n)
j = 0;

// 1st condition helper if next number
// is goes to out of square's upper side
if (i < 0)
i=n-1;
}
if (magicSquare[i][j]) //2nd condition
{
j -= 2;
i++;
continue;
}
else
magicSquare[i][j] = num++; //set number

j++; i--; //1st condition
}

// Print magic square
printf("The Magic Square for n=%d:nSum of "
"each row or column %d:nn", n, n*(n*n+1)/2);
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%3d ", magicSquare[i][j]);
printf("n");
}
}

// Driver program to test above function
int main()
{
int n = 7; // Works only when n is odd
generateSquare (n);
return 0;
}


while compiling the program in turbo c compiler i get the following errors




line 7 constant expression required



line 13 declaration not allowed here



line 14 declaration not allowed here



undefined symbol num




the program works well if i run it as a c++ file but it shows errors as a c program










share|improve this question




















  • 4





    You need a C compiler that supports C99. Turbo C is way too old.

    – Paul R
    Nov 13 '18 at 16:24








  • 2





    VLAs were introduced in C99. Your compiler is probably too old to support that language standard.

    – Swordfish
    Nov 13 '18 at 16:24


















0















I am trying to create a program to generate magic square by a given value of n in C language.
here is the code



#include<stdio.h> 
#include<string.h>

// A function to generate odd sized magic squares
void generateSquare(int n)
{
int magicSquare[n][n];

// set all slots as 0
memset(magicSquare, 0, sizeof(magicSquare));

// Initialize position for 1
int i = n/2;
int j = n-1;

// One by one put all values in magic square
for (int num=1; num <= n*n; )
{
if (i==-1 && j==n) //3rd condition
{
j = n-2;
i = 0;
}
else
{
// 1st condition helper if next number
// goes to out of square's right side
if (j == n)
j = 0;

// 1st condition helper if next number
// is goes to out of square's upper side
if (i < 0)
i=n-1;
}
if (magicSquare[i][j]) //2nd condition
{
j -= 2;
i++;
continue;
}
else
magicSquare[i][j] = num++; //set number

j++; i--; //1st condition
}

// Print magic square
printf("The Magic Square for n=%d:nSum of "
"each row or column %d:nn", n, n*(n*n+1)/2);
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%3d ", magicSquare[i][j]);
printf("n");
}
}

// Driver program to test above function
int main()
{
int n = 7; // Works only when n is odd
generateSquare (n);
return 0;
}


while compiling the program in turbo c compiler i get the following errors




line 7 constant expression required



line 13 declaration not allowed here



line 14 declaration not allowed here



undefined symbol num




the program works well if i run it as a c++ file but it shows errors as a c program










share|improve this question




















  • 4





    You need a C compiler that supports C99. Turbo C is way too old.

    – Paul R
    Nov 13 '18 at 16:24








  • 2





    VLAs were introduced in C99. Your compiler is probably too old to support that language standard.

    – Swordfish
    Nov 13 '18 at 16:24
















0












0








0








I am trying to create a program to generate magic square by a given value of n in C language.
here is the code



#include<stdio.h> 
#include<string.h>

// A function to generate odd sized magic squares
void generateSquare(int n)
{
int magicSquare[n][n];

// set all slots as 0
memset(magicSquare, 0, sizeof(magicSquare));

// Initialize position for 1
int i = n/2;
int j = n-1;

// One by one put all values in magic square
for (int num=1; num <= n*n; )
{
if (i==-1 && j==n) //3rd condition
{
j = n-2;
i = 0;
}
else
{
// 1st condition helper if next number
// goes to out of square's right side
if (j == n)
j = 0;

// 1st condition helper if next number
// is goes to out of square's upper side
if (i < 0)
i=n-1;
}
if (magicSquare[i][j]) //2nd condition
{
j -= 2;
i++;
continue;
}
else
magicSquare[i][j] = num++; //set number

j++; i--; //1st condition
}

// Print magic square
printf("The Magic Square for n=%d:nSum of "
"each row or column %d:nn", n, n*(n*n+1)/2);
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%3d ", magicSquare[i][j]);
printf("n");
}
}

// Driver program to test above function
int main()
{
int n = 7; // Works only when n is odd
generateSquare (n);
return 0;
}


while compiling the program in turbo c compiler i get the following errors




line 7 constant expression required



line 13 declaration not allowed here



line 14 declaration not allowed here



undefined symbol num




the program works well if i run it as a c++ file but it shows errors as a c program










share|improve this question
















I am trying to create a program to generate magic square by a given value of n in C language.
here is the code



#include<stdio.h> 
#include<string.h>

// A function to generate odd sized magic squares
void generateSquare(int n)
{
int magicSquare[n][n];

// set all slots as 0
memset(magicSquare, 0, sizeof(magicSquare));

// Initialize position for 1
int i = n/2;
int j = n-1;

// One by one put all values in magic square
for (int num=1; num <= n*n; )
{
if (i==-1 && j==n) //3rd condition
{
j = n-2;
i = 0;
}
else
{
// 1st condition helper if next number
// goes to out of square's right side
if (j == n)
j = 0;

// 1st condition helper if next number
// is goes to out of square's upper side
if (i < 0)
i=n-1;
}
if (magicSquare[i][j]) //2nd condition
{
j -= 2;
i++;
continue;
}
else
magicSquare[i][j] = num++; //set number

j++; i--; //1st condition
}

// Print magic square
printf("The Magic Square for n=%d:nSum of "
"each row or column %d:nn", n, n*(n*n+1)/2);
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%3d ", magicSquare[i][j]);
printf("n");
}
}

// Driver program to test above function
int main()
{
int n = 7; // Works only when n is odd
generateSquare (n);
return 0;
}


while compiling the program in turbo c compiler i get the following errors




line 7 constant expression required



line 13 declaration not allowed here



line 14 declaration not allowed here



undefined symbol num




the program works well if i run it as a c++ file but it shows errors as a c program







c






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 13 '18 at 17:42









Pete Becker

57.6k440117




57.6k440117










asked Nov 13 '18 at 16:19









NotNitinNotNitin

61




61








  • 4





    You need a C compiler that supports C99. Turbo C is way too old.

    – Paul R
    Nov 13 '18 at 16:24








  • 2





    VLAs were introduced in C99. Your compiler is probably too old to support that language standard.

    – Swordfish
    Nov 13 '18 at 16:24
















  • 4





    You need a C compiler that supports C99. Turbo C is way too old.

    – Paul R
    Nov 13 '18 at 16:24








  • 2





    VLAs were introduced in C99. Your compiler is probably too old to support that language standard.

    – Swordfish
    Nov 13 '18 at 16:24










4




4





You need a C compiler that supports C99. Turbo C is way too old.

– Paul R
Nov 13 '18 at 16:24







You need a C compiler that supports C99. Turbo C is way too old.

– Paul R
Nov 13 '18 at 16:24






2




2





VLAs were introduced in C99. Your compiler is probably too old to support that language standard.

– Swordfish
Nov 13 '18 at 16:24







VLAs were introduced in C99. Your compiler is probably too old to support that language standard.

– Swordfish
Nov 13 '18 at 16:24














1 Answer
1






active

oldest

votes


















1














You are probably using TurboC.



TurboC uses an outdated compiler of C language. It supports Borland Compiler . It was preferable when windows Xp was in trend. It has now become obsolete.



Use latest gcc or g++ instead.



You may shift to Ubuntu or Mac



or can try CodeBlocks for Windows.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53285234%2fcannot-declare-an-array-in-c-with-a-variable-value%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    You are probably using TurboC.



    TurboC uses an outdated compiler of C language. It supports Borland Compiler . It was preferable when windows Xp was in trend. It has now become obsolete.



    Use latest gcc or g++ instead.



    You may shift to Ubuntu or Mac



    or can try CodeBlocks for Windows.






    share|improve this answer




























      1














      You are probably using TurboC.



      TurboC uses an outdated compiler of C language. It supports Borland Compiler . It was preferable when windows Xp was in trend. It has now become obsolete.



      Use latest gcc or g++ instead.



      You may shift to Ubuntu or Mac



      or can try CodeBlocks for Windows.






      share|improve this answer


























        1












        1








        1







        You are probably using TurboC.



        TurboC uses an outdated compiler of C language. It supports Borland Compiler . It was preferable when windows Xp was in trend. It has now become obsolete.



        Use latest gcc or g++ instead.



        You may shift to Ubuntu or Mac



        or can try CodeBlocks for Windows.






        share|improve this answer













        You are probably using TurboC.



        TurboC uses an outdated compiler of C language. It supports Borland Compiler . It was preferable when windows Xp was in trend. It has now become obsolete.



        Use latest gcc or g++ instead.



        You may shift to Ubuntu or Mac



        or can try CodeBlocks for Windows.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 13 '18 at 17:57









        Sahil SinghSahil Singh

        286




        286






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53285234%2fcannot-declare-an-array-in-c-with-a-variable-value%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Full-time equivalent

            Bicuculline

            さくらももこ