Está en la página 1de 7

Sea f ( x)  ax 2  bx  c con a, b y c   ; a  0

Escribir un programa en lenguaje c que:

a) Determine la intersección con el eje y.


b)Determine la intersección con el eje x.
c) Determine las coordenadas del vértice, en
indique si corresponde a un mínimo o a un
máximo.
d)Determine f ' ( x)
e)Evalué la función en un punto determinado.
f) Indique la pendiente de la recta tangente en un
punto determinado.

Nota: Utilice funciones para resolver el problema.


Crear un directorio llamado pgm en la raíz de
su home.

SOLUCION
#include <stdio.h>
#include <math.h>

#define MAXIMO 1
#define MINIMO 0
#define SIN_SOLUCION 0
#define UNA_SOLUCION 1
#define DOS_SOLUCION 2

typedef struct coef{


float a;
float b;
float c;
} ECUACION_2;

typedef struct punto{


float x;
float y;
int st;
}PUNTO;
typedef struct raiz{
float x1;
float x2;
int st;
} RAIZ;

typedef struct Vert{


PUNTO punto;
int st;
} VERTICE;

ECUACION_2 obtener_ecuacion(){
float a,b,c;
ECUACION_2 ret;
printf("\nCoeficiente a: ");
scanf("%f",&a);
printf("\nCoeficiente b: ");
scanf("%f",&b);
printf("\nCoeficiente c: ");
scanf("%f",&c);
ret.a = a;
ret.b = b;
ret.c = c;
return (ret);
}

void escribe_ecuacion (ECUACION_2 e){


printf ("%.2f*x^2 + %.2f*x + %.2f",e.a,e.b,e.c);
}

PUNTO interseccion_eje_y(ECUACION_2 ec){


PUNTO ret;
ret.x = 0;
ret.y = ec.c;
return(ret);
}

void salto(){
printf("\n");
}

void tabulador(){
printf("\t");
}

void escribe_punto(PUNTO p){


printf(" (%.2f , %.2f)",p.x, p.y);
}

VERTICE obtiene_vertice(ECUACION_2 ec){


VERTICE ret;
ret.punto.x = -ec.b/(2*ec.a);
ret.punto.y = ec.a*(ret.punto.x*ret.punto.x)
+ec.b*ret.punto.x+ec.c;
if (ec.a >= 0)
ret.st= MINIMO;
else
ret.st = MAXIMO;
return(ret);
}
void escribe_vertice(VERTICE v){
escribe_punto (v.punto);
if (v.st == MINIMO)
printf ("\nCorresponde a un MINIMO\n");
else
printf ("\nCorresponde a un MAXIMO\n");
}

void pausa(){
system ("pause");
}

RAIZ solucion_ec_2(ECUACION_2 ec){


float disc;
RAIZ ret;

disc = pow(ec.b,2)-4*ec.a*ec.c;
if (disc < 0){
ret.x1 = 0;
ret.x2 = 0;
ret.st = SIN_SOLUCION;
}
else
if (disc == 0){
ret.x1 = (-ec.b + sqrt(disc))/(2*ec.a);
ret.x2 = ret.x1;
ret.st = UNA_SOLUCION;
}
else{
ret.x1 = (-ec.b + sqrt(disc))/(2*ec.a);
ret.x2 = (-ec.b - sqrt(disc))/(2*ec.a);
ret.st = DOS_SOLUCION;
}
return (ret);
}

void escribe_interseccion(RAIZ sol){


PUNTO p1, p2;
p1.x=sol.x1;
p1.y=0;
p2.x = sol.x2;
p2.y = 0;
if (sol.st == 0)
printf ("\nLa funcion no intersecta el eje X");
else
if (sol.st ==1 ){
printf("\nIntersecta el eje X en el punto: ");
escribe_punto(p1);
}
else{
printf("\nIntersecta al eje X en los puntos: ");
escribe_punto(p1);
printf(" y ");
escribe_punto(p2);
}
}

int main(){
ECUACION_2 ec;
RAIZ sol;
VERTICE vert;
PUNTO inter_y;

ec = obtener_ecuacion();
printf("\nEcuacion: ");
escribe_ecuacion(ec);
salto();

inter_y = interseccion_eje_y(ec);
printf("\nInterseccion con eje Y: ");
escribe_punto (inter_y);
salto();

sol = solucion_ec_2(ec);
printf("\nInterseccion con eje X");
escribe_interseccion(sol);
salto();

vert = obtiene_vertice(ec);
printf("\nCoordenadas del Vertice");
escribe_vertice(vert);
salto();

salto();
pausa();
}

#include <stdio.h>

typedef struct punto {


float x;
float y;
} PUNTO;

