Estructuras de Control
Las estructuras de control en el lenguaje c son aquellas que nos sirven para cumplir un determinado ciclo o bucle o determinar sentencias tipo condicionales, a continuación se presentaran varios ejemplos de programas donde se utilizaran sentencias como IF, ELSE, WHILE, DO, y algunas combinaciones de estos.
U3-IFUNO.
En este programa se ven dos tipos de if el if sencillo que seguido de este if sigue un else, pero tambien hay if niddo, dentro de un if puede existir otro if con su correspondiente else.
#include <stdio.h>
#include <stdlib.h>
int main()
{ //if sencillo
int numero1;
int num;
num=1;
numero1=10;
if(numero1==1) //aqui el programa pregunta si la ariable 1
puts("la variable tiene el valor de 1"); //si se cumple la afirmacion psada se imprimira el siguinte puts
else //aqui el programa sabe que la afirmacion de if fue incorrecta por ende imprimira las siguintes impreciones
puts("la variable tiene otro valor"); //puts es para cadenas de caracter
printf("la variable vale %d \n",numero1);//se puede saber el valor de la variable
//if anidado
if(num>0)// dentro de un if pueden existir otros if siempre y cundo lo que pregunta el primer if sea cierto
if(num==1) //este es el if aniddo es el if que sigue del anterior if
puts("eres el numero uno");
else //este els es anidado tambien ya que es el else que le sigue del if anidado
puts("el segundo no es recordado");
else //si es if principal no es cierto entonces se imprime este else
puts("eres negativo, numero es menor que uno");
return 0;
}
U3-IFDOS
El siguiente programa nos muestra otro tipo de impresiones para el puts, ya que cada if puede tener una o mas lineas de impresión, que se delimitan con {}, en el siguiente programa podrás visualizarlo mejor .
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
n=3;
if(n>0) //una sola linea no se ponen llaves
//si pone mas de una linea en el if entonces pone llaves
//si se cumple este if se sigue con las siguintes sentencias
{
puts("super cool, positivo a morir"); //antes del siguinte if que ya es anidado se puede imprimir esta afirmcion por el anterior if
if(n==5) //este vendria siendo nuestro if anidado
{puts("Give me the five");
puts("Dame los cinco pues"); //estas tres lineas se ponen en corchetes para indicar que le pertenecen solo al if anterior
puts("ya cinco y ya"); }
else //este es el else anidado que le sigue al anterior if
puts("no hojas sueltas, no eres cuaderno");
}
else //si el if principal no se cumple se salta hasta esta sentencia debido a que el numero es negativo
{
puts("algo darketo o emo");
}
}
U3PRACTICA-UNO.
El siguiente programa te pide una edad y te despliega si es mayor o menor de edad, si ya eres de la tercera edad o un anciano.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int edad; //se declara la variable
printf("dame tu edad \n");
scanf("%d",&edad); //se pide y guarda la edad en la variable designada
if (edad>=18) //se pregunt si es mayor de edad
puts("mayor de edad"); //se hace la afirmacion
else
puts("menor de edad"); //si no es mayor de edad se imprime esta linea
if (edad>=60&&edad<80) //se pregunta si esta dentro de la tercera edad
puts("tercera edad");
if (edad>=80) //se pregunta si ya es anciano
puts("anciano");
}
U3PRACTICA-UNO.
El siguiente programa te pide una edad y te despliega si es mayor o menor de edad, si ya eres de la tercera edad o un anciano.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int edad; //se declara la variable
printf("dame tu edad \n");
scanf("%d",&edad); //se pide y guarda la edad en la variable designada
if (edad>=18) //se pregunt si es mayor de edad
puts("mayor de edad"); //se hace la afirmacion
else
puts("menor de edad"); //si no es mayor de edad se imprime esta linea
if (edad>=60&&edad<80) //se pregunta si esta dentro de la tercera edad
puts("tercera edad");
if (edad>=80) //se pregunta si ya es anciano
puts("anciano");
}
U3PRACTICA-DOS
El siguinte programa pide tres numeros, y los despliega en una impresion de mayor a menor.
#include <stdio.h>
#include <stdlib.h>
int main()
{ //se declaran las variables
int n1;
int n2;
int n3;
//se piden y guardan las variables
printf("dame n1\n");
scanf("%d",&n1);
printf("dame n2\n");
scanf("%d",&n2);
printf("dame n3\n");
scanf("%d",&n3);
if(n1>=n2&&n1>=n3) //este es el primer caso donde el n1 es mayor que todos
{
printf("%d",n1); //si n1 es mayor se imprime
if (n2>=n3) //se pregunta si n2 es mayor que n3
{
printf("%d",n2); //si n2 es mayor se imprime
printf("%d",n3); //por ultimo se imprime n3
}
else //si n2 no es mayor a n3
{
printf("%d",n3); //primero se imprime n3
printf("%d",n2); //por ultimo se imprime n2
}
//en este caso tambien se concidera cundo los tres numeros son iguales es por eso el >=
//importante delimitar los if anidados y las multiples impresiones con {}
}
if(n2>n1&&n2>n3) //segundo caso n2 es mayor que todos y es el mismo procedimiento que el caso anterior
{
printf("%d",n2);
if(n1>n3)
{
printf("%d",n1);
printf("%d",n3);
}
else
{
printf("%d",n3);
printf("%d",n1);
}
}
if(n3>n1&&n3>n2) //tercer caso n3 es mayor que todos y es el mismo procedimiento que el primer caso
{
printf("%d",n3);
if(n1>n2)
{
printf("%d",n1);
printf("%d",n2);
}
else
{
printf("%d",n2);
printf("%d",n1);
}
}
}
U3PUTSyGETS
Las sentencias puts y gets son parecidas al printf y al scanf, pero no son iguales, debido a que en el printf y el scanf utilizan mascaras para imprimir y guardar datos, pues las sentencias puts y gets no utilizan dichas mascaras y cada valor o dato debe de estar delimitado por [] delante de cada tipo de identificador, ensegudida se mostraran dos ejemplos de como funcionan estas sentencias.
EJEMPLO UNO
#include <stdio.h>
#include <stdlib.h>
int main()
{ //ejemplo de como se utilizan estas sentencias
char url[]="http://www.ita.mx"; //dentro de los corchetes es donde se guarda la cadena de caracter
char nombre[]="abraham";
printf("%s\n",url); //este utiliza mascaras
puts(url); //este no utiliza mascaras
printf("%s\n",nombre);
puts(nombre);
char frase[100];
printf("Escribe una frase\n");
gets(frase); //este es un tipo de scanf para cadena
puts("Frase introducida:");
puts(frase);
getch(); //retiene la frase y es para un solo caracter
}
EJEMPLO DOS
#include <stdio.h>
#include <stdlib.h>
int main()
{ //capturar nombre edad, edad, correo y direccion
char nom[30]; //dependiendo el tipo de dato a capturar es el tipo que se le asignara
int edad[20]; //dentro de los [] hay un numero que delimita el total de caracteres asignados par la variable
char correo[30];
char direccion[30];
printf("dame tu nombre\n"); //siempre hay que indicarle al usuario lo que le vamos a pedir
gets(nom); //la funcion gets te captura la cadena de caracteres y la guarda en el identificador que esta dentro de los parentesis
puts("nombre introducido");
puts(nom); //imprime lo que tenga guardado el identificador dentro de los parentesis
printf("dame tu edad\n");
gets(edad);
puts("edad introducida");
puts(edad);
printf("dame tu correo\n");
gets(correo);
puts("correo introducido");
puts(correo);
printf("dame tu direccion\n");
gets(direccion);
puts("direccion introducida");
puts(direccion);
getch();
return 0;
}
U3RAND
La sentencia rand es para desglosar números aleatorios, pero a su vez no son muy aleatorios siempre inicia con el 41 y después desglosa otro tipo de números.
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> //PARA UTILIZAR LA SENTENCIA RAND ES NECESARIO ESTA LIBRERIA
//la funcion rand es para desglozar numeros aleatorios
int main()
{
int n;
printf("%d\n",rand()); //rand genera numeros aleatorios
printf("%d\n",rand());
printf("%d\n",rand());
printf("%d\n",rand()%1000); //% y numero delimita el rango
printf("%d\n",rand()%1000);
printf("%d\n",rand()%1000);
printf("%d\n",rand()%1000);
printf("%d\n",rand()%1000);
printf("%d\n",rand()%1000);
}
U3RAND_DOS
Dentro de este programa se busca la forma de no empezar la generación de números aleatorios en 41, con la función for, se establece un contador el cual sera designado l numero total de números impresos, con las funciones if, else, se hace la impresión.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int i,r;
for(i=0;i<6;i++) //aqui pregunta si i es mayor que 6 y si no, lo aumenta en 1
{ r=rand();
if(r==41) //pregunta si rand es igual a 41
{
continue; //si r es 41 se pasa directo a else
}
else
{
printf("%d\n",rand()%101); //imprime los numeros aleatorios y ya no esta el 41
}
//printf("%d\n",rand());
//printf("%d\n",rand()%101);
}
return 0;
}
WHILE
Esta sentencia se escribe while(variable), que significa, mientras la variable tenga un valor este seguirá corriendo, el while es un bucle repetitivo que siempre se deben de poner limites para terminarlo o si no este seria un bucle infinito.
U3WHILE-CERO
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int variable=10;
while(variable) //mientras la variable existe el bucle while seguira corriendo
{ //este bucle necesita de corchetes
printf("valor de la variable %d\n",variable);
variable--; //se podria decir que este es el limite ya que cuendo la variable se decremente a cero este se detendra
printf("valor tras decrementar la variable %d\n",variable);
}
}
U3WHILE-UNO
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc,char**argv)
{ //en este programa puedes poner todo tipo de caracter hasta que pongas 'A' se detiene este programa
char c;
c='\0'; //'\n' significa caracter null o nulo
while(c!='A')c=getchar(); //el while pregunta si el caracter es diferente de A cuando este se cumple se termina el programa
//c=getchar() es la sentencia para registrar los caracteres en la variable c
}
U3PUTSyGETS
Las sentencias puts y gets son parecidas al printf y al scanf, pero no son iguales, debido a que en el printf y el scanf utilizan mascaras para imprimir y guardar datos, pues las sentencias puts y gets no utilizan dichas mascaras y cada valor o dato debe de estar delimitado por [] delante de cada tipo de identificador, ensegudida se mostraran dos ejemplos de como funcionan estas sentencias.
EJEMPLO UNO
#include <stdio.h>
#include <stdlib.h>
int main()
{ //ejemplo de como se utilizan estas sentencias
char url[]="http://www.ita.mx"; //dentro de los corchetes es donde se guarda la cadena de caracter
char nombre[]="abraham";
printf("%s\n",url); //este utiliza mascaras
puts(url); //este no utiliza mascaras
printf("%s\n",nombre);
puts(nombre);
char frase[100];
printf("Escribe una frase\n");
gets(frase); //este es un tipo de scanf para cadena
puts("Frase introducida:");
puts(frase);
getch(); //retiene la frase y es para un solo caracter
}
EJEMPLO DOS
#include <stdio.h>
#include <stdlib.h>
int main()
{ //capturar nombre edad, edad, correo y direccion
char nom[30]; //dependiendo el tipo de dato a capturar es el tipo que se le asignara
int edad[20]; //dentro de los [] hay un numero que delimita el total de caracteres asignados par la variable
char correo[30];
char direccion[30];
printf("dame tu nombre\n"); //siempre hay que indicarle al usuario lo que le vamos a pedir
gets(nom); //la funcion gets te captura la cadena de caracteres y la guarda en el identificador que esta dentro de los parentesis
puts("nombre introducido");
puts(nom); //imprime lo que tenga guardado el identificador dentro de los parentesis
printf("dame tu edad\n");
gets(edad);
puts("edad introducida");
puts(edad);
printf("dame tu correo\n");
gets(correo);
puts("correo introducido");
puts(correo);
printf("dame tu direccion\n");
gets(direccion);
puts("direccion introducida");
puts(direccion);
getch();
return 0;
}
U3RAND
La sentencia rand es para desglosar números aleatorios, pero a su vez no son muy aleatorios siempre inicia con el 41 y después desglosa otro tipo de números.
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h> //PARA UTILIZAR LA SENTENCIA RAND ES NECESARIO ESTA LIBRERIA
//la funcion rand es para desglozar numeros aleatorios
int main()
{
int n;
printf("%d\n",rand()); //rand genera numeros aleatorios
printf("%d\n",rand());
printf("%d\n",rand());
printf("%d\n",rand()%1000); //% y numero delimita el rango
printf("%d\n",rand()%1000);
printf("%d\n",rand()%1000);
printf("%d\n",rand()%1000);
printf("%d\n",rand()%1000);
printf("%d\n",rand()%1000);
}
U3RAND_DOS
Dentro de este programa se busca la forma de no empezar la generación de números aleatorios en 41, con la función for, se establece un contador el cual sera designado l numero total de números impresos, con las funciones if, else, se hace la impresión.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int i,r;
for(i=0;i<6;i++) //aqui pregunta si i es mayor que 6 y si no, lo aumenta en 1
{ r=rand();
if(r==41) //pregunta si rand es igual a 41
{
continue; //si r es 41 se pasa directo a else
}
else
{
printf("%d\n",rand()%101); //imprime los numeros aleatorios y ya no esta el 41
}
//printf("%d\n",rand());
//printf("%d\n",rand()%101);
}
return 0;
}
WHILE
Esta sentencia se escribe while(variable), que significa, mientras la variable tenga un valor este seguirá corriendo, el while es un bucle repetitivo que siempre se deben de poner limites para terminarlo o si no este seria un bucle infinito.
U3WHILE-CERO
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int variable=10;
while(variable) //mientras la variable existe el bucle while seguira corriendo
{ //este bucle necesita de corchetes
printf("valor de la variable %d\n",variable);
variable--; //se podria decir que este es el limite ya que cuendo la variable se decremente a cero este se detendra
printf("valor tras decrementar la variable %d\n",variable);
}
}
U3WHILE-UNO
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc,char**argv)
{ //en este programa puedes poner todo tipo de caracter hasta que pongas 'A' se detiene este programa
char c;
c='\0'; //'\n' significa caracter null o nulo
while(c!='A')c=getchar(); //el while pregunta si el caracter es diferente de A cuando este se cumple se termina el programa
//c=getchar() es la sentencia para registrar los caracteres en la variable c
}
U3WHILE-DOS
#include <stdio.h>
#include <stdlib.h>
int main()
{ //Diferencia entre --num y otro--
int num,otro;
num=10;
otro=10;
while(num)
{
//printf("%d numero\t",num);
--num; //primero se decremete y luego se imprime
printf("%d numero\t",num);
printf("%d otro \n",otro); //primero se imprime y luego se decrementa
otro--;
}
}
DO WHILE
Esta sentencia primero hace un proceso y finalmente pregunta con el while y mientras que se cumpla lo que pregunta while se seguirá corriendo el programa hasta ya no cumplirse.
U3DO-WHILE-UNO
#include <stdio.h>
#include <stdlib.h>
//se regitra un caracter y este se decrementara hasta ser cero
int main()
{
char c='9'; //El numero 9 se registra como alfanumerico en el ASCII
do //primero hace un proceso
{
printf("numero actual %c\n",c);
--c; //se decrementa la posicion de la variable en el Ascci
} while(c>='0'); //finalmente pregunta para finalizar el programa
}
U3DO-WHILE-DOS
#include <stdio.h>
#include <stdlib.h>
//captura de numeros mayores que 100 s es menor finaliza
int main()
{
int num;
do //se hace un proceso de capturar numero
{
scanf("%d",&num); //con esta funcion se capturan los numeros
} while(num>100);//mientras los numeros sean mayores que 100 el programa seguira corriendo
}
U3IF-UNO-EJERCICIO
En este programa se genera un numero aleatorio y le pide al usuario que le atine a dicho numero, si le atina imprime bien, si no le atina se termina el programa.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//programa donde debes de atinarle a un numero aleatorio
int main()
{
int mag;//se asigna la variable
int intenta;//aqui se gurdara el numero de intento
mag=rand();//mag sera un numero "aleatoria" 41
printf("atinale al numero\n");//indicar al usuario de registrar numero
scanf("%d",&intenta);//se guarda el numero el numero en intento
if(intenta==mag)//se pregunta si el numero capturado es igual al numero aleatorio
printf("**bien**\n");//se imprime que esta correcto y si no, no imprime nada
getch();
}
U3IF-DOS-EJERCICIO
Es el mismo programa anterior solo que en esta vez se le agrega agrega la función else donde se imprime incorrecto.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//programa donde debes de atinarle a un numero aleatorio
int main()
{
int mag;//se asigna la variable
int intenta;//aqui se gurdara el numero de intento
mag=rand();//mag sera un numero "aleatoria" 41
printf("atinale al numero\n");//indicar al usuario de registrar numero
scanf("%d",&intenta);//se guarda el numero el numero en intento
if(intenta==mag)//se pregunta si el numero capturado es igual al numero aleatorio
printf("**bien**\n");//se imprime que esta correcto y si no, no imprime nada
getch();
}
U3-IF-TRES-EJERCICIO
Este programa biene siendo el mismo que el anterior solo que en este caso te da una pista utilizando la sentencia if,
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int mag;
int intenta;
mag=rand();
printf("atinale al numero\n");
scanf("%d",&intenta);
if(intenta==mag) //se pregunta si el intento es igual a 41
{
printf("**bien**\n"); //si se cumple esta condicion se imprime
printf("%d es el numero magico\n",mag);//se imprime el numero magico
}
else //si no le atina se imprime lo siguiente
{
printf("**incorrecto**\n"); //se imprime incorrecto
if(intenta>mag) //dentro de este else esta un if
printf("demasiado alto\n",mag); //te da una pista
else printf("demasiado bajo\n"); //te da una pista
}
getch();
}
U3-IF-CUATRO-EJERCICO
Este programa utiliza if, else y es prácticamente los mismo que el anterior.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int mag;
int intenta;
mag=rand();
printf("atinale al numero\n");
scanf("%d",&intenta);
if(intenta==mag) //Si el numero capturado es igual al aleatorio
{
printf("**bien**\n"); //se imprime la afirmacion
printf("%d es el numero magico \n",mag); //se imprime el numero aleatorio
}
else if(intenta>mag) //si el numero capturado no es igual al aleatorio se pregunta si es mayor o menor
printf("**incorrecto**demasiado alto \n",mag); //si es mayor se imprime esto
else printf("**incorrecto**demasiado bajo\n",mag); //si es menor se imprime esto
}
U3CLAVE-DE-ACCESO
Te pide una clave de acceso y solo tienes tres intentos para capturarla si no lo logras el programa se cierra.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>//reconoce la funcion strcmp
//tres intentos y si no se puede se cierra
int main()
{
char *c1;
char *c2="abraham123";
int c=0; //esta variable nos servira de contador
do
{
printf("dame palabra clave \n");
gets(c1);//con gets se captura la cadena de cracter
if(strcmp(c1,c2)==0) //strcmp compara dos cadenas 0 si es igual y 1 si es diferente
{
printf("le atinaste\n");
break;//se rompe el if y sigue con la siguinte sentencia
}
c++;//se aumenta el contador
} while(c<3); //mientras c sea menor que 3 el programa sigue corriendo
getch();
}
U3-USUARIO-Y-CLAVE DE ACCESO.
En este programa ya se relaciona la clave con tres usuarios, entonces el programa pregunta el usuario, tiene tres intentos para registrar alguno de los tres usuarios y otros tres intentos para registrar la contraseña
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
//3 usuarios y ademas clave si no es ninguno de los anetriores no pedira la clave//
int main()
{
char *u1="abraham"; //son los tres usuarios
char *u2="martinez";
char *u3="raygoza";
char *c1[100];
char *con="abr12"; //esta es la contraseña
char *intento[100];
int y=0; //los intentos pra capturar la contraseña
int x=0;//los intentos para capturar el usuario
do //dentro de este do se preguntara si el usuario capturado es alguno de los tres y su respectiva contraseña
{
printf("usuario:\n");
gets(c1);
if (strcmp(c1,u1)==0) //si le atina al usuario 1 /////////////////usuario 1/////////
{
printf("bienvenido usuario \n");//le da la bienvenida
do //dentro de este do se pide la contraseña
{
printf("escribe tu contraseña \n");
gets(intento);
if (strcmp(intento,con)==0)//pregunta si la contraseña es igual
{
printf("haz entrado \n");//si es cierto se imprime esto
break; //si no se rompe el if
}
y++; //pasa a aumentar el contdor
}
while(y<3); //mientras este contador sea menor que tres seguira el ciclo
break; //rompe el primer if y pasa a comparar con el uduario 2
}
if (strcmp(c1,u2)==0) //se compara con usuario 2 y es el mismo procedimiento ////////// usuario2/////
{
printf("bienvenido usuario \n");
do
{
printf("escribe tu contraseña \n");
gets(intento);
if (strcmp(intento,con)==0)
{
printf("haz entrado \n");
break;
}
y++;
}
while(y<3);
break;
}
if (strcmp(c1,u3)==0) /////////////////usuario 3/////
{
printf("bienvenido usuario \n");
do
{
printf("escribe tu contraseña \n");
gets(intento);
if (strcmp(intento,con)==0)
{
printf("haz entrado \n");
break;
}
y++;
}
while(y<3);
break;
}
x++; //si ningun el usuario capturado no coincide con los tres usuarios de aumenta la cuenta
}
while (x<3);//si la cuenta supera a tres ya no puede regitrar la contraseña
getch();
getch();
}
U3-SWITCH-MENU
Dentro de este programa se incluyen otros programas, como ya habíamos mencionado antes el switch te pregunta que numero es y dependiendo el numero de la variable se le asignaba un caso, en esta ocasión cada caso hace algo diferente.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int main()
{
int (n);
puts("1. Pide password\n");
puts("2.Suma numeros\n");
puts("3.ordena numeros\n");
puts("4.Salir\n");
printf("DAME TU OPCION\n");
scanf("%d",&n);
switch(n)
{
case 1:
printf("pide clave\n");
char *c1[100];
char *c2="abraham123";
int cc=0; //esta variable nos servira de contador
do
{
printf("dame palabra clave \n");
scanf("%s",c1);//con gets se captura la cadena de cracter
if(strcmp(c1,c2)==0) //strcmp compara dos cadenas 0 si es igual y 1 si es diferente
{
printf("le atinaste\n");
break;//se rompe el if y sigue con la siguinte sentencia
}
cc++;//se aumenta el contador
} while(cc<3); //mientras c sea menor que 3 el programa sigue corriendo
getch();
break;
case 2:
printf("Suma de numeros\n");
int a;
int b;
printf("dame un numero n1\n");
scanf("%d",&a);
printf("dame un numero n2\n");
scanf("%d",&b);
printf("la suma de n1+n2: %d\n",a+b);
break;
case 3:
printf("ordenar numeros\n");
//se declaran las variables
int n1;
int n2;
int n3;
//se piden y guardan las variables
printf("dame n1\n");
scanf("%d",&n1);
printf("dame n2\n");
scanf("%d",&n2);
printf("dame n3\n");
scanf("%d",&n3);
if(n1>=n2&&n1>=n3) //este es el primer caso donde el n1 es mayor que todos
{
printf("%d",n1); //si n1 es mayor se imprime
if (n2>=n3) //se pregunta si n2 es mayor que n3
{
printf("%d",n2); //si n2 es mayor se imprime
printf("%d",n3); //por ultimo se imprime n3
}
else //si n2 no es mayor a n3
{
printf("%d",n3); //primero se imprime n3
printf("%d",n2); //por ultimo se imprime n2
}
//en este caso tambien se concidera cundo los tres numeros son iguales es por eso el >=
//importante delimitar los if anidados y las multiples impresiones con {}
}
if(n2>n1&&n2>n3) //segundo caso n2 es mayor que todos y es el mismo procedimiento que el caso anterior
{
printf("%d",n2);
if(n1>n3)
{
printf("%d",n1);
printf("%d",n3);
}
else
{
printf("%d",n3);
printf("%d",n1);
}
}
if(n3>n1&&n3>n2) //tercer caso n3 es mayor que todos y es el mismo procedimiento que el primer caso
{
printf("%d",n3);
if(n1>n2)
{
printf("%d",n1);
printf("%d",n2);
}
else
{
printf("%d",n2);
printf("%d",n1);
}
}
break;
case 4:
printf("saliste\n");
break;
default:
printf("no hay opcion\n");
}
}
U3-INVIERTE-EL-NUMERO
Este programa por medio de operaciones elementales como el modulo(%), y la divicion(/), y por medio de un while, se puede llegar a invertir un numero ejemplo 21---->12
#include <stdio.h>
#include <stdlib.h>
//pide un numero y lo invierte ejemplo 16---->61
int main()
{
int numero;
int digito_invertido;
printf("introduce un numero\n");
scanf("%d",&numero);
while(numero!=0)
{
digito_invertido=numero%10;//los divide entre 10 e imprime el numero que sale
//printf("modulo de numero sobre 10 %d\n",numero%10);
printf("%d",digito_invertido);
numero=numero/10;//lo divide entre 10 hasta que sea diferente de 0
//printf("numero sobre 10 %d\n",numero/10);
}
printf("\n");
}
U3-SWITCH-SEMANA
Este programa utiliza la función switch y solo nos imprime los dias de la semana dependiendo del caso, ya hemos vistos esta estructura en programas pasados, por lo tanto su entendimiento sera mas sencillo.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
printf("introdusca numero del 1 al 7: \n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("lunes\n");
break;
case 2:
printf("martea\n");
break;
case 3:
printf("miercoles\n");
break;
case 4:
printf("jueves\n");
break;
case 5:
printf("viernes\n");
break;
case 6:
printf("sabado\n");
break;
case 7:
printf("domingo\n");
break;
default:
printf("opcion no valida\n");
break;
}
system("pause");
return 0;
}
U3-SWITCH-VOCALES
Mismo programa en estructura al anterior pero en esta vez ya no son números, ya son letras (vocales) y dependiendo de la vocal es el caso que va a realizarse o a imprimirse.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c;
printf("introduzca caracter: \n");
scanf("%c",&c);
switch(c)
{
case 'a'://ya se utilizan letras para identificar los casos su notacion es 'a' entrecomillado sencillo
printf("es vocal\n");
break;
case 'e':
printf("es vocal\n");
break;
case 'i':
printf("es vocal\n");
break;
case 'o':
printf("es vocal\n");
break;
case 'u':
printf("es vocal\n");
break;
default:
printf("no es vocal papu\n");
break;
}
system("pause");//este comando es parecido al getch congela la pantalla hasta presionar cualquier tecla
return 0;
}
EJERCICIO 1.
Elaborar un programa que pida 5 números y te diga cual es el mayor.
En este programa se utilizo la función if, con varias condicionales a continuación el código.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n1;
int n2;
int n3;
int n4;
int n5;
printf("dame n1 \n");
scanf("%d",&n1);
printf("dame n2 \n");
scanf("%d",&n2);
printf("dame n3 \n");
scanf("%d",&n3);
printf("dame n4 \n");
scanf("%d",&n4);
printf("dame n5 \n");
scanf("%d",&n5);
if(n1>=n2&&n1>=n3&&n1>=n4&&n1>=n5)//solo existe una posibilidad de que sea cierto, si es asi se imprime n1 o el num
printf("mayor n1 %d",n1);
if(n2>n1&&n2>n3&&n2>n4&&n2>n5)
printf("mayor n2 %d",n2);
if(n3>n2&&n3>n1&&n3>n4&&n3>n5)
printf("mayor n3 %d",n3);
if(n4>n1&&n4>n2&&n4>n3&&n4>n5)
printf("mayor n4 %d",n4);
if(n5>n1&&n5>n2&&n5>n3&&n5>n4)
printf("mayor n4 %d",n4);
}
U3IF-UNO-EJERCICIO
En este programa se genera un numero aleatorio y le pide al usuario que le atine a dicho numero, si le atina imprime bien, si no le atina se termina el programa.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//programa donde debes de atinarle a un numero aleatorio
int main()
{
int mag;//se asigna la variable
int intenta;//aqui se gurdara el numero de intento
mag=rand();//mag sera un numero "aleatoria" 41
printf("atinale al numero\n");//indicar al usuario de registrar numero
scanf("%d",&intenta);//se guarda el numero el numero en intento
if(intenta==mag)//se pregunta si el numero capturado es igual al numero aleatorio
printf("**bien**\n");//se imprime que esta correcto y si no, no imprime nada
getch();
}
U3IF-DOS-EJERCICIO
Es el mismo programa anterior solo que en esta vez se le agrega agrega la función else donde se imprime incorrecto.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//programa donde debes de atinarle a un numero aleatorio
int main()
{
int mag;//se asigna la variable
int intenta;//aqui se gurdara el numero de intento
mag=rand();//mag sera un numero "aleatoria" 41
printf("atinale al numero\n");//indicar al usuario de registrar numero
scanf("%d",&intenta);//se guarda el numero el numero en intento
if(intenta==mag)//se pregunta si el numero capturado es igual al numero aleatorio
printf("**bien**\n");//se imprime que esta correcto y si no, no imprime nada
getch();
}
U3-IF-TRES-EJERCICIO
Este programa biene siendo el mismo que el anterior solo que en este caso te da una pista utilizando la sentencia if,
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int mag;
int intenta;
mag=rand();
printf("atinale al numero\n");
scanf("%d",&intenta);
if(intenta==mag) //se pregunta si el intento es igual a 41
{
printf("**bien**\n"); //si se cumple esta condicion se imprime
printf("%d es el numero magico\n",mag);//se imprime el numero magico
}
else //si no le atina se imprime lo siguiente
{
printf("**incorrecto**\n"); //se imprime incorrecto
if(intenta>mag) //dentro de este else esta un if
printf("demasiado alto\n",mag); //te da una pista
else printf("demasiado bajo\n"); //te da una pista
}
getch();
}
U3-IF-CUATRO-EJERCICO
Este programa utiliza if, else y es prácticamente los mismo que el anterior.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int mag;
int intenta;
mag=rand();
printf("atinale al numero\n");
scanf("%d",&intenta);
if(intenta==mag) //Si el numero capturado es igual al aleatorio
{
printf("**bien**\n"); //se imprime la afirmacion
printf("%d es el numero magico \n",mag); //se imprime el numero aleatorio
}
else if(intenta>mag) //si el numero capturado no es igual al aleatorio se pregunta si es mayor o menor
printf("**incorrecto**demasiado alto \n",mag); //si es mayor se imprime esto
else printf("**incorrecto**demasiado bajo\n",mag); //si es menor se imprime esto
}
U3CLAVE-DE-ACCESO
Te pide una clave de acceso y solo tienes tres intentos para capturarla si no lo logras el programa se cierra.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>//reconoce la funcion strcmp
//tres intentos y si no se puede se cierra
int main()
{
char *c1;
char *c2="abraham123";
int c=0; //esta variable nos servira de contador
do
{
printf("dame palabra clave \n");
gets(c1);//con gets se captura la cadena de cracter
if(strcmp(c1,c2)==0) //strcmp compara dos cadenas 0 si es igual y 1 si es diferente
{
printf("le atinaste\n");
break;//se rompe el if y sigue con la siguinte sentencia
}
c++;//se aumenta el contador
} while(c<3); //mientras c sea menor que 3 el programa sigue corriendo
getch();
}
U3-USUARIO-Y-CLAVE DE ACCESO.
En este programa ya se relaciona la clave con tres usuarios, entonces el programa pregunta el usuario, tiene tres intentos para registrar alguno de los tres usuarios y otros tres intentos para registrar la contraseña
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
//3 usuarios y ademas clave si no es ninguno de los anetriores no pedira la clave//
int main()
{
char *u1="abraham"; //son los tres usuarios
char *u2="martinez";
char *u3="raygoza";
char *c1[100];
char *con="abr12"; //esta es la contraseña
char *intento[100];
int y=0; //los intentos pra capturar la contraseña
int x=0;//los intentos para capturar el usuario
do //dentro de este do se preguntara si el usuario capturado es alguno de los tres y su respectiva contraseña
{
printf("usuario:\n");
gets(c1);
if (strcmp(c1,u1)==0) //si le atina al usuario 1 /////////////////usuario 1/////////
{
printf("bienvenido usuario \n");//le da la bienvenida
do //dentro de este do se pide la contraseña
{
printf("escribe tu contraseña \n");
gets(intento);
if (strcmp(intento,con)==0)//pregunta si la contraseña es igual
{
printf("haz entrado \n");//si es cierto se imprime esto
break; //si no se rompe el if
}
y++; //pasa a aumentar el contdor
}
while(y<3); //mientras este contador sea menor que tres seguira el ciclo
break; //rompe el primer if y pasa a comparar con el uduario 2
}
if (strcmp(c1,u2)==0) //se compara con usuario 2 y es el mismo procedimiento ////////// usuario2/////
{
printf("bienvenido usuario \n");
do
{
printf("escribe tu contraseña \n");
gets(intento);
if (strcmp(intento,con)==0)
{
printf("haz entrado \n");
break;
}
y++;
}
while(y<3);
break;
}
if (strcmp(c1,u3)==0) /////////////////usuario 3/////
{
printf("bienvenido usuario \n");
do
{
printf("escribe tu contraseña \n");
gets(intento);
if (strcmp(intento,con)==0)
{
printf("haz entrado \n");
break;
}
y++;
}
while(y<3);
break;
}
x++; //si ningun el usuario capturado no coincide con los tres usuarios de aumenta la cuenta
}
while (x<3);//si la cuenta supera a tres ya no puede regitrar la contraseña
getch();
getch();
}
U3-SWITCH-UNO
Este programa no es un switch si no es una simulacion de como se comportaria este comando si fuese con if y else.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//este programa es una simulacion de como se comporta el comando swicht si fuese if y else
int main()
{
int num;
puts("introduce un numero\n");
scanf("%d",&num);
if(num==1)
printf("Si es un uno\n");
//es lo mismo con las siguientes dos lineas
//puts("si eres un uno");
//puts(num);
else if(num==2)
printf("si eres un dos\n");
else if(num==3)
printf("eres un numero tres");
else printf("no eres uno ni dos u tres\n");
}
U3-SWITCH-DOS
La función switch funciona para asignar casos a una variable, o sea, si esta variable toma un cierto valor el programa hace cierta accion, y dentro de cada caso se pueden hacer miniprogramas.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>//utilizamos esta libreria por la sentencia getch
int main()
{
int n;
puts("dame un numero, paciencia \n");
scanf("%d",&n);
switch(n)
{
case 1: //en este caso n es igual a 1
puts("numero uno\n");//lo imprime)
break;//rompe el ciclo
case 2:
puts("numero dos\n");
break;
case 3:
puts("numero tres\n");
break;
default:
puts("no eres de medalla\n");
}
getch();
}
U3-SWITCH-MENU
Dentro de este programa se incluyen otros programas, como ya habíamos mencionado antes el switch te pregunta que numero es y dependiendo el numero de la variable se le asignaba un caso, en esta ocasión cada caso hace algo diferente.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int main()
{
int (n);
puts("1. Pide password\n");
puts("2.Suma numeros\n");
puts("3.ordena numeros\n");
puts("4.Salir\n");
printf("DAME TU OPCION\n");
scanf("%d",&n);
switch(n)
{
case 1:
printf("pide clave\n");
char *c1[100];
char *c2="abraham123";
int cc=0; //esta variable nos servira de contador
do
{
printf("dame palabra clave \n");
scanf("%s",c1);//con gets se captura la cadena de cracter
if(strcmp(c1,c2)==0) //strcmp compara dos cadenas 0 si es igual y 1 si es diferente
{
printf("le atinaste\n");
break;//se rompe el if y sigue con la siguinte sentencia
}
cc++;//se aumenta el contador
} while(cc<3); //mientras c sea menor que 3 el programa sigue corriendo
getch();
break;
case 2:
printf("Suma de numeros\n");
int a;
int b;
printf("dame un numero n1\n");
scanf("%d",&a);
printf("dame un numero n2\n");
scanf("%d",&b);
printf("la suma de n1+n2: %d\n",a+b);
break;
case 3:
printf("ordenar numeros\n");
//se declaran las variables
int n1;
int n2;
int n3;
//se piden y guardan las variables
printf("dame n1\n");
scanf("%d",&n1);
printf("dame n2\n");
scanf("%d",&n2);
printf("dame n3\n");
scanf("%d",&n3);
if(n1>=n2&&n1>=n3) //este es el primer caso donde el n1 es mayor que todos
{
printf("%d",n1); //si n1 es mayor se imprime
if (n2>=n3) //se pregunta si n2 es mayor que n3
{
printf("%d",n2); //si n2 es mayor se imprime
printf("%d",n3); //por ultimo se imprime n3
}
else //si n2 no es mayor a n3
{
printf("%d",n3); //primero se imprime n3
printf("%d",n2); //por ultimo se imprime n2
}
//en este caso tambien se concidera cundo los tres numeros son iguales es por eso el >=
//importante delimitar los if anidados y las multiples impresiones con {}
}
if(n2>n1&&n2>n3) //segundo caso n2 es mayor que todos y es el mismo procedimiento que el caso anterior
{
printf("%d",n2);
if(n1>n3)
{
printf("%d",n1);
printf("%d",n3);
}
else
{
printf("%d",n3);
printf("%d",n1);
}
}
if(n3>n1&&n3>n2) //tercer caso n3 es mayor que todos y es el mismo procedimiento que el primer caso
{
printf("%d",n3);
if(n1>n2)
{
printf("%d",n1);
printf("%d",n2);
}
else
{
printf("%d",n2);
printf("%d",n1);
}
}
break;
case 4:
printf("saliste\n");
break;
default:
printf("no hay opcion\n");
}
}
U3-INVIERTE-EL-NUMERO
Este programa por medio de operaciones elementales como el modulo(%), y la divicion(/), y por medio de un while, se puede llegar a invertir un numero ejemplo 21---->12
#include <stdio.h>
#include <stdlib.h>
//pide un numero y lo invierte ejemplo 16---->61
int main()
{
int numero;
int digito_invertido;
printf("introduce un numero\n");
scanf("%d",&numero);
while(numero!=0)
{
digito_invertido=numero%10;//los divide entre 10 e imprime el numero que sale
//printf("modulo de numero sobre 10 %d\n",numero%10);
printf("%d",digito_invertido);
numero=numero/10;//lo divide entre 10 hasta que sea diferente de 0
//printf("numero sobre 10 %d\n",numero/10);
}
printf("\n");
}
U3-SWITCH-SEMANA
Este programa utiliza la función switch y solo nos imprime los dias de la semana dependiendo del caso, ya hemos vistos esta estructura en programas pasados, por lo tanto su entendimiento sera mas sencillo.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i;
printf("introdusca numero del 1 al 7: \n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("lunes\n");
break;
case 2:
printf("martea\n");
break;
case 3:
printf("miercoles\n");
break;
case 4:
printf("jueves\n");
break;
case 5:
printf("viernes\n");
break;
case 6:
printf("sabado\n");
break;
case 7:
printf("domingo\n");
break;
default:
printf("opcion no valida\n");
break;
}
system("pause");
return 0;
}
U3-SWITCH-VOCALES
Mismo programa en estructura al anterior pero en esta vez ya no son números, ya son letras (vocales) y dependiendo de la vocal es el caso que va a realizarse o a imprimirse.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char c;
printf("introduzca caracter: \n");
scanf("%c",&c);
switch(c)
{
case 'a'://ya se utilizan letras para identificar los casos su notacion es 'a' entrecomillado sencillo
printf("es vocal\n");
break;
case 'e':
printf("es vocal\n");
break;
case 'i':
printf("es vocal\n");
break;
case 'o':
printf("es vocal\n");
break;
case 'u':
printf("es vocal\n");
break;
default:
printf("no es vocal papu\n");
break;
}
system("pause");//este comando es parecido al getch congela la pantalla hasta presionar cualquier tecla
return 0;
}
U3-PRACTICA3
La siguiente practica es sobre la función switch, y el menú que se puede crear utilizando esta funcion, ahora lo volvemos cíclico metiendo todo dentro de un while y mientras este exista el menú se repitiera el numero de veces deseado.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int opc;
while(opc!=4)//mientras la opcion sea diferente de 4 el menu y los procesos se seguiran repitiendo
{
printf(" MENU \n");
printf("1. opcion 1\n");
printf("2. opcion dos\n");
printf("3. opcion tres\n");
printf("4. salir\n");
printf("elige tu opcino......\n");
scanf("%d",&opc);
printf("la opcion que eligio fue %d\n",opc);
switch(opc)
{
case 1:
printf("uno\n");
break;
case 2:
printf("dos\n");
break;
case 3:
printf("tres\n");
break;
default:
printf("adios\n");
break;
}
}
return 0;
}
Elaborar un programa que pida 5 números y te diga cual es el mayor.
En este programa se utilizo la función if, con varias condicionales a continuación el código.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n1;
int n2;
int n3;
int n4;
int n5;
printf("dame n1 \n");
scanf("%d",&n1);
printf("dame n2 \n");
scanf("%d",&n2);
printf("dame n3 \n");
scanf("%d",&n3);
printf("dame n4 \n");
scanf("%d",&n4);
printf("dame n5 \n");
scanf("%d",&n5);
if(n1>=n2&&n1>=n3&&n1>=n4&&n1>=n5)//solo existe una posibilidad de que sea cierto, si es asi se imprime n1 o el num
printf("mayor n1 %d",n1);
if(n2>n1&&n2>n3&&n2>n4&&n2>n5)
printf("mayor n2 %d",n2);
if(n3>n2&&n3>n1&&n3>n4&&n3>n5)
printf("mayor n3 %d",n3);
if(n4>n1&&n4>n2&&n4>n3&&n4>n5)
printf("mayor n4 %d",n4);
if(n5>n1&&n5>n2&&n5>n3&&n5>n4)
printf("mayor n4 %d",n4);
}
EJERCICIO 2.
Hacer un programa que pida una medida en metros y la imprima en cm, y mm.
Con una simple multiplicación de *100 para cm y *1000 para mm, se convierten y luego pasan a imprimirse.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int lon;
printf("dame longitud en metros \n");
scanf("%d",&lon);
printf("en centimetros es %d cm\n",lon*100);
printf("en milimetros es %d mm\n",lon*1000);
}
EJERCICIO 3.
Pedir dos números y que estos sean diferentes de 0 y que no sean negativos, para después desplegar un menú y preguntar que se desea con los números capturados, entre las opciones esta, suma, resta, división, y multiplicación.
para preguntar si son diferentes de cero y que no sean negativos, solo basta poner if, después el menú utiliza el switch y fin.
#include <stdio.h>
#include <stdlib.h>
int main()
{ //recomendacion todas las variables a utilizar declararlas desde el inicio
int a;
int b;
int s;
printf("dame numero\n");
scanf("%d",&a);
printf("dame numero\n");
scanf("%d",&b);
if(a>0&&a!=0)//aqui pegunta por el primer termino si no es cero y negativo
{
if(b>0&&b!=0)//el primer termino cumplio con lo establecido a hora pregunta lo mismo con el segundo
{ //los dos terminos cumplieron ahora se muestra el menu
printf("1.Suma\n");
printf("2.resta\n");
printf("3.multiplicacion\n");
printf("4 divicion\n");
printf("DAME OPCION\n");
scanf("%d",&s);
switch(s)
{
case 1:
printf("suma %d",a+b);
break;
case 2:
printf("resta %d",a-b);
break;
case 3:
printf("miltiplicacion %d",a*b);
break;
case 4:
printf("divicion %d",a/b);
break;
default:
printf("no hay opcion");
break;
}
}
else printf("no se puede");//si el segundo termino no cumple se imprime esto
}
else printf("no se puede\n"); //si el primer termino no cumple se pasa hasta aqui
}
U3-CADENAS
Dentro del siguiente programa se utilizara una nueva librería <string.h> , con esta podemos hacer comparaciones de cadenas de carácter, copear cadenas, y sumar cadenas, y todo esto se ejecuta con sentencias especificas, estas se encuentran en el siguiente código.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char cadena1[]="prog. Estructurada";
char cadena2[sizeof(cadena1)]; //la cadena 2 tomara el tamaño de l cadena 1
char cadena3[]=" I T A ";
char cadena4[50];
int rescomparacion;
printf("valor de cadena1 %s y valor de cadena2 %s \n",cadena1,cadena2);
strcpy(cadena2,cadena1);//copea lo de la cadena 1 en cadena 2
printf("valor de cadena1 %s y valor de cadena2 %s \n",cadena1,cadena2);
printf("longitud de cadena %d (cuent uno mas \\0)\n",strlen(cadena1));//strlen sirve para longitud de cadena
strcpy(cadena4,cadena1);
printf("concatenacion %s \n",strcat(cadena4,cadena3));//algo asi como una suma
rescomparacion=strcmp(cadena4,cadena2);//strcmp para comparar
printf("valor de cadena1 %s y valor de cadena 2 %s\n",cadena1,cadena2);
printf("valor de cadena3 %s y valor de cadena4 %s \n",cadena3,cadena4);
if(rescomparacion==0)
{
puts("la cadena 1 es primero alfabeticamente a la cadena 3");
}
return 0;
}
Dentro del siguiente programa se utilizara una nueva librería <string.h> , con esta podemos hacer comparaciones de cadenas de carácter, copear cadenas, y sumar cadenas, y todo esto se ejecuta con sentencias especificas, estas se encuentran en el siguiente código.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char cadena1[]="prog. Estructurada";
char cadena2[sizeof(cadena1)]; //la cadena 2 tomara el tamaño de l cadena 1
char cadena3[]=" I T A ";
char cadena4[50];
int rescomparacion;
printf("valor de cadena1 %s y valor de cadena2 %s \n",cadena1,cadena2);
strcpy(cadena2,cadena1);//copea lo de la cadena 1 en cadena 2
printf("valor de cadena1 %s y valor de cadena2 %s \n",cadena1,cadena2);
printf("longitud de cadena %d (cuent uno mas \\0)\n",strlen(cadena1));//strlen sirve para longitud de cadena
strcpy(cadena4,cadena1);
printf("concatenacion %s \n",strcat(cadena4,cadena3));//algo asi como una suma
rescomparacion=strcmp(cadena4,cadena2);//strcmp para comparar
printf("valor de cadena1 %s y valor de cadena 2 %s\n",cadena1,cadena2);
printf("valor de cadena3 %s y valor de cadena4 %s \n",cadena3,cadena4);
if(rescomparacion==0)
{
puts("la cadena 1 es primero alfabeticamente a la cadena 3");
}
return 0;
}
U3TRIANGULO
El siguiente programa fue el proyecto final de la unidad, utilizando las estructuras de control, se logro crear un programa capaz de identificar a partir de tres datos registrados, el tipo de triangulo, los ángulos de dicho triangulo y su área, tomando en cuenta que existen tres tipos, equilatero (todos los lados son iguales), isósceles (dos lados iguales) y escaleno (los lados son diferentes).
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265
int main()
{
float a,b,c;
float A,B,C;
float Aequ,Aisos,Aesc;
float semipe;
float cosA,cosB,cosC;
etiqueta_1:
do{
system("cls");//te limpia las lineas
printf("se determinara el area de un tringulo\n");
printf("solicitando los lados del triangulo\n");
printf("determinar que tipo de triangulo es\n");
printf("se determinaran los angulos tambien\n"); //se piden y guardan los datos
printf("dame el primer valor (a)\n");
scanf("%f",&a);
printf("dame el segundo valor (b)\n");
scanf("%f",&b);
printf("dame el tercer valor (c)\n");
scanf("%f",&c);
} while(a<1 || b<1 || c<1); //se condiciona que los datos sean positivos
printf("el valor de a es %.2f\t el de b es %.2f\t el de c es %.2f\n",a,b,c);
//equilatero
if(a==b && a==c && b==c) //se pregunta si los tres lados son iguales
{
printf("ES UN TRIANGULO EQUILATERO\n");
Aequ=(sqrt(3)/4)*pow(a,2); //formula para calcular area
printf("AREA %.2f unidades cuadradas\n",Aequ);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c); //con ley de cosenos se calcula su valor
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI; //con coseno inverso se obtiene el angulo y con la multiplicacion de 180 / pi se obtienen los angulos en grados
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f \t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);
}
//isoceles
if(a==b&&a!=c) //se pregunta si dos lados son iguales
{
if((a+b)==c || c>(a+b))//se condiciona para que el triangulo sea posible
{printf("ES imposible formr el triangulo");
system("pause");
goto etiqueta_1;} //si no se cumple con especificaciones se vuelven a pedir datos
else{
printf("TRIANGULO ISOCELES\n");
Aisos=(c*(sqrt((pow(a,2))-(pow(c,2)/4))))/2; //formula para el área
printf("AREA %.2f unidades cuadradas \n",Aisos);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c);
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI;
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f\t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);}
}
if(a==c&&a!=b) //este es otro caso de pendiendo del orden de captura de datos
{ if((a+c)==b || b>(a+c)){
printf("es imposible la forma del triangulo\n");
system("pause");
goto etiqueta_1;}
else{
printf("TRIANGULO ISOCELES\n");
Aisos=(b*(sqrt((pow(a,2))-(pow(b,2)/4))))/2;
printf("AREA %.2f unidades cuadradas \n",Aisos);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c);
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI;
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f\t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);}
}
if(b==c&&b!=a) //ultimo caso dependiendo el orden de captura de los datos
{ if((b+c)==a || a>(b+c)){
printf("es imposible la forma del triangulo\n");
system("pause");
goto etiqueta_1;}
else{
printf("TRIANGULO ISOCELES\n");
Aisos=(a*(sqrt((pow(b,2))-(pow(a,2)/4))))/2;
printf("AREA %.2f unidades cuadradas \n",Aisos);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c);
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI;
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f\t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);}
}
//escaleno
if(a!=b && a!=c && b!=c) //se pregunta si los tres datos son diferentes
{
semipe=(a+b+c)/2;
if(semipe<=a || semipe<=b || semipe<=c) //se condiciona para que el triangulo sea posible
{
printf("es imposible la forma del triangulo\n");
system("pause");
goto etiqueta_1; //si es imposible la forma del triangulo vuelve a pedir datos
}
else{
printf("TRIANGULO ESCALENO\n");
Aesc=sqrt(semipe*(semipe-a)*(semipe-b)*(semipe-c));//formula para el área
printf("AREA %.2f unidades cuadradas\n",Aesc);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c);
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI;
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f\t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);}
}
return 0;
}
El siguiente programa fue el proyecto final de la unidad, utilizando las estructuras de control, se logro crear un programa capaz de identificar a partir de tres datos registrados, el tipo de triangulo, los ángulos de dicho triangulo y su área, tomando en cuenta que existen tres tipos, equilatero (todos los lados son iguales), isósceles (dos lados iguales) y escaleno (los lados son diferentes).
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265
int main()
{
float a,b,c;
float A,B,C;
float Aequ,Aisos,Aesc;
float semipe;
float cosA,cosB,cosC;
etiqueta_1:
do{
system("cls");//te limpia las lineas
printf("se determinara el area de un tringulo\n");
printf("solicitando los lados del triangulo\n");
printf("determinar que tipo de triangulo es\n");
printf("se determinaran los angulos tambien\n"); //se piden y guardan los datos
printf("dame el primer valor (a)\n");
scanf("%f",&a);
printf("dame el segundo valor (b)\n");
scanf("%f",&b);
printf("dame el tercer valor (c)\n");
scanf("%f",&c);
} while(a<1 || b<1 || c<1); //se condiciona que los datos sean positivos
printf("el valor de a es %.2f\t el de b es %.2f\t el de c es %.2f\n",a,b,c);
//equilatero
if(a==b && a==c && b==c) //se pregunta si los tres lados son iguales
{
printf("ES UN TRIANGULO EQUILATERO\n");
Aequ=(sqrt(3)/4)*pow(a,2); //formula para calcular area
printf("AREA %.2f unidades cuadradas\n",Aequ);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c); //con ley de cosenos se calcula su valor
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI; //con coseno inverso se obtiene el angulo y con la multiplicacion de 180 / pi se obtienen los angulos en grados
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f \t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);
}
//isoceles
if(a==b&&a!=c) //se pregunta si dos lados son iguales
{
if((a+b)==c || c>(a+b))//se condiciona para que el triangulo sea posible
{printf("ES imposible formr el triangulo");
system("pause");
goto etiqueta_1;} //si no se cumple con especificaciones se vuelven a pedir datos
else{
printf("TRIANGULO ISOCELES\n");
Aisos=(c*(sqrt((pow(a,2))-(pow(c,2)/4))))/2; //formula para el área
printf("AREA %.2f unidades cuadradas \n",Aisos);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c);
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI;
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f\t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);}
}
if(a==c&&a!=b) //este es otro caso de pendiendo del orden de captura de datos
{ if((a+c)==b || b>(a+c)){
printf("es imposible la forma del triangulo\n");
system("pause");
goto etiqueta_1;}
else{
printf("TRIANGULO ISOCELES\n");
Aisos=(b*(sqrt((pow(a,2))-(pow(b,2)/4))))/2;
printf("AREA %.2f unidades cuadradas \n",Aisos);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c);
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI;
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f\t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);}
}
if(b==c&&b!=a) //ultimo caso dependiendo el orden de captura de los datos
{ if((b+c)==a || a>(b+c)){
printf("es imposible la forma del triangulo\n");
system("pause");
goto etiqueta_1;}
else{
printf("TRIANGULO ISOCELES\n");
Aisos=(a*(sqrt((pow(b,2))-(pow(a,2)/4))))/2;
printf("AREA %.2f unidades cuadradas \n",Aisos);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c);
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI;
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f\t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);}
}
//escaleno
if(a!=b && a!=c && b!=c) //se pregunta si los tres datos son diferentes
{
semipe=(a+b+c)/2;
if(semipe<=a || semipe<=b || semipe<=c) //se condiciona para que el triangulo sea posible
{
printf("es imposible la forma del triangulo\n");
system("pause");
goto etiqueta_1; //si es imposible la forma del triangulo vuelve a pedir datos
}
else{
printf("TRIANGULO ESCALENO\n");
Aesc=sqrt(semipe*(semipe-a)*(semipe-b)*(semipe-c));//formula para el área
printf("AREA %.2f unidades cuadradas\n",Aesc);
cosA=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c);
cosB=(pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c);
cosC=(pow(a,2)+pow(b,2)-pow(c,2))/(2*a*b);
A=acos(cosA)*180/PI;
B=acos(cosB)*180/PI;
C=acos(cosC)*180/PI;
printf("angulo A es %.2f\t angulo B es %.2f\t angulo C es %.2f\n",A,B,C);}
}
return 0;
}
Comentarios
Publicar un comentario