Hi..

I have to make a program in c++ for plotting a sine curve..using arrays ..in horizontal direction not vertical ..

can I have an alogarithm or just a hint how to go on making ...thanks :)

0

It depends how sophisticated you want to get. If it is a simple text based console program, you can make an array of strings. Each string contains let's say eighty characters, all spaces but for one asterisk. It will be your genius to place the lonely asterisk at the right position according to y = sin(x). Print out about 50 strings with a new line each, and you have the rudimentary look of a sine function.

All in all a good exercise in arrays.

0

Oops, if you want to go in the horizontal direction there might be more than one astrisk in the string! Fuzzy thinking on my part!

0

Thanks for the reply..

I tried the following code which is similar what you have suggested..but the output I am getting is somewhat weird.. I am getting only the curve for 0 to pi and that too 4 of them..

This is the code

```
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double radius=11;
double scaley=1.2;
const int xmax=80,ymax=24;
int x,y;
char pos[xmax][ymax];
const double pi= 3.14159;
for(int i=0;i<xmax;i++)
{
for(int j=0;j<ymax;j++)
{
pos[i][j]=' ';
}
}
for(double angle=0;angle<=2*pi;angle+=pi/10)
{ double z=sin(angle);
if(angle<pi/2)
{
y=int(scaley*radius*z);
x=y+15;
}
if(angle>pi/2)
{y=int(scaley*radius*z);
x=12-y;
}
pos[y][x]= '#';
}
for(i=0;i<ymax;i++)
{
for(int j=0;j<xmax;j++)
{
cout<<pos[i][j];
}
}
return 0;
}
```

Can u just correct the mistakes.. :)

Hi..

I have to make a program in c++ for plotting a sine curve..using arrays ..in horizontal direction not vertical ..

can I have an alogarithm or just a hint how to go on making ...thanks :)

0

Not too pretty but you are getting there!

Print out your x and y values.

I don't think y should go negative.

For troubleshooting purposes

add: cout << "y=" << y << " x=" << x << endl;

above: pos[y][x]= '#';

comment out: // cout << pos*[j];*

0

Well finally I got the sine curve(though in a vey complicated manner ;) )..I am getting not 1 but 4 curves..and I'm not able to point out the error..here is the program

```
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double radius=10;
double scaley=1;
const int xmax=80,ymax=24;
int x,y;
char pos[xmax][ymax];
const double pi= 3.14159;
double angle,z;
for(int i=0;i<xmax;i++)
{
for(int j=0;j<ymax;j++)
{
pos[i][j]=' ';
}
}
for(angle=0;angle<pi/2;angle+=pi/10)
{ z=sin(angle);
y=int(scaley*radius*z);
x=10-y;
pos[y][x]= '#';
}
for(angle=pi/2;angle<pi;angle+=pi/10)
{ z=sin(angle);
y=int(scaley*radius*z);
x=10-y;
x=20-x;
pos[y][x]= '#';
}
for(angle=pi;angle<(3*pi)/2;angle+=pi/10)
{ z=sin(angle);
y=int(scaley*radius*z);
x=10-y;
x=35+x;
y=(-1)*y;
y=10+y;
pos[y][x]= '#';
}
for(angle=(3*pi)/2;angle<=2*pi;angle+=pi/10)
{ z=sin(angle);
y=int(scaley*radius*z);
x=10-y;
x=55-x;
y=(-1)*y;
y=10+y;
pos[y][x]= '#';
}
for(i=0;i<ymax;i++)
{
for(int j=0;j<xmax;j++)
{
cout<<pos[i][j];
}
}
return 0;
}
```

*Edited
by pyTony*: fixed formating

0

The code shouldn't be that complicated. My suggestion would be to make a program that runs the sine curve down the vertical axis and get that one to work. You have to work with the idea of an axis down the center of the screen, positive y to the right, negative y to the left.

Once that all works, then transpose it it to the horizontal axis.

Another approach would be to locate the cursor at point x,y and print the character # or * or whatever. I have attached some code for that written in Dev-C++. It uses the Windows API call SetConsoleCursorPosition().

```
// plot a text based sine curve down the vertical center axis
// written in DevCpp v.4.9.9.0
#include <iostream>
#include <windows.h> // covers windows API calls
using namespace std;
void LocateCursor(int col,int row);
HANDLE hConsole;
int main(int argc, char *argv[])
{
hConsole = GetStdHandle (STD_OUTPUT_HANDLE);
double x, y; // radians
int col, row; // screen loacations
for (x = -3.2; x < 6.4; x += 0.1) {
y = sin(x);
row = ((int) (x * 10)) + 32; // cast into positive screen location
col = ((int) (y * 30)) + 35; // center this one
LocateCursor(col, row);
}
cin.get(); // wait
return 0;
}
void LocateCursor(int col,int row)
{
COORD cursor;
cursor.X = col;
cursor.Y = row;
SetConsoleCursorPosition(hConsole,cursor);
cout << '*';
}
```

-1

I've trying to plot a simple gragh of a quadratic but I'm not getting expected result can you please write for a simple program for plotting a graph using c++ koolplot and send it to my email <email snipped>

This topic has been dead for over six months. Start a new discussion instead.

Recommended Topics

A ___ is used to document the design of a class. (2 words)

Identifying objects, attributes, and behaviors is called _____ .

Encapsulation is also called * * * * ...

`var task = Task.Run((Func<Task>)Download("", "largetest.mpk", folderName));`

The ...

i just want to write a code for simple fare calculator using conditional statements in JAVA.

whose out should be:

Enter the distance covered: 22.6

`First 5 KM : 50 ...`