Total members 9936 | Gratitudes |It is currently Sun Feb 05, 2012 8:07 pm Login / Join Codemiles


All times are UTC [ DST ]




Post new topic Reply to topic  Quick reply  [ 2 posts ] 
Author Question
 Question subject: Please help me with my code!
PostPosted: Mon Jul 20, 2009 10:52 pm 
Offline
Newbie
User avatar

Joined: Mon Jul 20, 2009 10:26 pm
Posts: 1
Has thanked: 0 time
Have thanks: 0 time

Hi,
I am having trouble with a c++ program I am trying to write. The program should be able to solve equations like "3 / ( 4 * 5 ) =" however when i run it a get a runtime error (Unhandled exception). The program is not entirely finished but I can't continue untill i figure this out. It must use a doubly linked list. I am a beginning programmer so please take the time to explain everything, and stick with the simplist code.

Thanks for your time.

Code:
//program needs to be able to solve equations like 3 / ( 4 * 5 ) =
//note: when imputing equation, separate each character with a space and end it with a “=”
//when I run the program, I get a runtime error – not sure why

#include <iostream>
#include <string>

using namespace std;

struct node
{
   node * prev;
   int value;
   char op;
   char type;
   node * next;
};


void printlist (node *h);
void mult (node * right, node * left);


void main ( )
{
   char str[15];
   node * dll, *head, *tail, *rp, *lp;

   cout << "Enter equation: " << endl;
   cin >> str;

   dll = new node;
   head = dll;
   tail = dll;
   head ->prev = 0;
   head -> op = '(';
   head -> type = 'o';
   head -> value = -1;
   


   while (str[0] != '=') //check for end of expression, doesn't include = sign.  Loop will get all imput and put it into a doubly linked list.
   {
      if (isdigit(str[0]))
      {
         tail->next = new node;
         tail->next->prev = tail;
         tail = tail->next;
         tail->value= atoi(str);
         tail->type='n';
         tail->op='$';
      }
      else
      {
         tail->next = new node;
         tail->next->prev = tail;
         tail = tail->next;
         tail ->op = str[0];
         tail->type='o';
         tail->value=-1;
      }
      cin >> str;
   }
   
   tail->next = new node;
   tail->next->prev = tail;
   tail = tail->next;
   tail->next=0;
   tail->op=')';
   tail->type='o';
   tail->value=-1;
printlist (dll);

   //while (dll->op == '(')
   //{   
      rp = head;
      while (rp->op != ')')
         rp = rp -> next;
      lp = rp;
      while (lp->op != '(')
         lp = lp -> prev;
      cout << "lp: " << lp << " rp: " << rp;
      mult (rp, lp);
      printlist (dll);
   //}


system("pause");
}



//Following function used for testing purposes

void printlist (node *h)
{
   while ( h != 0)
   {
      
      cout << " prev: " << h->prev << " addr: " << h <<" value: " << h->value  << " op: " << h->op << " type: " << h->type<< " address of next node: " << h->next << endl;
      h=h->next;
   }
   cout << endl;
}

void mult (node * right, node * left)
{

   node * temp;
   temp = left;
   
   cout <<endl<< "Left: " << left << " Right: " << right << " Temp: " << temp << " Temp->op: " << temp->op;
   system("pause");

   while (temp != right)
   {
   while ((temp->op != '*') || (temp->op != '/') )
      temp = temp ->next;
      
   if (temp -> op == '*')
      {
         temp->value = temp->prev->value * temp->next->value; //computes
         temp->prev->prev->next= temp->next->next; //deletes extra numbers
      }
   if (temp -> op == '/')
      {
         temp->value = temp->prev->value * temp->next->value;
         temp=temp->prev->prev->next;//not correct?
         temp=temp->next->next->prev;//not correct?
      }
   }
   
      return;
}


TOP
 Profile Send private message  
Reply with quote  
 Question subject: Re: Please help me with my code!
PostPosted: Wed Jul 22, 2009 5:35 pm 
Offline
Moderator
User avatar

Joined: Fri Nov 21, 2008 6:18 pm
Posts: 51
Location: thessaloniki
Has thanked: 0 time
Have thanks: 2 time
what exactly you want to create a calculator withc solves arithmetic combinations of a kind ..or something exact such as 3/(5*4) ?? you only want to be able to pick up the numbers or what i was looking the lines of your code the 2 last lines temp = ...etc definatly rong

cout << " prev: " << h->prev << " addr: " << h <<" value: " << h->value << " op: " << h->op << " type: " << h->type<< " address of next node: " << h->next << endl;

hear what is going on .? too many pointers..:P)))

_________________
if you want make an effort yourself no one will make it for you...
best regards


TOP
 Profile Send private message  
Reply with quote  
Post new topic Reply to topic Quick reply  [ 2 posts ] 
Quick reply


  


 Similar topics
 Topic title   Forum   Author   Comments 
 Read your gmail using Java code  Java examples  msi_333  5
 What's wrong with my code?  Java  Anonymous  3
 project source code in java  Java  Anonymous  0
 Ajax Source code to Suggest application with JSP Server side  AJAX  msi_333  5
 java code to open word doc attached in ms access.db  Java  Anonymous  0

All times are UTC [ DST ]


Users browsing similar posts

Users browsing this forum: No registered users and 1 guest



Jump to:  
Previous Question | Next Question 




Home
General Talks
Finished Projects
Code Library
Games
Tutorials

Java
C/C++
C-sharp
php
Script
JSP/Servlets
Ajax
ASP/ASP.net
Google SEO
Database
Communications
Phpbb3 styles
Photoshop tutorials
Flash tutorials
Find a job






Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
All copyrights reserved to codemiles.com 2007-2011
mileX v1.0 designed by codemiles team