Welcome to Dream.In.Code
Become a C++ Expert!

Join 137,391 C++ Programmers for FREE! Get instant access to thousands of C++ experts, tutorials, code snippets, and more! There are 2,153 people online right now. Registration is fast and FREE... Join Now!




Pliz help explain!Am in vain

 
Reply to this topicStart new topic

Pliz help explain!Am in vain

poppy5
28 Sep, 2006 - 12:50 AM
Post #1

New D.I.C Head
*

Joined: 28 Sep, 2006
Posts: 2


My Contributions
Alright! alright! Frankly,am new in programming.I want to understand what going on in each and every step in this programme and what i have to do to be able to compile and run it.Well,it involves an implementation of a stack using linked lists.Help! crazy.gif
CODE

#include <stdio.h>
#include <stdlib.h> /* for atof() */

#define MAXOP 100 /* max size of operand or operator */
#define NUMBER '0' /* signal that a number was found */

/* useful prototypes. */
int getop(char []);

void push(double);
double pop(void);

/* reverse Polish calculator */

int main(void)
{
  int type;
  double op2;
  char s[MAXOP];

  while((type = getop(s)) != EOF)
  {
    switch(type)
    {
      case NUMBER:
        push(atof(s));
        break;
      case '+':
        push(pop() + pop());
        break;
      case '*':
        push(pop() * pop());
        break;
      case '-':
        op2 = pop();
        push(pop() - op2);
        break;
      case '/':
        op2 = pop();
        if(op2 != 0.0)
          push(pop() / op2);
        else
          printf("error: zero divisor\n");
        break;
      case '\n':
        printf("\t%.8g\n", pop());
        break;
      default:
        printf("error: unknown command %s\n", s);
        break;
    }
  }

  return 0;
}

#include <ctype.h>

int getch(void);
void ungetch(int);

/* getop: get next operator or numeric operand */
int getop(char s[])
{
  int i, c;

  while((s[0] = c = getch()) == ' ' || c == '\t')
   ;

  s[1] = '\0';
  if(!isdigit© && c != '.')
    return c; /* not a number */
  i = 0;
  if(isdigit©) /* collect integer part */
    while(isdigit(s[++i] = c = getch()))
     ;
  if(c == '.')
    while(isdigit(s[++i] = c = getch()))
     ;
  s[i] = '\0';
  if(c != EOF)
    ungetch©;
  return NUMBER;
}

#define BUFSIZE 100

char buf[BUFSIZE]; /* buffer for ungetch */
int bufp = 0; /* next free position in buf */

int getch(void) /* get a (possibly pushed back) character */
{
  return (bufp > 0) ? buf[--bufp] : getchar();
}

void ungetch(int c) /* push character back on input */
{
  if(bufp >= BUFSIZE)
    printf("ungetch: too many characters\n");
  else
    buf[bufp++] = c;
}


typedef struct list_t {
     double item;
     struct list_t *next;
} list_t;


list_t *st = NULL; /* To be used as our stack. Starts out as empty (NULL). */

/* push: push f onto value stack */
void push(double f)
{

     /* Your code goes here. */
f=(struct node *)malloc(sizeof f);
f->next=list_t->next;
list_t->next=f;
}

/* pop: pop and return top value from stack */
double pop(void)
{
     /* Your code goes here. */
void item;
f=list_t;list_t->next=f->next;
item=f->

}


EDIT : born2c0de : Code Tags Added
User is offlineProfile CardPM
+Quote Post

born2c0de
RE: Pliz Help Explain!Am In Vain
28 Sep, 2006 - 09:06 AM
Post #2

printf("I'm a %XR",195936478);
Group Icon

Joined: 26 Nov, 2004
Posts: 3,935



Thanked: 34 times
Dream Kudos: 2800
Expert In: 80x86 Assembly, C/C++, VB6, VB.NET, C#, J2SE, Win32 API, Reversing

My Contributions
I'd be more than happy to help, but first you've got some Compilation Errors that need to be fixed.
User is offlineProfile CardPM
+Quote Post

Reply to this topicStart new topic
Time is now: 12/5/08 02:33AM

Live C++ Help!

C++ Tutorials

Reference Sheets

C++ Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month