inicio de programación
TRANSCRIPT
-
7/25/2019 Inicio de programacin
1/34
INSTITUTO POLITCNICO NACIONAL
ESCUELA SUPERIOR DE FISCA Y MATEMTICAS
PROYECTO 3 PARCIAL
INTEGRANTES DEL EQUIPO:
GARCA MANDUJANO FERNANDO ANGEL
MORENO GALLEGOS ULISES ALDAIR
ROJAS SALINAS JESSICA MICHELLE
VALENCIA CARMONA DAVID OSVALDO
MATERIA: INTRODUCCIN A LA INFORMATICA
PROFESOR: JOAQUIN IBARRA BAEZ
GRUPO: 1MM1
08 DE ENERO DE 2016
-
7/25/2019 Inicio de programacin
2/34
ndice
Pg.Introduccin..3
Objetivo............4
Justificacin del programa.....5
Funcin: La circunferencia y sus problemas..6
Funcin: La elipse y sus problemas........7
Funcin: Prueba de primalidad.8
Funcin: Clculo de mximo comn divisor y mnimo comnmltiplo.....9
Funcin: Conjetura de Goldbach para un nmero9
Funcin: Simplificacin de fracciones...10
Funcin: Raz ensima de la unidad.10
Cdigo del programa11
Conclusin..32
-
7/25/2019 Inicio de programacin
3/34
Introduccin
Actualmente nos encontramos en un mundo lleno de tecnologa y
vanguardia que exige alta competitividad, la utilizacin de los avances
tecnolgicos para hacer la vida ms fcil y eficiente es una realidad.
Es por esto que la creacin de programas que resuelvan de forma
rpida y eficiente los problemas que se presentan constantemente enla sociedad, facilitan enormemente la obtencin de estos resultados,
adems de que se asegura, sean correctos y precisos.
Llevar el problema real a un cdigo y lenguaje que permita ser
programado y que adems considere todos los casos posibles que se
puedan presentar implica una habilidad que se adquiere con la
prctica y es necesaria para la solucin de programas de mayor
complejidad.
Haciendo nfasis en la obtencin de esta habilidad, se desarroll un
programa de apoyo referente a la matemtica que nos permite obtener
resultados de problemas que constantemente se presentan y que el
mtodo de solucin manual posee cierto grado de complejidad.
3
-
7/25/2019 Inicio de programacin
4/34
Objetivo:
Obtener la solucin de problemas que se han presentado en el
transcurso de la trayectoria acadmica de una forma instantnea y
eficiente, haciendo uso de conocimientos bsicos en algebra ygeometra, adems de conocimientos de programacin bsica,
logrando as un aprendizaje ms eficiente al contar con esta
herramienta que proporciona apoyo para el estudio de los temas que
aborda, adems del perfeccionamiento de los conocimientos
previamente adquiridos sobre programacin en lenguaje C.
4
-
7/25/2019 Inicio de programacin
5/34
Justificacin del proyecto
El presente proyecto est formado por una compilacin de pequeos
subprogramas cada uno resolviendo un cuestionamiento de un tema en particular.
Los temas que aborda son:
La circunferencia y sus problemas
La elipse y sus problemas
Prueba de primalidad
Calculo de mximo comn divisor y mnimo comn mltiplo
Conjetura de Goldbach para un numero
Simplificacin de fracciones
Raz ensima de la unidad
El proyecto posee un men principal donde se despliegan mediante el uso de
switch() case los temas que aborda, proporcionando as, al usuario, la facultad de
elegir el que necesite en ese momento.
El desarrollo del cdigo comienza con la declaracin de las libreras de acuerdo a
las necesidades del programa, se utiliz stdio.h, que contiene las definiciones
demacros, lasconstantes, las declaraciones de funciones y la definicin
detipos usados por varias operaciones estndar de entrada y salida; tambin se
utiliz math.h que contiene las funciones matemticas necesarias para las
operaciones, usando sqrt() para obtener races cuadradas y pow(x,y) para las
potencias; la librera conio.h se us por las funciones de
getch() que hace que el programa cierre hasta que se presione una tecla, cls para
borrar los datos de la pantalla y comenzar con unos nuevos; y windows.h para
crear el inicio de nuestro programa.
Posteriormente se declaran las variables, estas son de carcter global, se hace
nfasis en esto, pues existen las locales que estn contenidas en las funciones de
temas que anteriormente se citaron y que solo tienen su funcionamiento en su
respectiva parte del cdigo, adems de las funciones prototipo mediante voidque
contienen el cdigo de los temas desarrollados.
Inicialmente, y por nica ocasin al ejecutar el programa, se muestra en pantalla
una sencilla animacin con texto de color intermitente, que, posteriormente
desaparece y da lugar al men inicial. Esto se logra de una manera muy fcil,
5
http://es.wikipedia.org/wiki/Macrohttp://es.wikipedia.org/wiki/Constante_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Tipo_de_datohttp://es.wikipedia.org/wiki/Tipo_de_datohttp://es.wikipedia.org/wiki/Constante_(programaci%C3%B3n)http://es.wikipedia.org/wiki/Macro -
7/25/2019 Inicio de programacin
6/34
recurriendo a la funcin Sleep(), contenida en la cabecera Windows.h, que forma
parte de la misma interfaz de aplicacin del sistema Windows. El funcionamiento
de Sleep() es bsico, el argumento numrico (entre parntesis) especifica un
retardo en milisegundos del flujo del programa.
A travs del buclewhile, se genera 6 ciclos definidos por el decremento en 1, deun variable de tipo entero definida en 6. Por cada ciclo sucedido se imprimir
cierto texto, cambiar el color de texto utilizando la funcin system(color n)
definida en la biblioteca estndar de C y se generar un retardo por 800
milisegundos. Finalmente, la pantalla se limpia con system(cls) y se mostrar el
men inicial.
A continuacin se desarrolla la justificacin y se explica cada opcin del men.
Funcin: La circunferencia y sus problemas
El estudio de la circunferencia es sin duda un conocimiento que no debemos dejarpasar, pues gracias a los conocimientos que te proporciona, es ms fcil el estudiode temas ms complicados de geometra analtica e inclusive de algunas otrasmaterias alusivas a la matemtica, es por eso que se ha decidido crear unprograma que ayude a la comprensin de este tema, adems de que proporcionerespuestas a problemas que el usuario tenga, haciendo posible la comparacin delos resultados y verificacin de la respuesta correcta, as el usuario pobra hacermanualmente las operaciones y obtener sus resultados para posteriormente
hacerlo con el programa y comparar si sus resultados son correctos, o tambinobtener rpidamente los resultados sin necesidad de hacerlo manual.
El presente programa nos permite obtener mediante un men diferentes tipos dedatos de acuerdo a lo que desee el usuario, una opcin del men es para obtenerdefiniciones relacionadas con la circunferencia y as crear las bases para el fcilmanejo y entendimiento de las dems opciones del programa. La segunda opcindel men engloba la explicacin de las ecuaciones de la circunferencia,nuevamente bases para el manejo del programa. La tercera opcin del menhace referencia a encontrar proporcionando diversos tipos de datos con los que secuente, tres puntos de la misma, equidistantes del centro, el centro y el radio, el
centro y un punto en ella; el radio, el centro y las ecuaciones de la circunferenciasegn sea el caso.
La cuarta opcin del men sirve para hallas la ecuacin de la recta tangente a unacircunferencia, proporcionando el punto de tangencia conocido y la ecuacingeneral de la circunferencia. Por ltimo la opcin cinco de nuestro menproporciona la posibilidad de encontrar la longitud de una circunferenciaproporcionando el radio.
6
-
7/25/2019 Inicio de programacin
7/34
Descripcin de variables
b es la variable del men principal, a esta se le asigna un numero entero de
acuerdo a la opcin que el usuario desea elegir.c es la variable del men interno que corresponde a definiciones de la
circunferencia, al igual que el caso anterior, el usuario decide que numero entero
del men desea ingresar de acuerdo a lo que necesita.
ees la variable del men interno que corresponde a las opciones con las cualespodemos hallar la ecuacin de la circunferencia, su centro y su radio, el usuario
elige una de las opciones que se despliegan de acuerdo a los datos con los que
cuenta.
rrepresenta el radio de la circunferencia.hrepresenta la abscisa en la coordenada de centro de la circunferenciakrepresenta la ordenada en la coordenada del centro de la circunferencia dada.r2representa el radio de la circunferencia elevado al cuadrado.En la ecuacin usual tenemos la suma de dos binomios elevados al cuadrado.
Al elevar al cuadrado obtenemos que x2 + 2xh + h2 y y2 + 2yk + k2, as utilizamos
j=2*h
l=2*k
y spara expresar la suma de todos los cuadrado que no contuvieran incgnitas yo
x
s= k2+h2+r2
Funcin: La elipse y sus problemas
La herramienta de apoyo elipse es un programa desarrollado para una mejor
comprensin destinado a personas que se encuentran en el mbito estudiantil en
la materia de geometra analtica. Su elaboracin radica en que en algunos
procesos para la solucin de una elipse se pueden llegar a tornar confusos en
ciertos aspectos provocando un mal aprendizaje o un conocimiento momentneo
sobre el tema abordado, sin embargo con el tipo tutorial que se ofrece, sepretende dar a conocer de manera ms detallada las partes que estn contenidas
en la elipse, as como la forma en que se obtienen, y la misma solucin a las
ecuaciones que el usuario ingrese a la herramienta aportada.
7
-
7/25/2019 Inicio de programacin
8/34
El programa est constituido por dos opciones de solucin de ecuaciones tales
que satisfacen la mayora de los diferentes problemas que se podran presentar al
momento de querer dar solucin a las ecuaciones de una elipse. Es algo posible
que el usuario se encuentre con algn caso en el que no pueda conseguir la
solucin a su problema, esto es debido a que es un caso de razonamiento, y es
necesario que el usuario cuente con ms conocimientos acerca de este tema, ya
que existen casos en los que el usuario tiene un problema que al momento de
ingresar los datos en esta forma de apoyo piensa que no tiene los requisitos para
su funcionalidad, pero es esencial que se verifiquen detalladamente todos los
datos otorgados al usuario, esto con el fin de alcanzar la forma en que su
problema se pueda ingresar en el aporte que se brinda con la realizacin del
software elipse.
Todos los valores obtenidos al momento de dar la solucin a la variedad deecuaciones otorgadas por parte del usuario son las distintas partes que dar
conformacin a las elipses, las mismas soluciones estn especificadas de forma
escrita y as mismo en expresin matemtica, por lo que es una herramienta de
fcil comprensin y establecida para un buen aprendizaje, destinado a la
comunidad con necesidad y/o inters hacia la geometra analtica.
Funcin: Prueba de primalidad
Saber si un nmero es primo o conocer todos sus divisores resulta una tarea
complicada, envuelta en algoritmos mecnicos que se vuelven tediosos e inclusive
proclive a obtener fallas, y ms an cuando el nmero en cuestin es
posiblemente compuesto por factores primos cada vez ms grandes.
Basndose en una de las propiedades de los nmeros primos: se dice que xes
primo si sus nicos divisores son 1 yx. De sta manera se disea el algoritmo
para el programa.
Primeramente se lee el nmero entero x, a travs de una sentencia condicional se
comprueba que sea mayor que 1 (1 no es primo), posteriormente se utiliza
iteraciones (ciclo for) desde 2 hasta el nmero x, utilizando una variable de
incremento en 1 por ciclo. Esta variable (i), es comparada de dos formas con x, se
hace uso de dos mtodos (diferente que (!=) e igual que (==)) de la siguiente
manera: si i es diferente de x y el residuo de dividir x en i es 0 entonces el
8
-
7/25/2019 Inicio de programacin
9/34
nmero de divisores aumenta en 1 y este i se imprime en pantalla, completando
as x 3 ciclos. En caso de que el nmero de divisores ( t) sea 0, entonces se
imprimir que xes un nmero primo.
Funcin: Clculo de mximo comn divisor ymnimo comn mltiplo
La obtencin del M.C.D. y el m.c.m. de dos nmeros enteros es una tarea extensa,y excesivamente atenuante, proceso en el cul es sencillo confundirse y perdertiempo til.El proceso ideado es realmente la implementacin del conocido algoritmo deEuclides para la obtencin del Mximo Comn Divisor de dos nmeros enterospositivos, y el hecho (cuya demostracin se obvia) de que la divisin del productode los dos nmeros entre su mximo comn divisor es el mnimo comn mltiplo.
El algoritmo de Euclides consiste en divisiones consecutivas hasta llegar a unresiduo 0 iniciando como dividendo el mayor de los dos nmeros entre el menor,as alternando hasta obtener el residuo 0, siendo el ltimo dividendo el mximocomn divisor.
Primeramente se leen ambos nmeros, y a travs de dos condicionales sedeterminan el nmero mayor m1y el menor m2(si ambos son iguales, entoncescualquiera de esos son los nmeros buscados). Se inicia un bucle condicional ( do- while), donde se realiza el clculo de residuoentre m1y m2, asignando valoresde m1por m2y m2por el residuo. El bucle se cierra hasta que el residuo sea 0,as, se muestra el ltimo m1 como mximo comn divisor. Posteriormente secalcula el mnimo comn mltiplo obteniendo el producto entre el par de nmerosiniciales dividido entre el m1 (mximo comn divisor), mostrando el resultado enpantalla.
Funcin:Conjetura de Goldbach para un nmero
La conjetura fuerte de Christian Goldbach (an no demostrada) versa as: Todonumero par mayor que 2 puede escribirse como suma de dos nmeros primos.
Si bien, no posee una utilidad prctica, es claramente interesante, y funciona comouna introduccin agradable al estudio de la teora de nmeros y la fascinacin porlos nmeros primos.
Se inicia el algoritmo leyendo y comprobando el nmero x en cuestin (par ymayor a dos) con un condicional. Posteriormente se generan y guardan (en unarreglo unidimensional de longitud x) todos los primos hasta el numero x,utilizando dos bucles for,El primer ciclo analiza cada nmero j desde2 hasta x
9
-
7/25/2019 Inicio de programacin
10/34
1, dentro de ste se encuentra el otro ciclo, contando los divisores de j desde 2hastaj al ser 0el residuojentre i. Cuando el nmero de divisores desde 2hastaj
1 de un j es 0, significa que es primo, por lo que se almacena en el arregloprimos[ y ], donde yes el nmero de primos, iniciando en 0, aumentado en 1 porcada nuevo ingresado.
Posteriormente, con el arreglo de primos listo, se consigue comprobar a travs ados ciclos for, uno desdejigual a 1hasta y (creciendo) el otro (anidado) desde iigual a yhasta 1 (decreciendo), con la condicin: primos[ j ] + primos[ i ]es igual ael nmero ingresado, entonces se imprime la combinacin de nmeros,cumplindose as la conjetura.
Funcin:Simplificacin de fracciones
El proceso de simplificacin fracciones consiste en factorizar numerador ydenominador de un racional, obteniendo un factor cuyo denominador y numeradorsea el mximo comn mltiplo de ambas cantidades, por lo que se forma un 1defactor, as simplificando la expresin para su cmodo manejo. Si bien, la tarea ensi no es complicada, al tratarse de cantidades grandes, se vuelve tediosa yproclive a errores.
Primeramente se lee ambos nmeros, numerador My denominador N, se elige elmenor de ellos. Posteriormente, a travs del control de flujo dowhile y un whileanidado, se identifican los divisores comunes de ambos, al considerar el residuo 0de Mentre iyN entre i, al encontrar un divisor, el ciclo se rompe, se imprime en
pantalla el resultado en forma racional de M/i entre N/i.El proceso continua hasta que ies igual al menorde ambas cantidades.
Funcin:Raz ensima de la unidad
La raz ensima de un nmero es aquel valor que al elevarse a la potencia cuyo
ndice indica la raz se obtiene el mismo nmero.
La raz quinta de 32 es 2 porque al elevar 2 a la quinta potencia (2^5 = 2 * 2 * 2 * 2
* 2) se obtiene 32.
Si el ndice de la raz es par (cuadrada, cuarta, sexta...), habr dos resultados
posibles (el positivo y el negativo). No se puede sacar raz par de un nmero
negativo en los nmeros reales.
10
-
7/25/2019 Inicio de programacin
11/34
Si el ndice de la raz es impar (cbica, quinta, sptima...), habr solo un resultado.
Si el nmero es positivo, el resultado ser positivo; si es negativo, ser negativo.
As como laraz cuadrada es lo que se multiplica dos veces para tener el valor
original, y laraz cbica es lo que se multiplica tres veces para tener el valor
original, la raz n-sima es lo que se multiplica n veces para tener el valor original.
Para empezar declaramos las libreras, las cuales son stdio.h ymath.h, despus el
int main de cada programa, seguimos con declarar las variables, para empezar
tenemos 2de tipo float y 6de tipo entero, despus imprimimos y registramos el
radicando, el ndice de la raz, declaramos tres variables ms, para por cualquier
otro tipo de raz con caractersticas diferentes
Ahora pasamos con la parte de las matemticas, damos a Migual al redondeo y a
N como la aproximacin, le pedimos al ordenador que nos d un nmero a
calcular su raz, damos un dopara tener varias opciones, y damos unif si y solo
si, la primera es que si Mes menos que N, Mser igual al menor, pero si no se
cumple Nser el menor, damos el nmero mayor que, el cual es el dos, poner
while para dar la condicin, despus de la condicin dada, damos otro if para
cumplir condicin ms, el mltiplo debe ser igual quei, se le suma uno ms cada
vez hasta que alcancemos un valor prximo
Como tenemos a ien 2, si la fraccin se puede dividir lo va a ser, puesto que hay
mltiplo como lo indica el programa, y as sucesivamente con el while, si no es 2,
ser 3, o 5etc.
Cdigo del programa
#include
#include
#include#include
void prime(void);
void mdmm(void);
void circunferencia(void);
void goldbach(void);
void fraccion(void);
11
http://www.ecured.cu/index.php?title=Ra%C3%ADz_cuadrada&action=edit&redlink=1http://www.ecured.cu/Ra%C3%ADz_c%C3%BAbicahttp://www.ecured.cu/Ra%C3%ADz_c%C3%BAbicahttp://www.ecured.cu/index.php?title=Ra%C3%ADz_cuadrada&action=edit&redlink=1 -
7/25/2019 Inicio de programacin
12/34
void raiz(void);
void elipse(void);
int g,b;
int main(){
int i;
system("cls");
i=7;
printf("\n\t\t\t\t ----------------------------------------------");
printf("\n\t\t\t\t*|| INSTITUTO POLITECNICO NACIONAL ||*");
printf("\n\t\t\t\t*|| ESCUELA SUPERIOR DE FISICA Y MATEMATICAS ||*");
printf("\n\t\t\t\t*|| INGENIERIA MATEMATICA - 1MM1 ||*");
printf("\n\t\t\t\t*|| INTRODUCCION A LA INFORMATICA ||*");printf("\n\t\t\t\t*|| PROYECTO PARA TERCER PARCIAL ||*");
printf("\n\t\t\t\t ----------------------------------------------");
while(--i){
Sleep(800);
if(i==1){
system("color 6");
}
if(i==2){
printf("\n\t\t\t*Ulises Aldair Moreno\n");system("color 2");
}
if(i==3){
printf("\n\t\t\t*David Valencia Carmona\n");
system("color 3");
}
if(i==4){
printf("\n\t\t\t*Fernando Angel Garcia Mandujano\n");
system("color 4");
}
if(i==5){
printf("\n\t\t\t*Jessica Michelle Rojas Salinas\n");
system("color 5");
}
if(i==6){
12
-
7/25/2019 Inicio de programacin
13/34
printf("\n\t\t\tDesarrollado por: \n");
system("color 7");
}
}
do{
system("cls");
system("color f");
printf("\n\t\t\t\t\t **MENU PRINCIPAL**");
printf("\n\t_____________________________________________________
__________________________________");
printf("\n\n\t\tIntroduzca el numero de acuerdo a lo que desea hacer:\n\n");
printf("\t\t1.- La circunferencia y sus problemas.\n");
printf("\t\t2.- La elipse y sus problemas.\n");printf("\t\t3.- Prueba de primalidad.\n");
printf("\t\t4.- Calculo de MCD y mcm de dos numeros.\n");
printf("\t\t5.- Conjetura de Goldbach para un numero.\n");
printf("\t\t6.- Simplificar una fraccion.\n");
printf("\t\t7.- Calcular raiz n-esima.\n");
printf("\t\t8.- Salir.\n\n");
printf("\t\tOpcion: ");
scanf("%d", &b);
switch(b){
case 1:circunferencia();
break;
case 2:
elipse();
break;
case 3:
prime();
break;
case 4:
mdmm();
break;
case 5:
goldbach();
break;
case 6:
fraccion();
13
-
7/25/2019 Inicio de programacin
14/34
break;
case 7:
raiz();
break;
default:
printf("\t\tEntrada no valida\n\n");
break;
}
system("cls");
printf("\n\n\t________________________________________________________
_____________________________________________");
printf("\n\t\t\t*Presione 1 para volver al menu inicial u otra tecla para salir del
programa: ");
scanf("%d",&g);}while(g==1);
}
void circunferencia(){
float a, p, A, B, R, D, E, F, mtg, G, V, matriz3x4[3][4],C,C1,C2;
int b,c,d,e, r, h, k, r2, s, j, l, i, o, radio, u, w;
char x,y;
do{
system("cls");
system("color 0B");printf("\n\t\t\t\tLa Circunferencia");
printf("\n\t__________________________________________________________
___________________");
printf("\n\n\t\tIntroduzca el numero de acuerdo a lo que desea hacer:\n\n");
printf("\t\t1.- Obtener alguna definicion referente a cincunferencia.\n");
printf("\t\t2.- Ver la forma de las ecuaciones de una cincunferencia.\n");
printf("\t\t3.- Hallar la ecuacion, centro y radio de alguna circunferencia.\n");
printf("\t\t4.- Hallar la ecuacion de la recta tangente a alguna
circunferencia.\n");
printf("\t\t5.- Hallar la longitud de alguna circunferencia.\n");
printf("\t\t6.- Salir.\n\n");
scanf("%d", &b);
if(b==1)
{
14
-
7/25/2019 Inicio de programacin
15/34
system("cls");
system("color 0D");
printf("\nQue definicion deseas obtener?\n\n");
printf("1.- Circunferencia\n");
printf("2.- Centro de la circunferencia\n");
printf("3.- Radio de la circunferencia\n");
printf("4.- Tangente a la circunferencia\n\n");
scanf("%d", &c);
if(c==1){
system("cls");
system("color AF");
printf("\n\tCircunferencia:\n");
printf("Conjunto de todos los puntos del plano que equidistan de un punto
fijo.\n\n");
}
if(c==2){
system("cls");
system("color 2D");
printf("\n\tCentro de la circunferencia:\n");
printf("Es el punto fijo del que equidistan todos los puntos de la
circunferencia.\n");
printf("Se expresa como C(h,k)\n \tDonde h es la abscisa y k es la
ordenada.\n\n");
}if(c==3){
system("cls");
system("color BF");
printf("\n\tRadio de la circunferencia:\n");
printf("Distancia del centro a los puntos de la circunferencia.\nSe simboliza
por la letra r y siempre es positivo.\n\n");
}
if(c==4){
system("cls");
system("color 85");
printf("\n\tTangente a la circunferencia:\n");
printf("Es una recta que toca a la circunferencia en un solo punto.\n\n");
}
}
15
-
7/25/2019 Inicio de programacin
16/34
if(b==2){
system("cls");
system("color F5");
printf("\n\tEcuaciones:\n\n\n");
printf("Forma usual, ordinaria o canonica\n\n");
printf("(x-h)^2+(y-k)^2= r^2\n");
printf("Donde\tr es el radio\n");
printf(" \t(x,y) es un punto de la circunferencia\n");
printf(" \t(h,k) es el centro de la circunferencia\n\n\n\n");
printf("Ecuacion General\n\n");
printf("(x^2)+(y^2)+Dx+Ey+F=0\n\n");
}
if(b==3) {
system("cls");system("color 09");
printf("\nSeleccione con que datos cuenta\n\n");
printf("1.- Centro y Radio\n");
printf("2.- Centro y punto de la circunferencia\n");
printf("3.- Los puntos extremos de un diametro de la circunferencia\n");
printf("4.- Tres puntos de la circunferencia\n");
scanf("%d", &e);
if(e==1){
system("cls");
printf("Introducir el valor del radio r\n");scanf("%d", &r);
printf("Introduce las coordenadas del centro C(h,k)\n");
printf("h=");
scanf("%d", &h);
printf("k=");
scanf("%d", &k);
r2=pow(r,2);
printf("La ecuacion usual de la circunferencia es:(x-%d)^2 + (y-
%d)=%d\n", h,k,r2);
j=2*h;
l=2*k;
s= pow(h,2)+pow(k,2)-r2;
printf("La ecuacion general de la circunferencia es:
x^2+y^2+%dx+%dy+%d=0", j,l,s);
}
if(e==2){
16
-
7/25/2019 Inicio de programacin
17/34
system("cls");
printf("Introduce las coordenadas del centro C(h,k)\n");
printf("h=");
scanf("%d", &h);
printf("k=");
scanf("%d", &k);
printf("Introduce las coordenadas del punto P(x,y)\n");
printf("x=");
scanf("%d", &i);
printf("y=");
scanf("%d", &o);
radio=sqrt(pow((i-h),2)+pow((o-k),2));
printf("El radio es:%f", radio);
printf("La ecuacion usual de la circunferencia es: (x-%d)^2+(y-%d)^2=%d", h,k, pow(radio,2));
j=2*h;
l=2*k;
s= pow(h,2)+pow(k,2)-r2;
printf("La ecuacion general de la circunferencia es:
x^2+y^2+%dx+%dy+%d=0", j,l,s);
}
if(e==3){
system("cls");printf("Introduce las coordenadas del primer punto P(x,y)\n");
printf("x=");
scanf("%d", &i);
printf("y=");
scanf("%d", &o);
printf("Introduce las coordenadas del segundo punto P(x,y)\n");
printf("x=");
scanf("%d", &u);
printf("y=");
scanf("%d", &w);
r=(sqrt(pow(u-i,2)+pow(w-o,2)))/2;
printf("El radio de la circunferencia que tiene su diametro en esos
dos puntos es:%f\n",r);
h=(i+u)/2;
k=(o+w)/2;
printf("El centro de la circunferencia es:\n");
17
-
7/25/2019 Inicio de programacin
18/34
printf("C(%f, %f)",h,k);
printf("La ecuacion usual de la circunferencia proporcionada
es:\n");
r2=pow(r,2);
printf("(x-%f)^2+(y-%f)^2=%f",h, k,r2);
}
if(e==4) {
//tres puntos de la circunferencia
system("cls");
printf("Introduce las coordenadas del primer punto\n");
printf("x=");
scanf("%f", &matriz3x4[0][0]);
printf("y=");
scanf("%f", &matriz3x4[0][1]);
matriz3x4[0][2]=1;matriz3x4[0][3]=pow(matriz3x4[0][0],2)+pow(matriz3x4[0][1],2);
printf("Introduce las coordenadas del segundo punto\n");
printf("x=");
scanf("%f", &matriz3x4[1][0] );
printf("y=");
scanf("%f", &matriz3x4[1][1] );
matriz3x4[1][2]=1;
matriz3x4[1][3]=pow(matriz3x4[1][0],2)+pow(matriz3x4[1][1],2);
printf("Introduce las coordenadas del tercer punto \n");
printf("x=");scanf("%f", &matriz3x4[2][0] );
printf("y=");
scanf("%f", &matriz3x4[2][1] );
matriz3x4[2][2]=1;
matriz3x4[2][3]=pow(matriz3x4[2][0],2)+pow(matriz3x4[2][1],2);
//Resolviendo sistema con base en metodo de Gauss-Jordan
matriz3x4[0][1]=matriz3x4[0][1]/matriz3x4[0][0];
matriz3x4[0][2]=matriz3x4[0][2]/matriz3x4[0][0];
matriz3x4[0][3]=matriz3x4[0][3]/matriz3x4[0][0];
matriz3x4[0][0]=matriz3x4[0][0]/matriz3x4[0][0];// Se hace 1
//----------------------------------------------
matriz3x4[1][1]=((-
matriz3x4[1][0])*matriz3x4[0][1])+matriz3x4[1][1];
matriz3x4[1][2]=((-
matriz3x4[1][0])*matriz3x4[0][2])+matriz3x4[1][2];
18
-
7/25/2019 Inicio de programacin
19/34
matriz3x4[1][3]=((-
matriz3x4[1][0])*matriz3x4[0][3])+matriz3x4[1][3];
matriz3x4[1][0]=((-
matriz3x4[1][0])*matriz3x4[0][0])+matriz3x4[1][0];// Se hace 0
matriz3x4[2][1]=((-
matriz3x4[2][0])*matriz3x4[0][1])+matriz3x4[2][1];
matriz3x4[2][2]=((-
matriz3x4[2][0])*matriz3x4[0][2])+matriz3x4[2][2];
matriz3x4[2][3]=((-
matriz3x4[2][0])*matriz3x4[0][3])+matriz3x4[2][3];
matriz3x4[2][0]=((-
matriz3x4[2][0])*matriz3x4[0][0])+matriz3x4[2][0];// Se hace 0
//-------------------------------------------------------------------
matriz3x4[1][2]=matriz3x4[1][2]/matriz3x4[1][1];
matriz3x4[1][3]=matriz3x4[1][3]/matriz3x4[1][1];matriz3x4[1][1]=matriz3x4[1][1]/matriz3x4[1][1];// Se hace 1
//----------------------------------------------
matriz3x4[0][2]=((-
matriz3x4[0][1])*matriz3x4[1][2])+matriz3x4[0][2];
matriz3x4[0][3]=((-
matriz3x4[0][1])*matriz3x4[1][3])+matriz3x4[0][3];
matriz3x4[0][1]=((-
matriz3x4[0][1])*matriz3x4[1][1])+matriz3x4[0][1];// Se hace 0
matriz3x4[2][2]=((-
matriz3x4[2][1])*matriz3x4[1][2])+matriz3x4[2][2];matriz3x4[2][3]=((-
matriz3x4[2][1])*matriz3x4[1][3])+matriz3x4[2][3];
matriz3x4[2][1]=((-
matriz3x4[2][1])*matriz3x4[1][1])+matriz3x4[2][1];// Se hace 0
//-------------------------------------------------------------------
matriz3x4[2][3]=matriz3x4[2][3]/matriz3x4[2][2];//Solucion variable
z
matriz3x4[2][2]=matriz3x4[2][2]/matriz3x4[2][2];
//-------------------------------------------------------------------
matriz3x4[0][3]=((-
matriz3x4[0][2])*matriz3x4[2][3])+matriz3x4[0][3];//Solucion variable x
matriz3x4[0][2]=((-
matriz3x4[0][2])*matriz3x4[2][2])+matriz3x4[0][2];
matriz3x4[1][3]=((-
matriz3x4[1][2])*matriz3x4[2][3])+matriz3x4[1][3];//Solucion variable y
19
-
7/25/2019 Inicio de programacin
20/34
matriz3x4[1][2]=((-
matriz3x4[1][2])*matriz3x4[2][2])+matriz3x4[1][2];
//-------------------------------------------------------------------
D=matriz3x4[0][3];
E=matriz3x4[1][3];
F=matriz3x4[2][3];
printf("\nEl centro de la circunferencia que pasa por los 3 puntos
proporcionados es:\n");
C1=(D/2);
C2=(E/2);
printf("\tC(%f,%f)\n", C1,C2);
R=(sqrt((pow(D,2))+(pow(E,2))-(4*F)))/2;
printf("\nEl radio de la circunferencia que pasa por los 3 puntos
proporcionados es:\n");
printf("\nr=%f", R);}
}
if(b==4){
system("cls");
system("color F3");
printf("\nIntroduce las coordenadas del punto que se conoce\n");
printf("x=");
scanf("%d", &b);
printf("y=");
scanf("%d",&c);printf("Recordemos que la ecuacion de la circunferencia es de la
forma:\n");
printf("\tx^2 + y^2 + Dx + Ey+ F = 0 \n\n");
printf("Introduce el valor de D\n");
scanf("%f",&D);
printf("Introduce el valor de E\n");
scanf("%f",&E);
printf("Introduce el valor de F\n");
scanf("%f",&F);
A=-1*(D/2);
B=-1*(E/2);
printf("\nEl centro de la circunferencia proporcionada es:\n");
printf("\tC(%.2f,%.2f)\n\n", A, B);
R=(sqrt(pow(D,2)+pow(E,2)-(4*F)))/2;
printf("El radio de la circunferencia proporcionada es:\n");
printf("\tr=%.2f\n\n", R);
20
-
7/25/2019 Inicio de programacin
21/34
mtg=((b-A)/(c-B));
G=1*c;
V=1*b;
printf("La ecuacion de la recta tangente a la circunferencia proporcionada
es:\n");
printf("y-%.0f=%.2f(x-%.0f)", G, mtg, V);
}
if(b==5){
system("cls");
system("color F8");
printf("\n\nIntroduce el radio de la circunferencia\n\n");
printf("r=");
scanf("%f", &a);
p=2*3.1416*a;printf("\n\n\nLa longitud de la circunferencia dada es: %.3f\n",p);
}
printf("\n\n\t________________________________________________________
_____________________");
printf("\n\t\t\t*Presione 1 para repetir u otra tecla para salir: ");
scanf("%d", &d);
}while(d==1);return 0;
}
void elipse (void){
int a[5],i,j,s,h;
float b[5],d[6],e[2],f,k[3],n[6],m[10];
//SE DAN A CONOCER LAS OPCIONES DISPONIBLES PARA EL USUARIO
//PONEMOS EJEMPLIFICACIONES PARA UNA MEJOR COMPRENSION
do{
system("cls");
printf("\n\t\tLA ELIPSE");
printf("\n\t\t_________________________________________________________
___\n\n");
printf("\t\tObtener los valores de la elipse cuando se tienen las ecuaciones:\n");
printf("\n\t\t1.-De la forma:\n\t\t n1x^2 + n2y^2 + n3x + n4y + n5 = n6 \n");
printf("\t\tEjemplo:\n\t\t3x^2 + 5y^2 + -6x + 20y + 8 = 0 \n\n");
21
-
7/25/2019 Inicio de programacin
22/34
printf("\n\t\t2.-De la forma:\n\t\t ((x - a1)^2 / a2)+((y - a3)^2 / a4)= a5\n");
printf("\t\tEjemplo:\n\t\t((x - 0)^2 / 3)+((y - 0)^2 / 8)= 1 \n\n");
printf("\t\tOpcion: ");
//SEGUN SEA LA OPCION QUE ELIJA EL USUARIO SERA LA PARTE EN LA
QUE SIGA EL PROGRAMA
scanf("%d",&s);
switch (s){
case 1:{
//SE ESTABLECERAN LOS PASOS PARA LLEGAR A LA ECUACION QUE ESTA
EN LA OPCION DOS DE ESTA HERRAMIENTA
printf("LA ECUACION DEBE INTRODUCIR DE LA SIGUIENTE
MANERA\n");
printf(" n1x^2 + n2y^2 + n3x + n4y + n5 = n6 \n");
for (i=1;i
-
7/25/2019 Inicio de programacin
23/34
printf("%f(x + %f)^2 + %f(y + %f)^2 = %f\n\n",n[1],m[6],n[2],m[7],m[8]);
printf("Por ultimo dividimos los terminos entre el termino independiente resultante a
la derecha\n");
m[9]= m[8]/n[1];
m[10]= m[8]/n[2];
printf("((x + %f)/ %f ) + ((y + %f)/ %f ) = 1",m[6],m[9],m[7],m[10]);
//SE DA UNA INDICACION AL USUARIO PARA QUE NO SEA NECESRIA UNA
DOBLE COMPRENSION DE CODIGO EN EL PROGRAMA
printf("\n Para seguir con la solucion de la ecuacion continue en la opcion -2-");
break;
}
case 2:{printf("LA ECUACION DEBE INTRODUCIR DE LA SIGUIENTE
MANERA\n");
printf("((x - a1)^2 / a2)+((y - a3)^2 / a4)= a5\n\n");
for (i=1;i
-
7/25/2019 Inicio de programacin
24/34
}
else {
e[1]=a[1]+d[3];
e[2]=a[1]-d[3];
}
// SE DAN A CONOCER LAS PARTES DE LA ELIPSE CON EXPLICACIONES
printf("LOS VALORES DE LA ELIPSE SON LOS SIGUIENTES\n\n");
printf("Si el valor mas grande se encuentra debajo de x^2");
printf(" entonces es una parabola Horizontal\n De lo contrario es Vertical\n");
printf("El valor de -a- estara definido por la raiz del valor del numero mayor\n");
printf("El valor de -b- estara definido por la raiz del valor del numero menor\n");
printf("El valor de -c- se define como la raiz del valor de -a- al cuadrado menos -b-
al cuadrado\n ");
printf("\nTenemos que...\n");
if (a[2]
-
7/25/2019 Inicio de programacin
25/34
d[5]=2*d[2];
printf("Eje menor = %f \n",d[5]);
}
d[6]=2*d[3];
printf("Asi mismo La distancia entre los focos se define por el doble de c\n");
printf("La distancia entre los focos = %f\n\n",d[6]);
printf("Los vertices se definen segun el tipo de la elipse\n");
printf("Si es horizontal se le suma y resta el valor de -a- al eje de las x\n");
printf("Si es vertical se le suma y resta el valor de -a- al eje de las
y\n");
printf("Las coordendas mencionadas se tienen al obtener el centro\n");
if (a[2]
-
7/25/2019 Inicio de programacin
26/34
printf("El centro es (%d , %d)\n\n",a[1],a[3]);
printf("Similar que los vertices, los focos se localizan al sumar y restar el valor de -
c-");
printf(" al eje de las x's o de las y's' segun sea el tipo de elipse\n");
if (a[2]
-
7/25/2019 Inicio de programacin
27/34
printf("\n\n\t________________________________________________________
_____________________");
printf("\n\t\t\t*Presione 1 para repetir u otra tecla para salir: ");
scanf("%d",&g);
}while(g==1);
return 0;
}
void prime(void){
int x,i,t;
do{
system("cls");
printf("\n\tPrueba la primalidad del numero natural dado, si es
compuesto\n\tmostrara sus divisores.");
printf("\n\t__________________________________________________________
__\n\n");
printf("\t\tIntroduce el numero: ");
scanf("%d",&x);
t=0;
for(i=2;i
-
7/25/2019 Inicio de programacin
28/34
printf("\n\t\t\t*Presione 1 para repetir u otra tecla para salir: ");
scanf("%d",&g);
}while(g==1);
return 0;
}
void mdmm(void){
int x,y,m1,m2,r;
do{
mod:
system("cls");
printf("\n\tCalcula el maximo comun divisor y el maximo comun
multiplo\n\tdado dos numeros naturales.");
printf("\n\t____________________________________________________________\n\n");
printf("\t\tPrimer numero: ");
scanf("%i",&x);
printf("\t\tSegundo numero: ");
scanf("%i",&y);
if(x>y){
m1=x;
m2=y;
}if(x
-
7/25/2019 Inicio de programacin
29/34
printf("\n\n\t___________________________________________________
__________________________");
printf("\n\t\t\t*Presione 1 para repetir u otra tecla para salir: ");
scanf("%d",&g);
}while(g==1);
return 0;
}
void goldbach(){
do{
mod:
system("cls");
int x,y=0,j,i,a;
printf("\n\tTodo numero par mayor que 2 puede escribirse como suma de dos
numeros primos.");printf("\n\n\t\t\t\t\t\tChristian Goldbach (1742)");
printf("\n\t__________________________________________________________
___________________");
printf("\n\n\n\t\tIntroduce un numero: ");
scanf("%d",&x);
int primos[x];
if(x
-
7/25/2019 Inicio de programacin
30/34
printf("\t\t\t\t%d\n",primos[j]);
}
printf("\n");
for(j=1;j=1;i--){
if((primos[j]+primos[i])==x){
printf("\t\t\t\tUna posibilidad de suma es: %d + %d = %d,
entre %d primos.\n",primos[j],primos[i],x,y);
j=y+1;
}
}
}
printf("\n\n\t_____________________________________________________________________________");
printf("\n\t\t\t*Presione 1 para repetir u otra tecla para salir: ");
scanf("%d",&g);
}while(g==1);
return 0;
}
void fraccion(){int M,N,i,menor, multiplo, hay_multiplo;
do{
system("cls");
printf("\n\tSimplifica fracciones.");
printf("\n\t__________________________________________________________
___________________");
printf("\n\n\tIntroduzca el numerador: ");
scanf("%d", &M);
printf("\n\n\tIntroduzca el denominador: ");
scanf("%d", &N);
printf("\n\n\t%d/%d", M,N);
do {
if (M < N )
menor = M;
30
-
7/25/2019 Inicio de programacin
31/34
else
menor = N;
i=2;
hay_multiplo=0;
while (i
-
7/25/2019 Inicio de programacin
32/34
scanf("%f",&x);
printf("\n\n\tIndice raiz: ");
scanf("%f",&y);
aprox = pow(10,6);
raiz = pow(sqrt(pow(x,2)),1/y); /* La raz es exponente fraccionario */
redondeo = round(aprox*raiz);
if(x>=0)
printf("\n\n\tDecimal: %f",raiz);
else
printf("\n\n\tDecimal: %fi",raiz);
/*A partir de aqui es generar la representacion y simplificacin en forma
reacional*/
M = redondeo;
N = aprox;
if(x>=0)printf("\n\n\tFraccion: %d/%d", M,N);
else
printf("\n\n\tFraccion: %di/%d", M,N);
do {
if (M < N )
menor = M;
else
menor = N;
i=2;hay_multiplo=0;
while (i =0)
printf(" = %d/%d", M, N);
else
printf(" = %di/%d", M, N);
}
32
-
7/25/2019 Inicio de programacin
33/34
}while (hay_multiplo==1);
printf("\n\n\t________________________________________________________
_____________________");
printf("\n\t\t\t*Presione 1 para repetir u otra tecla para salir: ");
scanf("%d",&g);
}while(g==1);
return 0;
}
33
-
7/25/2019 Inicio de programacin
34/34
Conclusin
Como resultado del proyecto presentado, es posible concluir que
mediante la realizacin de este, los conocimientos previamente
adquiridos en materia de programacin bsica fueron puestos a
prueba, logrando as, implementarlos exitosamente.
Cabe mencionar que adems de esto, estos conocimientos fueron
reforzados y complementados, gracias a la necesidad de la obtencinde un cdigo que proporcionara respuestas adecuadas a los
problemas previamente elegidos, es decir, se realiz un anlisis sobre
los temas elegidos para posteriormente crear un algoritmo que diera
solucin y presentara los resultados de la forma requerida.