2014-11-06 10 views
10

मैं एक प्रोग्राम लिखने की कोशिश कर रहा हूं जो पॉप और पुश फ़ंक्शंस लागू करता है। समस्या यह है, मैं सूचक है कि कार्य करने के लिए शीर्ष पूर्णांक है, ताकि इस पूर्णांक बदलता रहता अंक पारित करने के लिए कोशिश कर रहा हूँ, लेकिन जब मैं संकलन करने की कोशिश मैं हमेशा इस लाइन मिलती है:सी प्रोग्रामिंग, त्रुटि: ऑब्जेक्ट कहा जाता है कोई फ़ंक्शन या फ़ंक्शन पॉइंटर

**error: called object is not a function or function pointer (*t)--

#include<stdio.h> 
#include<stdlib.h> 

#define MAX 10 
int push(int stac[], int *v, int *t) 
{ 
    if((*t) == MAX-1) 
    { 
     return(0); 
    } 
    else 
    { 
     (*t)++; 
     stac[*t] = *v; 
     return *v; 
    } 
} 

int pop(int stac[], int *t) 
{ 
int popped; 
if((*t) == -1) 
{ 
     return(0); 
} 
else 
{ 
    popped = stac[*t] 
    (*t)--; 
    return popped; 
} 
} 
int main() 
{ 
int stack[MAX]; 
int value; 
int choice; 
int decision; 
int top; 
top = -1; 
do{ 
    printf("Enter 1 to push the value\n"); 
    printf("Enter 2 to pop the value\n"); 
    printf("Enter 3 to exit\n"); 
    scanf("%d", &choice); 
    if(choice == 1) 
    { 
     printf("Enter the value to be pushed\n"); 
     scanf("%d", &value); 
     decision = push(stack, &value, &top); 
     if(decision == 0) 
     { 
      printf("Sorry, but the stack is full\n"); 
     } 
     else 
     { 
      printf("The value which is pushed is: %d\n", decision); 
     } 
    } 
    else if(choice == 2) 
    { 
     decision = pop(stack, &top); 
     if(decision == 0) 
      { 
       printf("The stack is empty\n"); 
      } 
     else 
      { 
       printf("The value which is popped is: %d\n", decision); 
      } 

    } 
}while(choice != 3); 
printf("Top is %d\n", top); 

} 
+5

विदेशी _missed semicolon_ केस के लिए +1, stackoverflow में आपका स्वागत है :) – Rerito

+0

इस टिप्पणी ने मुझे कई बार मुस्कुराया है ... – Frederick

उत्तर

17

आप बस त्रुटि के साथ कि लाइन से पहले एक अर्धविराम याद किया:

poped = stac[*t] <----- here 
(*t)--; 

इस अजीब त्रुटि के लिए कारण यह है कि संकलक देखा sth कि तरह है:

poped = stac[*t](*t)--; 

जो कि किसी तालिका से आने वाले फ़ंक्शन पॉइंटर को कॉल के रूप में व्याख्या कर सकता है, लेकिन यह स्पष्ट रूप से कोई समझ नहीं आता है, क्योंकि stac इनट्स की एक सरणी है, फ़ंक्शन पॉइंटर्स की सरणी नहीं है।

+0

धन्यवाद, मैं गलती की तलाश में था और मुझे विश्वास नहीं है कि मैंने नहीं किया ' मिस्ड अर्धविराम नहीं देखते हैं। –

+1

@AbylIkhsanov - इस तरह इन संकलकों के साथ जीवन कैसा है (; यह एक अच्छा सबक है - आपको संदेश में उल्लिखित रेखा से पहले त्रुटि की आवश्यकता होती है। –

संबंधित मुद्दे