12ਵੀਂ. ਪਾਠ-3, ਪ੍ਰਸ਼ਨ 5, 6, 7


ਪ੍ਰਸ਼ਨ 5: ਨਿਮਨਲਿਖਤ ਕੋਡ ਫੰਕਸ਼ਨ ਦੇ ਸ਼ੁਰੂ ਵਿਚ ਦਿੱਤਾ ਹੈ।  ਜੇਕਰ ਕੋਡ ਵਿਚ ਕੋਈ ਗਲਤੀਆਂ ਹਨ ਤਾਂ ਉਨ੍ਹਾਂ ਦੀ       ਸ਼ਨਾਖਤ ਕਰੋ?
          static int count[]={10,15,20,30;
              float value;

Ans.      ਐਰੇ count ਦੇ ਇੰਸ਼ਲਾਈਜੇਸ਼ਨ ਦੇ ਅੰਤ ਵਿਚ } ਚਿੰਨ੍ਹ ਮੋਜੂਦ ਨਹੀ ਹੈ।  ਸਹੀ ਸਟੇਟਮੈਂਟ ਇਸ ਤਰ੍ਹਾਂ ਹੈ:
          static int count[]={10,15,20,30};


ਪ੍ਰਸ਼ਨ 6: ਨਿਮਨਲਿਖਤ ਵਿੱਚੋ ਗਲਤੀਆਂ ਲੱਭੋ
      
      a)       int g(void)
{
              printf(“Inside this book” C\n”);
              int h(void)
              { printf(“Inside Function h \n”);}
}

Ans. ਉਪਰੋਕਤ ਪ੍ਰੋਗਰਾਮ ਕੋਡ ਵਿਚ printf(“Inside this book” C\n”); ਦੇ ਸਟਰਿੰਗ ਡਾਟਾ ਵਿਚ ਡਬਲ ਕੋਟ (“) ਨੂੰ ਲਿਖਣ ਲਈ \” (Escape Sequence) ਦਾ ਇਸਤੇਮਾਲ ਕਰਨਾ ਪਵੇਗਾ, ਨਹੀ ਤਾਂ ਕੰਪਾਈਲਰ error ਦਿਖਾਵੇਗਾ। ਇਸੇ ਤਰ੍ਹਾਂ int h(void) ਫੰਕਸ਼ਨ ਨੂੰ int g(void) ਦੇ ਅੰਦਰ ਪ੍ਰਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ ਜੋ ਕਿ ਗਲਤ ਹੈ।  ਫੰਕਸ਼ਨ ਨੂੰ ਦੂਸਰੇ ਫੰਕਸ਼ਨ ਦੀ ਬਾਡੀ ਦੇ ਅੰਦਰ ਡਿਕਲੇਅਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਪ੍ਰਭਾਸ਼ਿਤ ਨਹੀ।  ਸਹੀ ਕੋਡ ਇਸ ਤਰ੍ਹਾਂ ਹੋਵੇਗਾ।              
int g(void)
{
          int h(void);
              printf(“Inside this book” C\n”);
              h();
}
int h(void)
{
printf(“Inside Function h \n”);
}





      b)      int sum(int x, int y)
{
              int result;
              result=x+y;
}

Ans. ਉਪਰੋਕਤ ਫੰਕਸ਼ਨ ਕੋਡ ਦੇ ਆਖੀਰ ਵਿੱਚ return ਸਟੇਟਮੈਂਟ ਨਹੀ ਲਿਖੀ ਗਈ ਹੈ, ਜਿਸ ਤੋਂ ਬਿਨ੍ਹਾਂ ਨਤੀਜਾ (result) calling function ਨੂੰ ਵਾਪਸ ਨਹੀ ਭੇਜਿਆ ਜਾ ਸਕਦਾ।

       c)       int sum(int n)
{  if(n==0)
              return 0;
   else
              n+sum(n-1);}

Ans.  ਐਕਸਪ੍ਰੈਸ਼ਨ n+sum(n-1); ਵਿੱਚ ਕੀ-ਵਰਡ return ਨਹੀ ਲਿਖਿਆ ਗਿਆ, ਜਿਸ ਕਰਕੇ ਫੰਕਸ਼ਨ ਨਤੀਜਾ ਵਾਪਸ ਨਹੀ ਭੇਜ ਸਕਦਾ।  ਸਹੀ ਸਟੇਟਮੈਂਟ ਇਸ ਪ੍ਰਕਾਰ ਹੈ: return n+sum(n-1);

       d)      void f(float a);
{
              float a;
              print f(%f”,a);
}

