Programacion C
Programacion C
MTODOS NUMRICOS
TAREA 1: SOLUCION DE EJERCICIOS CAPITULO 1 Y 2
Grupo:3AM2
Carrera:ICA
Boleta:2014301336
Profesor:
ING. ENRIQUE MARTNEZ ROLDN
Fecha:
Captulo 1
Problema 3: Programa que pida la temperatura en grados Celsius y la
convierta a grados Fahrenheit (y viceversa) mostrando en pantalla un mensaje del
tipo xxx.xx grados Celsius son yyy.yy grados Fahrenheit
Algoritmo: Programa que convierte grados Celsius a grados Fahrenheit
(viceversa)
Inicio
escribir Elige el tipo de conversin
escribir 1-. Celsius a Fahrenheit
escribir 2-. Fahrenheit a Celsius
leer tipo
si tipo==1 entonces
escribir Da los grados Celsius
leer celsius
fahren ((celsius)*(9/5))+32
escribir , celsius
escribir grados Celsius son
,fahren
escribir grados Fahrenheit
si no
escribir Da los grados Fahrenheit
leer fahren
celsius(fahren-32)*(5/9)
escribir , fahren
escribir grados Fahrenheit son
,celsius
escribir grados Celsius
fin si
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int tipo;
float celsius,fahren;
printf("Elige el tipo de conversion\n");
printf("1-. Celsius a Fahrenheit\n2-. Fahrenheit a Celsius\n");
scanf("%d",&tipo);
if (tipo==1)
{
printf("Da los grados Celsius\n");
scanf("%f",&celsius);
fahren=((celsius*9)/5)+32;
printf("\n%4.2f grados Celsius son %4.2f grados Fahrenheit",celsius,fahren);
}
else
{
printf("Da los grados Fahrenheit\n");
scanf("%f",&fahren);
celsius=((fahren-32)*(5))/9;
printf("\n%4.2f grados Fahrenheit son %4.2f grados Celsius",fahren,celsius);
}
return 0;
}
Captura de pantalla de salida
Conclusiones
En este ejercicio pude ver el funcionamiento de la salida y entrada de datos tanto
en el seudocdigo como en la implementacin en C. Adems de las definiciones
de variables y operaciones.
Lo difcil fue hacer las operaciones ya que en los parntesis se debe de tener
cuidado, para tener una buena operacin.
int main()
{
float radio, perimetro, area;
printf("Da el radio de la circunferencia\n");
scanf("%f",&radio);
perimetro=(radio*2)*3.1416;
area=(radio*radio)*3.1416;
printf("El perimetro de la circunferencia es: %f\n",perimetro);
printf("El area de la circunferencia es: %f\n",area);
return 0;
}
Captura de pantalla de salida
Conclusiones
Con frmulas sencillas podemos visualizar la salida del programa, asi como su
seudocdigo para un mejor entendimiento del lenguaje.
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
float m1,m2,r,f;
printf("Escribe la masa uno en kilogramos\n");
scanf("%f",&m1);
printf("Escribe la masa dos en kilogramos\n");
scanf("%f",&m2);
printf("Escribe la distancia entre ellas\n");
scanf("%f",&r);
f=6.67*((m1*m2)/(r*r));
printf("La fuerza de atraccion gravitacional entre ellas es: %fx10^-11",f);
return 0;
}
,F
Conclusiones
En la salida de la pantalla no se pueden escribir acentos, las operaciones deben
de ser muy bien revisadas para que sean correctas.
Lo que me falto o se me dificulto fue poner el valor de g ya que era notacin
cientfica, deberamos de tener una explicacin acerca de ello.
edad2edad ao2
escribir Tu edad en el ao 2010 era
,edad2
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int ano,edad,ano2,edad2;
printf("Escribe el ano actual\n");
scanf("%d",&ano);
printf("Escribe tu edad actual\n");
scanf("%d",&edad);
ano2=ano-2010;
edad2=edad-ano2;
printf("Tu edad en el ano 2010 era: %d anos",edad2);
return 0;
}
Conclusiones
No se pueden escribir letras ni para la salida de datos ni como una variable,
por lo tanto, se cambia por la letra n.
Problemas bsicos se pueden resolver de forma fcil con un programa en C.
tablanumero*x
escribir ,numero
escribir * ,x
escribir = ,tabla
xx+1
fin mientras
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
float numero,tabla;
int x;
printf("Tabla de multiplicar de un numero\n");
printf("Escribe el numero a multiplicar\n");
scanf("%f",&numero);
printf("Tabla de multiplicar del numero %f\n",numero);
x=1;
while(x<=10)
{
tabla=numero*x;
printf("%f * %d = %f \n",numero,x,tabla);
x+=1;
}
return 0;
Conclusiones
Al tomar en cuenta una variable tipo flotante y lo mostramos tal cual, se mostraran
varios dgitos despus del punto aun siendo cero esos nmeros.
No se pueden poner acentos en el programa ni en su salida. Las estructuras de
repeticin nos sirven para hacer una tabla de multiplicar con poco cdigo.
Cubo
mientras x<=5
numeronumero+x
cuadradonumero*numero
cubonumero*numero*numero
escribir ,numero
escribir ,cuadrado
escribir ,cubo
xx+1
fin mientras
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int numero,x,cuadrado,cubo,y;
printf("Escribe un numero a elevar\n");
scanf("%d",&numero);
printf("Numero\tCuadrado\tCubo\n");
y=1;
x=1;
while(x<=5)
{
numero+=y;
cuadrado=numero*numero;
cubo=numero*numero*numero;
printf("\n%5d\t%5d\t%5d",numero,cuadrado,cubo);
x+=1;
}
return 0;
}
Captura de pantalla de salida
Conclusiones
Para poder justificar de la manera que se muestra en la captura de pantalla de
salida los nmeros, utilice un tabulador y al mostrar los nmeros se pone el
numero deseado de espacios otorgados para el mismo entre los signos % y d.
La estructura repetitiva es ms fcil de usar y ms prctica.
m1m
s(m-m1)*60
s1s
escribir El angulo en grados es
escribir
,x1
escribir , ,m1
escribir , ,s1
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
float rad,x,m,s;
int x1,m1,s1;
printf("CONVERSION DE RADIANES A GRADOS, MINUTOS Y
SEGUNDOS\n\n");
printf("Da los radianes\n");
scanf("%f",&rad);
x=(rad*180)/3.1416;
x1=x;
m=(x-x1)*60;
m1=m;
s=(m-m1)*60;
s1=s;
printf("\nEl angulo en grados es:\t%d\xA7,%d\xA7,%d\xA7",x1,m1,s1);
return 0;
}
Conclusiones
Para utilizar una variable tipo entera o flotante debes saber el uso que le daras y
cul te conviene ms, en este ejercicio es muy obvio ya que se utilizaron las dos
para fines parecidos, pero nos ayudaba a obtener los grados, minutos y segundos.
Captulo 2
Problema 3: Leer tres nmeros enteros y, si el primero de ellos es negativo,
calcular el producto de los tres, en caso contrario calcular la suma de ellos.
Algoritmo: Programa que calcula el producto o la suma de tres nmeros.
Inicio
escribir Escribe tres nmeros enteros
leer a
leer b
leer c
si a<0 entonces
productoa*b*c
escribir El producto es ,producto
si no
sumaa+b+c
escribir La suma es ,suma
fin si
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int a,b,c,producto,suma;
printf("Escribe tres numeros enteros\n");
scanf("%d%d%d",&a,&b,&c);
if(a<0)
{
producto=a*b*c;
printf("El producto es: %d",producto);
}
else
{
suma=a+b+c;
printf("La suma es: %d",suma);
}
return 0;
}
Conclusiones
Las condiciones hacen que si se cumple dicha condicin se realizara determinada
funcin y viceversa, las condiciones pueden ser muy sencillas como en este
ejercicio en el cual solo se compara el nmero dado con el cero.
if(resistencia<0)
printf("ERROR. El valor de la resistencia es negativo y no tiene un sentido
fisico\n");
else if(resistencia>1000)
printf("ERROR. El valor de la resistencia es muy grande\n");
else
{
v=resistencia*intensidad;
printf("\nLa caida de potencial en la resistencia es de %.2f volts\n",v);
}
return 0;
}
Captura de pantalla de salida
Conclusiones
Las condiciones se utilizaron para marcar o mostrar los errores en los datos que
se dan al programa, simplemente con la condicin y el mensaje. Me gustara ver
una manera de poder regresar al men inicial si hubo algn error.
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int a,b,c,d,e,f;
float x,y;
printf("Sea un sistema de ecuaciones:\n\n");
printf("ax+by=c\ndx+ey=f\n");
printf("Da el valor de a\n");
scanf("%d",&a);
printf("Da el valor de b\n");
scanf("%d",&b);
printf("Da el valor de c\n");
scanf("%d",&c);
printf("Da el valor de d\n");
scanf("%d",&d);
printf("Da el valor de e\n");
scanf("%d",&e);
printf("Da el valor de f\n");
scanf("%d",&f);
if(((a*e)-(b*d))==0)
printf("\nEl valor de x y y es infinito\n");
else
{
x=((c*e)-(b*f))/((a*e)-(b*d));
y=((a*f)-(c*d))/((a*e)-(b*d));
Conclusiones
Los programas hechos en c son una herramienta muy til y rpida que nos permite
resolver distintos tipos de ecuaciones.
Introducir muchos datos puede provocar un programa muy extenso para leerlos,
tal vez con una estructura repetitiva se podra hacer, quisiera verlo en clase.
x1 (((-1)*b)+sqrt(raiz))/(2*a)
x2(((-1)*b)-sqrt(raiz))/(2*a)
escribir Resultados
escribir x1= ,x1
escribir x2= ,x2
fin si
fin si
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int main()
{
int b,b1;
float a,c,x,x1,x2,x11,raiz,raiz2,im;
printf("En una ecuacion de la forma ax2+bx+c=0\n");
printf("Escribe los valores de a,b,c ordenadamente\n");
scanf("%f%d%f",&a,&b,&c);
if(a==0)
{
b1=(-1)*b;
x=b1/c;
printf("\nLa solucion es x= %f",x);
}
else
{
raiz=(b*b)-(4*a*c);
if(raiz<0)
{
raiz2=(-1)*(raiz);
im=sqrt(raiz2);
x1=im/(2*a);
x11=((-1)*b)/(2*a);
printf("\nResultados:\n");
printf("x1=%.2f+%.2fi\n",x11,x1);
printf("x2=%.2f-%.2fi\n",x11,x1);
}
else
{
x1=(((-1)*b)+sqrt(raiz))/(2*a);
x2=(((-1)*b)-sqrt(raiz))/(2*a);
printf("\nResultados:\n");
printf("x1=%.2f\nx2=%.2f\n",x1,x2);
}
}
return 0;
}
Conclusiones
Poder sacar nmeros imaginarios de una ecuacin de segundo grado es algo
complicado, se nota en el cdigo, sin embargo al poder hacerlo creamos un
programa capaz de resolver dichas ecuaciones rpidamente, sin duda, una
herramienta muy til.
Problema 7:
Dada la funcin U=f(x, y) tal que:
10
y2
si x*y<1
si x*y1
si x*y<1
si x*y1
Escribir un programa que calcule los valores de las funciones U y V, una vez
conocidas las coordenadas de un punto (x, y)
}
else
{
printf("\nLa funcion U es y^2");
printf("\nLa funcion V es y^2");
}
return 0;
}
Captura de pantalla de salida
Conclusiones
Dentro de las sentencias if o si se puede comparar una operacin con otro
nmero, variable, operacin, etc., teniendo en cuenta los parntesis. Esto nos
ahorra cdigo y el hacer mas operaciones as como el nmero de variables.
int main()
{
int ano;
printf("Ano bisiesto\n\n");
printf("Escribe el ano a analizar\n");
scanf("%d",&ano);
if(((ano%4)==0)&&((ano%400)!=0)&&((ano%100)!=0))
printf("\nEl ano %d si es bisiesto\n",ano);
else
printf("\nEl ano %d no es bisiesto\n",ano);
return 0;
}
Captura de pantalla de salida
Conclusiones
En una condicin podemos poner operadores lgicos para hacer ms especfica
dicha condicin, en el programa se ve ya que debamos comparar diferentes
divisiones en una misma condicin.
de abril,y
fin si
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int x,a,b,c,d,e,z,y;
printf("Escribe el ao en que deseas saber el domingo de pascua\n");
scanf("%d",&x);
a=x%19;
b=x%4;
c=x%7;
d=((19*a)+24)%30;
e=((2*b)+(4*c)+(6*d)+5)%7;
z=22+d+e;
if(z<=31)
printf("\nDomingo de pascua es el %d de marzo\n",z);
else
{
y=z-31;
printf("\nDomingo de pascua es el %d de abril\n",y);
}
return 0;
}
Conclusiones
float a,r,angulo,an,angu;
printf("Escribe la coordenada en x\n");
scanf("%d",&x);
printf("Escribe la coordeneda en y\n");
scanf("%d",&y);
printf("que deseas hacer con las coordenadas?\n");
printf("1.-Comprobar si pertenecen a una circunferencia\n");
printf("2.-Averiguar el cuadrante en el que se encuentra\n");
printf("3.-Pasar a coordenadas polares\n");
scanf("%d",&opc);
switch(opc)
{
case 1:
{
a=sqrt((x*x)+(y*y));
if(a<=10)
printf("\nEl punto si pertenece a una circunferencia de radio 10 y centro
(0,0)\n");
else
printf("\nEl punto no pertenece a una circunferencia de radio 10 y centro
(0,0)\n");
break;
}
case 2:
{
if(x>0 && y>0)
printf("\nEl punto esta en el cuadrante 1\n");
else if(x<0 && y>0)
printf("\nEl punto esta en el cuadrante 2\n");
Conclusiones
Este programa es muy extenso y se ocupan muchas variables, me gustara saber
cmo hacerlo ms corto y fcil.
Con la funcin switch o segn sea se facilita el hacer un men comparado al
utilizar un if.
Problema 11: Escribir un programa que permita efectuar el clculo del rea
de un cuadrado, un crculo o un tringulo equiltero segn la opcin seleccionada
por el usuario a travs de un men.
Algoritmo: Programa que calcule el rea de un cuadrado, circulo o tringulo
equiltero.
PRIMERA OPCIN
Inicio
escribir Elige el rea que deseas calcular
escribir 1.-cuadrado
escribir 2.-circulo
escribir 3.-triangulo equilatero
leer opcin
si opcin==1 entonces
escribir Cunto mide el lado del cuadrado?
leer lado
alado*lado
escribir El rea del cuadrado es ,a
si no si opcin==2 entonces
escribir Cunto mide el radio del circulo?
leer radio
a(radio*radio)*3.1416
escribir El rea del circulo es ,a
si no
escribir Cunto mide la base del triangulo?
leer base
escribir Cunto mide la altura del triangulo?
leer altura
a(base*altura)/2
escribir El rea del triangulo es ,a
fin si
Fin
SEGUNDA OPCIN
Inicio
escribir Elige el rea que deseas calcular
escribir 1.-cuadrado
escribir 2.-circulo
escribir 3.-triangulo equilatero
leer opcin
segn sea (opcin)
en caso opcin_1
escribir Cunto mide el lado del cuadrado?
leer lado
alado*lado
escribir El rea del cuadrado es ,a
en caso opcin_2
escribir Cunto mide el radio del circulo?
leer radio
a(radio*radio)*3.1416
escribir El rea del circulo es ,a
en caso opcin_3
escribir Cunto mide la base del triangulo?
leer base
escribir Cunto mide la altura del triangulo?
leer altura
a(base*altura)/2
escribir El rea del triangulo es ,a
fin segn sea
fin
Implementacin en lenguaje C
PRIMERA OPCIN
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int opcion,lado,base,altura;
float a,radio;
printf("Elige el area que deseas calcular\n");
printf("1.-Cuadrado\n2.-Circulo\n3.-Triangulo equilatero\n");
scanf("%d",&opcion);
if(opcion==1)
{
printf("\nCuanto mide el lado del cuadrado?\n");
scanf("%d",&lado);
a=lado*lado;
int main()
{
int opcion,lado,base,altura;
float a,radio;
printf("Elige el area que deseas calcular\n");
printf("1.-Cuadrado\n2.-Circulo\n3.-Triangulo equilatero\n");
scanf("%d",&opcion);
switch(opcion)
{
case 1:
{
printf("\nCuanto mide el lado del cuadrado?\n");
scanf("%d",&lado);
a=lado*lado;
printf("El area del cuadrado es %.2f\n",a);
break;
}
case 2:
{
printf("\nCuanto mide el radio del circulo?\n");
scanf("%f",&radio);
a=(radio*radio)*3.1416;
printf("El area del circulo es %.2f",a);
break;
}
case 3:
{
printf("\nCuanto mide la base del triangulo?\n");
scanf("%d",&base);
printf("\nCuanto mide la altura del triangulo?\n");
scanf("%d",&altura);
a=(base*altura)/2;
printf("El area del triangulo es %.2f\n",a);
break;
}
}
return 0;
}
Captura de pantalla de salida
Conclusiones
Con el switch y con el if se puede realizar un men de opciones, sin embargo, se
me hace ms fcil hacerlo con el switch ya que no es necesario comparar la
variable de entrada, en este caso el nmero de la opcin a realizar.
leer preci
long12*radio*3.1416
complong1-lon
si comp<preci
escribir Es correcto el valor del radio
si no
escribir Es incorrecto el valor del radio
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
float lon,radio,preci,long1,comp;
printf("Escribe la longitud de la circunferencia\n");
scanf("%f",&lon);
printf("Escribe el radio de la circunferencia\n");
scanf("%f",&radio);
printf("Escribe cuantos numeros deseas de precision en el calculo\n");
scanf("%f",&preci);
long1=2*radio*3.1416;
comp=long1-lon;
if(comp<preci)
printf("\nEs correcto el valor del radio\n");
else
printf("\nEs incorrecto el valor del radio\n");
return 0;
}
Conclusiones
Este problema fue el que se me dificulto ms, ya que no era muy entendible lo que
peda.
Se hizo una comparacin entre la precisin y el resto de la resta de la longitud
calculada y la leida.
Problema 13: Escribir un programa que pida dos caracteres por pantalla, los
ordene alfabticamente, y los imprima ordenados.
Algoritmo: Programa que ordene dos caracteres alfabticamente.
Inicio
escribir Escribe un carcter
leer a
escribir Escribe otro carcter
leer b
si a<b entonces
escribir ,a
escribir ,b
si no
escribir ,b
escribir ,a
fin si
fin
Implementacin en lenguaje C
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
char a,b;
printf("Orden alfabetico\n\n");
printf("Escribe un caracter\n");
scanf("%c%*c",&a);
printf("Escribe otro caracter\n");
scanf("%c%*c",&b);
printf("\nOrdenadas alfabeticamente\n");
if(a<b)
printf("%c\n%c\n",a,b);
else
printf("%c\n%c\n",b,a);
return 0;
}
Captura de pantalla de salida
Conclusiones
Se me dificulto poder comparar los caracteres, ya que el programa no ejecutaba el
programa como yo lo deseaba. Me gustara aprender ms sobre caracteres ya que
se me complica.
Al leer un carcter es como si leyera dos, por lo tanto el programa da problemas,
sin embargo hay formas de eliminar ese carcter sobrante.