Paste number 9644: drats

Paste number 9644: drats
Pasted by: Summe Lindele
When:3 years, 11 months ago
Share:Tweet this! | http://paste.lisp.org/+7FW
Channel:#lisp
Paste contents:
Raw Source | XML | Display As
#include <iostream.h>
#include <math.h>
//#include <iosmanip.h>

         //Marius Meyer
         //July 4, 2005
         //This is Program 4
         
void display();
void choice(char a);
void bhaskara();
void newton();
void russian();
int mult(int a, int b);
void monkey();

int main()
{   char response;
    int num1, num2;
    
    //cout<<setiosflags(ios::fixed)<<setprecision(3);
    
    display();
    cin>>response;
    cout<<endl;
    
    while (response == 'b' || response == 'B' || response == 'n' || response == 'N' || response == 'r' || response == 'R' || response == 'm' || response == 'M')
    {     choice(response);
          display();
          cin>>response;
          cout<<endl;
    }
    return 0;
}

void display()
{    cout<<"Here are the options:"<<endl;
     cout<<"B: (B)haskara-Brouckner Algorithm for the square root."<<endl;
     cout<<"N: (N)ewton's Iteration for the square root."<<endl;
     cout<<"R: (R)ussian Peasant Multiplication."<<endl;
     cout<<"M: (M)onkey Island coconut calculation."<<endl;
     cout<<"Or any key to exit."<<endl;
     cout<<"Please make a selection: ";
}

void choice(char a)
{    switch(a)
     {case 'b': bhaskara();
           break;
      case 'B': bhaskara();
           break;
      case 'n': newton();
           break;
      case 'N': newton();
           break;
      case 'r': russian();
           break;
      case 'R': russian();
           break;
      case 'm': monkey();
           break;
      case 'M': monkey();
           break;
      default: cout<<endl;
     }
}

void bhaskara()
{    double number, difference = 1, a, b, preva = 1, prevb = 1, error;
     double const k = 0.0001;
     int count = 0;

     cout<<"Please enter a number: ";
     cin>>number;
     
     while (difference >= k)
     {        a = preva + prevb*number;
              b = preva + prevb;
              difference = a/b - preva/prevb;
              if (difference < 0) difference = difference * -1;
              preva = a;
              prevb = b;
              count++;
     }
     
     error = double(1)/(2*pow(b,2));
     cout<<"sqrt("<<number<<") = "<<a/b<<" with error "<<error<<".\n";
     cout<<"The Bhaskara-Brouckner Algorithm was run "<<count<<" times.\n";
     cout<<endl;
}

void newton()
{    double number, difference = 1, x, prevx = 1;
     double const k = 0.0001;
     int count = 0;
     
     cout<<"Please enter a number: ";
     cin>>number;
     
     while (difference >= k)
     {     x = 0.5*(prevx + number/prevx);
           difference = x - prevx;
           if (difference < 0) difference = difference * -1;
           prevx = x;
           count++;
     }
     
     cout<<"sqrt("<<number<<") = "<<x<<".\n";
     cout<<"The Newton's Iteration method was run "<<count<<" times.\n";
     cout<<endl;
}

void russian()
{    int number1, number2;

     cout<<"Please enter two numbers for which you want to find the product.\n";
     cout<<"Number 1 = ";
     cin>>number1;
     cout<<"Number 2 = ";
     cin>>number2;
     
     cout<<number1<<" x "<<number2<<" = "<<mult(number1, number2)<<endl;
     cout<<endl;
}

int mult(int a, int b)
{    int sum = 0, leftNum, rightNum;
     
     leftNum = abs(a);
     rightNum = abs(b);
     
     if (a == 0 || b == 0) sum = 0;
     else {while (leftNum > 1)
           {     if (leftNum % 2 == 1) sum = sum + rightNum;
                 leftNum = leftNum / 2;
                 rightNum = rightNum * 2;
           }
           sum = sum + rightNum;
          }
     
     if (a < 0 && b > 0) sum = sum * -1;
     else if (a > 0 && b < 0) sum = sum * -1; 
     
     return sum;
}

void monkey()
{    int number = 1;
     
     for (int i = 1; i <= 4; i++)
         number = number*3 + 1;
     
     cout<<"The smallest number of coconuts to have started with was:"<<endl;
     cout<<number<<endl<<endl;
}

This paste has no annotations.

Colorize as:
Show Line Numbers

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.