#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define CONSTANT1 (85e-6)
#define CONSTANT2 (2e8)
#define CONSTANT3 (40.0 / 6.0)
#define CONSTANT4 (48.0 / 6.0)
#define CONSTANT5 (136.67)
int main( ) {
double deflection_values[ 1000 ] ; // Assuming a fixed size or use dynamic allocation
int index = 0 ;
double x, y, result, term1, term2, term3, term4;
char input[ 100 ] ;
// Open gnuplot in a pipe
FILE * gp = popen( "gnuplot -persist" , "w" ) ;
if ( gp == NULL) {
fprintf ( stderr
, "Error opening gnuplot\n " ) ; return 1 ;
}
while ( 1 ) {
printf ( "Enter a value for x (or type 'exit' to stop): " ) ; fgets ( input
, sizeof ( input
) , stdin
) ;
if ( strcmp ( input
, "exit\n " ) == 0 ) { break ;
}
if ( sscanf ( input
, "%lf" , & x
) != 1 ) { printf ( "Invalid input. Please enter a valid numeric value for x.\n " ) ; continue ;
}
term1
= ( 28 * pow ( x
, 3 ) ) / 6 ; term2
= CONSTANT3
* pow ( ( x
- 3 ) , 3 ) ; term3
= CONSTANT4
* pow ( ( x
- 5 ) , 3 ) ; term4 = CONSTANT5 * x;
// Check if term2 and term3 are negative
if ( term2 <= 0 ) {
term2 = 0 ;
}
if ( term3 < 0 ) {
term3 = 0 ;
}
result = term1 - term2 - term3 - term4;
y = result / ( CONSTANT1 * CONSTANT2) ;
deflection_values[ index++ ] = y;
printf ( "Deflection (y) for x = %.6f: %.6f m\n " , x
, y
) ; }
// Plot deflection values using gnuplot
fprintf ( gp
, "set title 'Deflection vs. Input Value'\n " ) ; fprintf ( gp
, "set xlabel 'Input Value (x)'\n " ) ; fprintf ( gp
, "set ylabel 'Deflection (y)'\n " ) ; fprintf ( gp
, "plot '-' with lines title 'Deflection (y)'\n " ) ;
for ( int i = 0 ; i < index; i++ ) {
fprintf ( gp
, "%.6f\n " , deflection_values
[ i
] ) ; }
// Close gnuplot pipe
pclose( gp) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBDT05TVEFOVDEgKDg1ZS02KQojZGVmaW5lIENPTlNUQU5UMiAoMmU4KQojZGVmaW5lIENPTlNUQU5UMyAoNDAuMCAvIDYuMCkKI2RlZmluZSBDT05TVEFOVDQgKDQ4LjAgLyA2LjApCiNkZWZpbmUgQ09OU1RBTlQ1ICgxMzYuNjcpCgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBkZWZsZWN0aW9uX3ZhbHVlc1sxMDAwXTsgIC8vIEFzc3VtaW5nIGEgZml4ZWQgc2l6ZSBvciB1c2UgZHluYW1pYyBhbGxvY2F0aW9uCiAgICBpbnQgaW5kZXggPSAwOwogICAgZG91YmxlIHgsIHksIHJlc3VsdCwgdGVybTEsIHRlcm0yLCB0ZXJtMywgdGVybTQ7CiAgICBjaGFyIGlucHV0WzEwMF07CgogICAgLy8gT3BlbiBnbnVwbG90IGluIGEgcGlwZQogICAgRklMRSAqZ3AgPSBwb3BlbigiZ251cGxvdCAtcGVyc2lzdCIsICJ3Iik7CiAgICBpZiAoZ3AgPT0gTlVMTCkgewogICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3Igb3BlbmluZyBnbnVwbG90XG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICB3aGlsZSAoMSkgewogICAgICAgIHByaW50ZigiRW50ZXIgYSB2YWx1ZSBmb3IgeCAob3IgdHlwZSAnZXhpdCcgdG8gc3RvcCk6ICIpOwogICAgICAgIGZnZXRzKGlucHV0LCBzaXplb2YoaW5wdXQpLCBzdGRpbik7CgogICAgICAgIGlmIChzdHJjbXAoaW5wdXQsICJleGl0XG4iKSA9PSAwKSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNzY2FuZihpbnB1dCwgIiVsZiIsICZ4KSAhPSAxKSB7CiAgICAgICAgICAgIHByaW50ZigiSW52YWxpZCBpbnB1dC4gUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtZXJpYyB2YWx1ZSBmb3IgeC5cbiIpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHRlcm0xID0gKDI4ICogcG93KHgsIDMpKSAvIDY7CiAgICAgICAgdGVybTIgPSBDT05TVEFOVDMgKiBwb3coKHggLSAzKSwgMyk7CiAgICAgICAgdGVybTMgPSBDT05TVEFOVDQgKiBwb3coKHggLSA1KSwgMyk7CiAgICAgICAgdGVybTQgPSBDT05TVEFOVDUgKiB4OwoKICAgICAgICAvLyBDaGVjayBpZiB0ZXJtMiBhbmQgdGVybTMgYXJlIG5lZ2F0aXZlCiAgICAgICAgaWYgKHRlcm0yIDw9IDApIHsKICAgICAgICAgICAgdGVybTIgPSAwOwogICAgICAgIH0KICAgICAgICBpZiAodGVybTMgPCAwKSB7CiAgICAgICAgICAgIHRlcm0zID0gMDsKICAgICAgICB9CgogICAgICAgIHJlc3VsdCA9IHRlcm0xIC0gdGVybTIgLSB0ZXJtMyAtIHRlcm00OwogICAgICAgIHkgPSByZXN1bHQgLyAoQ09OU1RBTlQxICogQ09OU1RBTlQyKTsKICAgICAgICBkZWZsZWN0aW9uX3ZhbHVlc1tpbmRleCsrXSA9IHk7CgogICAgICAgIHByaW50ZigiRGVmbGVjdGlvbiAoeSkgZm9yIHggPSAlLjZmOiAlLjZmIG1cbiIsIHgsIHkpOwogICAgfQoKICAgIC8vIFBsb3QgZGVmbGVjdGlvbiB2YWx1ZXMgdXNpbmcgZ251cGxvdAogICAgZnByaW50ZihncCwgInNldCB0aXRsZSAnRGVmbGVjdGlvbiB2cy4gSW5wdXQgVmFsdWUnXG4iKTsKICAgIGZwcmludGYoZ3AsICJzZXQgeGxhYmVsICdJbnB1dCBWYWx1ZSAoeCknXG4iKTsKICAgIGZwcmludGYoZ3AsICJzZXQgeWxhYmVsICdEZWZsZWN0aW9uICh5KSdcbiIpOwogICAgZnByaW50ZihncCwgInBsb3QgJy0nIHdpdGggbGluZXMgdGl0bGUgJ0RlZmxlY3Rpb24gKHkpJ1xuIik7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRleDsgaSsrKSB7CiAgICAgICAgZnByaW50ZihncCwgIiUuNmZcbiIsIGRlZmxlY3Rpb25fdmFsdWVzW2ldKTsKICAgIH0KCiAgICBmcHJpbnRmKGdwLCAiZVxuIik7CgogICAgLy8gQ2xvc2UgZ251cGxvdCBwaXBlCiAgICBwY2xvc2UoZ3ApOwoKICAgIHJldHVybiAwOwp9Cg==