2
1

তামিম শাহরিয়ার সুবিন ভাইয়ার C প্রোগ্রামিং বইতে প্রোগ্রামিং সমস্যা ১০.২ প্রথমদিকে বুঝতে পারছি না । const ব্যবহার করলে কোডব্লকে এই লেখা টি আসে variably modified at file scope । গুগল করে বুঝলাম #define size 40 এরকম কিছু করতে হবে । কিন্তু আমি বিষয়টা পরিস্কার না । কিভাবে এই সমস্যা টির সমাধান করতে পারি এবং পরিস্কার ধারনা রাখতে পারি?

#include < stdio.h>
#include < math.h>

const int size=40;

int ara[size];

void print_ara()
{

    int i;
    for(i=2;i<size;i++)
    {
        printf("%4d",ara[i]);
    }
    printf("\n");
    for(i=2;i<size;i++)
    {
        printf("-------");
    }
    for(i=2;i<size;i++)
    {
        printf("%4d",i);
    }
    printf("\n\n\n");


}

void sieve()
{
    int i,j,root;
    for(i=2;i<size;i++)
    {
        ara[i]=1;
    }
    root=sqrt(size);
    for(i=2;i<=root;i++)
    {
        if(ara[i]==1)
        {
            for(j=2;i*j<=size;j++)
            {
                ara[i*j]=0;
            }
            print_ara();
        }
    }
}

int is_prime(int n)
{
    int i;
    if(n<2)
    {
        return 0;
    }
    return ara[n];
}

int main()
{
    int n,m;
    sieve();
    while(1)
    {
        printf("please enter a number: ");
        scanf("%d",&n);
        if(n==0)
        {
            break;
        }
        if(n>=size)
        {
            printf("this number should be less than %d\n",size);
            continue;
        }
        if(1==is_prime(n))
        {
            printf("%d is a prime number\n",n);
        }
        else
        {
            printf("%d is not a prime number\n",n);
        }
    }
    return 0;
}

asked 29 Nov '15, 15:18

Asaduzzaman%20Sohel's gravatar image

Asaduzzaman Sohel
21213

edited 29 Nov '15, 16:08

Select full code portion and type

Ctrl+K

to make it a standard code format to read.

(29 Nov '15, 15:21) Kaiser Ahmed

আমার codeblock 13.12 with mingw তে ভালভাবেই চলছে । কোন ওয়ার্নিং/মেসেজ/এরর দিচ্ছে না। কোডটি রান করে দেখতে পারেন।

এডিটঃ আমি এই কোডটি C++ এ রান করিয়ে ছিলাম। কোন সমস্যা হয়নি। তবে যখনি C তে রান করালাম এররটা চোখে পড়ল। ধন্যবাদ আপনাকে।

মুলত C language এ const এ "read-only" টাইপের ধরা হয়। এটাই মুল সমস্যার উৎপত্তি করে। এটা "read-only" টাইপের অবজেক্ট হওয়ায় একে [যা আমরা মনে করছি Constant] assign করা ঝামেলার। তাই C তে constant কিছু assign করার হলে অবশ্যয় const এর পরিবর্তে #define ব্যবহার করবো। ধন্যবাদ নতুন কিছু জানতে সুযোগ দেওয়ার জন্য।

লিঙ্কঃ http://c-faq.com/ansi/constasconst.html

#include <stdio.h>
#include <math.h>
#define size 40
int ara[size];
void print_ara()
{
    int i;
    for(i = 2; i < size; i++) {
    printf("%4d", ara[i]);
    }
    printf("\n");
    for(i = 2; i < size; i++) {
    printf("");
    }
    printf("\n");
    for(i = 2; i < size; i++) {
    printf("%4d", i);
    }
    printf("\n\n\n");
}
void sieve()
{
    int i, j, root;
    for(i = 2; i < size; i++) {
    ara[i] = 1;
    }
    root = sqrt(size);
    print_ara();
    for(i = 2; i <= root; i++) {
    if(ara[i] == 1) {
    for(j = 2; i * j <= size; j++) {
    ara[i * j] = 0;
    }
    print_ara();
    }
    }
}
int is_prime(int n)
{
    int i;
    if(n < 2) {
    return 0;
    }
    return ara[n];
}
int main()
{
    int n, m;
    sieve();
    while(1) {
    printf("Please enter a number (enter 0 to exit): ");
    scanf("%d", &n);
    if(n == 0) {
    break;
    }
    if(n >= size) {
        printf("The number should be less than %d\n", size);
        continue;
    }
    if(1 == is_prime(n)) {
        printf("%d is a prime number.\n", n);
    }
    else {
        printf("%d is not a prime number.\n", n);
    }
}
}
permanent link

answered 29 Nov '15, 17:32

Kaiser%20Ahmed's gravatar image

Kaiser Ahmed
3.2k522

edited 29 Nov '15, 19:14

1

না ভাইয়া, একই সমস্যা ।

(29 Nov '15, 18:08) Asaduzzaman Sohel

ধন্যবাদ ভাইয়া আপনাকে ।

(29 Nov '15, 19:37) Asaduzzaman Sohel
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×402
×38
×17

question asked: 29 Nov '15, 15:18

question was seen: 1,055 times

last updated: 29 Nov '15, 19:37