#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
// Definicja funkcji
double f(double x)
{
return 0.25 * x * x - 2;
}
int main()
{
FILE* gnuplot = popen("gnuplot -persistent", "w");
if (!gnuplot)
{
cout << "Blad uruchomienia gnuplot." << endl;
return 1;
}
// Ustawienia wykresu
fprintf(gnuplot, "set title 'Wykres funkcji f(x) = 1/4 x^2 - 2'\n");
fprintf(gnuplot, "set xlabel 'x'\n");
fprintf(gnuplot, "set ylabel 'f(x)'\n");
fprintf(gnuplot, "set grid\n");
fprintf(gnuplot, "set zeroaxis\n");
fprintf(gnuplot, "set xrange [1:5]\n");
// Rysowanie wykresu
fprintf(gnuplot, "plot '-' with lines lw 2 title 'f(x)'\n");
for (double x = 1.0; x <= 5.0; x += 0.01)
{
fprintf(gnuplot, "%f %f\n", x, f(x));
}
fprintf(gnuplot, "e\n");
fclose(gnuplot);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjc3RkaW8+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRGVmaW5pY2phIGZ1bmtjamkKZG91YmxlIGYoZG91YmxlIHgpCnsKICAgIHJldHVybiAwLjI1ICogeCAqIHggLSAyOwp9CgppbnQgbWFpbigpCnsKICAgIEZJTEUqIGdudXBsb3QgPSBwb3BlbigiZ251cGxvdCAtcGVyc2lzdGVudCIsICJ3Iik7CgogICAgaWYgKCFnbnVwbG90KQogICAgewogICAgICAgIGNvdXQgPDwgIkJsYWQgdXJ1Y2hvbWllbmlhIGdudXBsb3QuIiA8PCBlbmRsOwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIC8vIFVzdGF3aWVuaWEgd3lrcmVzdQogICAgZnByaW50ZihnbnVwbG90LCAic2V0IHRpdGxlICdXeWtyZXMgZnVua2NqaSBmKHgpID0gMS80IHheMiAtIDInXG4iKTsKICAgIGZwcmludGYoZ251cGxvdCwgInNldCB4bGFiZWwgJ3gnXG4iKTsKICAgIGZwcmludGYoZ251cGxvdCwgInNldCB5bGFiZWwgJ2YoeCknXG4iKTsKICAgIGZwcmludGYoZ251cGxvdCwgInNldCBncmlkXG4iKTsKICAgIGZwcmludGYoZ251cGxvdCwgInNldCB6ZXJvYXhpc1xuIik7CiAgICBmcHJpbnRmKGdudXBsb3QsICJzZXQgeHJhbmdlIFsxOjVdXG4iKTsKCiAgICAvLyBSeXNvd2FuaWUgd3lrcmVzdQogICAgZnByaW50ZihnbnVwbG90LCAicGxvdCAnLScgd2l0aCBsaW5lcyBsdyAyIHRpdGxlICdmKHgpJ1xuIik7CgogICAgZm9yIChkb3VibGUgeCA9IDEuMDsgeCA8PSA1LjA7IHggKz0gMC4wMSkKICAgIHsKICAgICAgICBmcHJpbnRmKGdudXBsb3QsICIlZiAlZlxuIiwgeCwgZih4KSk7CiAgICB9CgogICAgZnByaW50ZihnbnVwbG90LCAiZVxuIik7CiAgICBmY2xvc2UoZ251cGxvdCk7CgogICAgcmV0dXJuIDA7Cn0K