void escribir_punto(PUNTO c){


printf("\nCoordenada x: %f",c.x);
printf("\nCoordenada y: %f",c.y);
printf("\n");
}

PUNTO desplaza_punto(PUNTO c, int d){


PUNTO ret;
ret.x = c.x + d;
ret.y = c.y +d;
return(ret);
}

PUNTO asignar(float x, float y){


PUNTO ret;
ret.x =x;
ret.y =y;
return (ret);
}

int main(){
PUNTO coord, otro;
coord = asignar(1,2);
escribir_punto(coord);
otro = desplaza_punto(coord, 3);
escribir_punto(otro);
system("pause");
}

#include <stdio.h>
#include "ecuacion.h"

int main(){
ECUACION_2 ec;
RAIZ sol;
VERTICE vert;
PUNTO inter_y;

ec = obtener_ecuacion();
printf("\nEcuacion: ");
escribe_ecuacion(ec);
salto();

inter_y = interseccion_eje_y(ec);
printf("\nInterseccion con eje Y: ");
escribe_punto (inter_y);
salto();

sol = solucion_ec_2(ec);
printf("\nInterseccion con eje X");
escribe_interseccion(sol);
salto();

vert = obtiene_vertice(ec);
printf("\nCoordenadas del Vertice");
escribe_vertice(vert);
salto();

salto();
pausa();
}

#include <math.h>

#define MAXIMO 1
#define MINIMO 0
#define SIN_SOLUCION 0
#define UNA_SOLUCION 1
#define DOS_SOLUCION 2

typedef struct coef{


float a;
float b;
float c;
} ECUACION_2;

typedef struct punto{


float x;
float y;
int st;
}PUNTO;

typedef struct raiz{


float x1;
float x2;
int st;
} RAIZ;

typedef struct Vert{


PUNTO punto;
int st;
} VERTICE;

ECUACION_2 obtener_ecuacion(){
float a,b,c;
ECUACION_2 ret;
printf("\nCoeficiente a: ");
scanf("%f",&a);
printf("\nCoeficiente b: ");
scanf("%f",&b);
printf("\nCoeficiente c: ");
scanf("%f",&c);
ret.a = a;
ret.b = b;
ret.c = c;
return (ret);
}

void escribe_ecuacion (ECUACION_2 e){


printf ("%.2f*x^2 + %.2f*x + %.2f",e.a,e.b,e.c);
}

PUNTO interseccion_eje_y(ECUACION_2 ec){


PUNTO ret;
ret.x = 0;
ret.y = ec.c;
return(ret);
}

void salto(){
printf("\n");
}

void tabulador(){
printf("\t");
}

void escribe_punto(PUNTO p){


printf(" (%.2f , %.2f)",p.x, p.y);
}

VERTICE obtiene_vertice(ECUACION_2 ec){


VERTICE ret;
ret.punto.x = -ec.b/(2*ec.a);
ret.punto.y = ec.a*(ret.punto.x*ret.punto.x)
+ec.b*ret.punto.x+ec.c;
if (ec.a >= 0)
ret.st= MINIMO;
else
ret.st = MAXIMO;
return(ret);
}

void escribe_vertice(VERTICE v){


escribe_punto (v.punto);
if (v.st == MINIMO)
printf ("\nCorresponde a un MINIMO\n");
else
printf ("\nCorresponde a un MAXIMO\n");
}

void pausa(){
system ("pause");
}

RAIZ solucion_ec_2(ECUACION_2 ec){


float disc;
RAIZ ret;

disc = pow(ec.b,2)-4*ec.a*ec.c;
if (disc < 0){
ret.x1 = 0;
ret.x2 = 0;
ret.st = SIN_SOLUCION;
}
else
if (disc == 0){
ret.x1 = (-ec.b + sqrt(disc))/(2*ec.a);
ret.x2 = ret.x1;
ret.st = UNA_SOLUCION;
}
else{
ret.x1 = (-ec.b + sqrt(disc))/(2*ec.a);
ret.x2 = (-ec.b - sqrt(disc))/(2*ec.a);
ret.st = DOS_SOLUCION;
}
return (ret);
}

void escribe_interseccion(RAIZ sol){


PUNTO p1, p2;
p1.x=sol.x1;
p1.y=0;
p2.x = sol.x2;
p2.y = 0;
if (sol.st == 0)
printf ("\nLa funcion no intersecta el eje X");
else
if (sol.st ==1 ){
printf("\nIntersecta el eje X en el punto: ");
escribe_punto(p1);
}
else{
printf("\nIntersecta al eje X en los puntos: ");
escribe_punto(p1);
printf(" y ");
escribe_punto(p2);
}
}

También podría gustarte