Ans.     ਉਪਰੋਕਤ ਫੰਕਸ਼ਨ ਕੋਡ ਵਿਚ ਹੇਠ ਲਿਖੀਆਂ ਗਲਤੀਆਂ ਹਨ:-
1. ਫੰਕਸ਼ਨ ਹੈਡਰ void f(float a); ਦੇ ਅੰਤ ਵਿੱਚ ਸੈਮੀਕਾਲਮ ਲਗਾ ਹੋਇਆ ਹੈ, ਜੋ ਕਿ ਫੰਕਸ਼ਨ ਪਰਿਭਾਸ਼ਾ ਨਾਲ ਨਹੀ ਲਗਦਾ।
2. print f(%f”,a); ਵਿੱਚ print ਅਤੇ f ਵਿੱਚ ਸਪੇਸ ਲਿਖੀ ਗਈ ਹੈ, ਜੋ ਗਲਤ ਹੈ।  %f” ਵਿੱਚ ਡਬਲ ਕੋਟ ਸ਼ੁਰੂ ਵਿੱਚ ਗਾਇਬ ਹੈ, ਇਹ ਇਸ ਪ੍ਰਕਾਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ: “%f”

       e)      void product(void)
{
              int a,b,c,result;
              printf(“Enter three integers : “)
              scanf(“%d %d %d”, &a, &b, &c);
              result=a*b*c;
              printf(“Result is %d”, result);
              return result;
}
Ans.     ਉਪਰੋਕਤ ਫੰਕਸ਼ਨ ਕੋਡ ਵਿਚ ਹੇਠ ਲਿਖੀਆਂ ਗਲਤੀਆਂ ਹਨ:-
          1. ਸਟੇਟਮੈਂਟ printf(“Enter three integers : “) ਦੇ ਅੰਤ ਵਿੱਚ ਸੈਮੀਕਾਲਮ ਨਹੀ ਲਿਖਿਆ ਗਿਆ।
          2. ਫੰਕਸ਼ਨ ਦੇ ਅੰਤ ਵਿੱਚ ਨਤੀਜਾ ਰਿਟਰਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਜਦਕਿ ਫੰਕਸ਼ਨ ਹੈਡਰ ਵਿਚ ਫੰਕਸ਼ਨ ਦਾ ਰਿਟਰਨ ਟਾਈਪ void ਹੈ।


      f)        int sum(int n)
{ if(n==0)
              return 0;
  else
     return n+sum(n);}

 Ans.     return n+sum(n); ਗਲਤ ਹੈ।  ਇਸ ਦੀ ਜਗ੍ਹਾ return n+sum(n-1); ਲਿਖਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਸੀ।
          ਨੋਟ: return n+sum(n); ਵਿਚ ਫੰਕਸ਼ਨ sum ਖੁਦ ਨੂੰ n ਦੇ same ਮੁੱਲ ਨਾਲ ਹੀ ਸਦਾ ਦੇ ਰਿਹਾ ਹੈ ਜਿਸ ਨਾਲ ਉਹ ਅਨੰਤ calls ਵਿਚ ਚਲਾ ਜਾਵੇਗਾ।  n ਦਾ ਮੁੱਲ ਘੱਟਦੇ ਕ੍ਰਮ’ਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਤਾਂ ਜੋ ਇਹ recursion ਖਤਮ ਹੋ ਸਕੇ।




ਪ੍ਰਸ਼ਨ 7: ਨਿਮਨਲਿਖਤ ਫੰਕਸ਼ਨਜ ਵਿਚੋ ਹਰੇਕ ਦੇ ਫੰਕਸ਼ਨ ਹੈਡਰ ਦਿਓ।

7.1         ਫੰਕਸ਼ਨ average_marks ਜੋ ਦੋਹਰੀ ਸ਼ੁਧਤਾ ਵਾਲੇ ਫਲੋਟਿੰਗ ਅੰਕ marks1, marks2 ਨੂੰ input ਕਰਦੇ ਹਨ ਅਤੇ ਇਕ ਦੋ ਹਰੀ ਸ਼ੁਧਤਾ ਵਾਲਾ ਫਲੋਟਿੰਗ ਅੰਕ ਵਾਪਸ ਕਰਦੇ ਹਨ?

          ਉ. double average_marks(double marks1, marks2)

7.2         ਫੰਕਸ਼ਨ smallest ਜਿਹੜਾ ਤਿੰਨ ਪੂਰਣ ਅੰਕ ਲੈਂਦਾ ਹੈ x, y, z ਅਤੇ ਪਰਿਣਾਮ ਵਾਪਸ ਮੋੜਦਾ ਹੈ?

          ਉ. Int smallest(int x, int y, int z)

7.3         ਫੰਕਸ਼ਨ instructions ਜਿਹੜਾ ਕੋਈ ਆਰਗੂਮੈਂਟ ਪ੍ਰਾਪਤ ਨਹੀ ਕਰਦਾ ਅਤੇ ਨਾ ਹੀ ਮੁੱਲ ਮੋੜ੍ਹਦਾ ਹੈ?

          ਉ. void instructions(void)

7.4         ਪੂਰਣ ਅੰਕ count ਜਿਹੜੀ ਇਕ ਰਜਿਸਟਰ (register) ਵਿਚ ਸੰਭਾਲੀ ਜਾਣੀ ਚਾਹੀਦੀ ਹੈ, count ਨੂੰ 0 ਤੋ  ਆਰੰਭ ਕਰਦੀ ਹੈ?
         
          ਉ. register int count=0;

Comments

  1. these question answers gives me outstanding performence in my school , Thanks Navdeep sir

    ReplyDelete

Post a Comment