Программа, которая строит трёхмерные графики функций.
f1 = 3 * x * x / (5 * y * y)
f2 = x * x / (y * y)
f3 = y - x * x / (y * y)
f4 = (6xy + 3 * x * x * y * y) / (7x - 12y)
Скриншоты:
Программа:
[code:1]/* p5
Алгебра
Язык Turbo C 2.0 */
#include <conio.h>
#include <graphics.h>
#include <stdio.h>
ga (); /* рисует оси 3D-координат */
gb (int, int, float, int, int, float); /* рисует линию в трехмерном пространстве */
float ha (float, float); /* функция, для которой строится график */
float hb (float, float);
float hc (float, float);
float hd (float, float);
main ()
{
int aa, ab;
float da, db, dc, dd;
detectgraph (&aa, &ab);
initgraph (&aa, &ab, "");
ga (); /* 1 */
db = 0;
for (aa = -640; aa < 0; aa += 10)
for (ab = -640; ab < 0; ab++)
{
da = ha (aa / 50., ab / 50.) * 50;
if (da > 1000) da = 1000;
if (da < -1000) da = -1000;
if (ab > -640) gb (aa, ab - 1, db, aa, ab, da);
db = da;
}
getch ();
ga (); /* 2 */
for (aa = -640; aa < 640; aa += 10)
for (ab = -640; ab < 0; ab++)
{
da = hb (aa / 50., ab / 50.) * 50;
if (da > 1000) da = 1000;
if (da < -1000) da = -1000;
if (ab > -640) gb (aa, ab - 1, db, aa, ab, da);
db = da;
}
getch ();
ga (); /* 3 */
for (aa = -100; aa < -9; aa += 10)
for (ab = 10; ab < 101; ab++)
{
da = hc (aa / 50., ab / 50.) * 50;
if (da > 1000) da = 1000;
if (da < -1000) da = -1000;
if (ab > 10) gb (aa, ab - 1, db, aa, ab, da);
db = da;
}
for (ab = 10; ab < 101; ab += 10)
for (aa = -100; aa < -9; aa++)
{
da = hc (aa / 50., ab / 50.) * 50;
if (da > 1000) da = 1000;
if (da < -1000) da = -1000;
if (aa > -100) gb (aa - 1, ab, db, aa, ab, da);
db = da;
}
getch ();
ga (); /* 4 */
for (aa = -640; aa < 640; aa += 10)
for (ab = -640; ab < 640; ab++)
{
dc = aa / 50.;
dd = ab / 50.;
if (7 * dc - 12 * dd >= 0) da = -1000; else da = hd (dc, dd) * 50;
if (da > 1000) da = 1000;
if (da < -1000) da = -1000;
if (ab > -640 && db > -200) gb (aa, ab - 1, db, aa, ab, da);
db = da;
}
getch ();
closegraph ();
}
ga () /* рисует оси 3D-координат */
{
cleardevice ();
setcolor (8);
line (320, 240, 640, 80);
line (320, 240, 0, 80);
setcolor (15);
line (320, 240, 640, 400);
line (320, 240, 0, 400);
line (320, 240, 320, 0);
setcolor (7);
}
gb (int a, int b, float c, int d, int e, float f)
{
line (320 - a + b, 240 + (a + b) / 2. - c,
320 - d + e, 240 + (d + e) / 2. - f);
}
float ha (float a, float b) {return 3 * a * a / 5 / b / b;}
float hb (float a, float b) {return a * a / b / b;}
float hc (float a, float b) {return b - a * a / b / b;}
float hd (float a, float b)
{
return (6 * a * b + 3 * a * a * b * b) / (7 * a - 12 * b);
}[/code:1]
Чем закрыть рекламу: http://amvnews.ru/forum/viewtopic.php?t=4025