سلام، خسته نباشید. کسی میتونه این سوال حل کنه؟ با ارایه و با زبانc - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

سلام، خسته نباشید. کسی میتونه این سوال حل کنه؟ با ارایه و با زبانc

0 امتیاز
این برنامه یک ورودی n دریافت کرده
بین یک تا پنج و ماتریسی ساخته و به ترتیب عدد برای مقدار دادن به هرکدام از خانههای آرایه میگیرد. یک
حلزون از خانه شروع کرده و به صورت حلزونی و ساعتگرد ماتریس را دور میزند تا به درونیترین نقطه ماتریس برسد. حلزون در این راه هر
خانه که جلو میرود، عددها را جمع میکند. هرگاه این مجموع، مربع کامل بود، برای او حکم یک امتیاز دارد که ما در خروجی برنامه مجموع این
امتیازها را میخواهیم.
سوال شده فروردین 11, 1402 بوسیله ی Mohseni  

1 پاسخ

+2 امتیاز
 
بهترین پاسخ
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>

#define MAX_SIZE 5

int main()
{
    printf("Enter n: ");
    int n;
    scanf("%d", &n);

    if (n >= 1 && n <= MAX_SIZE)
    {
        int c1 = 0, c2 = n - 1, k = 1, mark = 0;
        int spiralMatrix[MAX_SIZE][MAX_SIZE];
        bool flag = true;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                scanf("%d", &spiralMatrix[i][j]);
                if (spiralMatrix[i][j] >= 100)
                {
                    printf("error!!\n");
                    flag = false;
                    break;
                }
            }
            if (!flag)
            {
                break;
            }
        }

        if (flag)
        {
            if (spiralMatrix[0][0] == 1)
            {
                mark++;
            }

            while (k <= n * n)
            {
                for (int i = c1; i <= c2; i++)
                {
                    if (i != 0)
                    {
                        spiralMatrix[c1][i] += spiralMatrix[c1][i - 1];
                        if (!(sqrt(spiralMatrix[c1][i]) - (int)sqrt(spiralMatrix[c1][i])) == 0)
                        {
                            mark++;
                        }
                    }
                    k++;
                }

                for (int j = c1 + 1; j <= c2; j++)
                {
                    spiralMatrix[j][c2] += spiralMatrix[j - 1][c2];
                    if (!(sqrt(spiralMatrix[j][c2]) - (int)sqrt(spiralMatrix[j][c2])) == 0)
                    {
                        mark++;
                    }
                    k++;
                }

                for (int i = c2 - 1; i >= c1; i--)
                {
                    spiralMatrix[c2][i] += spiralMatrix[c2][i + 1];
                    if (!(sqrt(spiralMatrix[c2][i]) - (int)sqrt(spiralMatrix[c2][i])) == 0)
                    {
                        mark++;
                    }
                    k++;
                }

                for (int j = c2 - 1; j >= c1 + 1; j--)
                {
                    spiralMatrix[j][c1] += spiralMatrix[j + 1][c1];
                    if (!(sqrt(spiralMatrix[j][c1]) - (int)sqrt(spiralMatrix[j][c1])) == 0)
                    {
                        mark++;
                    }
                    k++;
                }

                c1++;
                c2--;

                if (k > n * n)
                {
                    break;
                }
            }

            printf("\n\n\n");
            printf("mark is: %d\n", mark);
            printf("\n\n\n");
        }
    }
    else
    {
        printf("error!!\n");
    }

    return 0;
}

 

پاسخ داده شده فروردین 11, 1402  بوسیله ی toopak (امتیاز 2,458)   16 48 66
انتخاب شد شهریور 8, 1402 بوسیله ی farnoosh
...