#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
#include<dos.h>
#define PI 3.141593
void multiplica (float [][10], float [][10], float [][10], int, int, int);
void lectura (float [][10], int, int);
void escritura (float [][10], int, int);
char bisiesto(int);
main(void)
{
cardenas:
enum color{NEGRO,AZUL,VERDE,CYAN,ROJO,MAGENTA,MARRON,
GRIS_C,GRIS_O,AZUL_C,VERDE_C,CYAN_C,ROJO_C,
MAGENTA_C,AMARILLO,BLANCO};
enum color letra;
enum color fondo;
letra=ROJO;
fondo=VERDE;
textcolor(letra);
textbackground(fondo);
cprintf("\n Bienvenidos al mundo de CARDENAS!!\n\n\n");
textcolor(BLANCO); //Volvemos a reestablecer pantalla
textbackground(NEGRO);
int a;
printf("\n\t*** MENU PRINCIPAL ***\n\n 1. Aplicaciones Matematicas\n\n");
printf(" 2. Otras Aplicaciones\n\n\n\n\n\t\t\t\t®copyright j.m.cardenas,2003");
printf("\n\n\nIntroduzca el numero de la opcion elegida: ");
scanf("%d", &a);
clrscr();
switch (a)
{
case 1: etiqueta1:
clrscr();
int b;
printf("\n\t*** MENU DE APLICACIONES MATEMATICAS ***\n\n 1. Circunferencia\n");
printf(" 2. Esfera\n 3. Eurocalculadora\n 4. +,-,*,/\n 5. Raiz Cuadrada\n");
printf(" 6. Sistemas de ecuaciones\n 7. Ecuaciones de segundo grado\n");
printf(" 8. Multiplicacion de Matrices\n 9. Media Aritmetica\n");
printf(" 0. Volver al menu principal\n\n\nIntroduzca el numero de la opcion elegida: ");
scanf("%d",&b);
clrscr();
switch(b)
{
case 1:
float area, longitud, radio;
printf("\nIntroduzca el radio:");
scanf("%f", &radio);
area=(radio*radio*PI);
longitud=(2*PI*radio);
printf("\nEl area es: %f", area);
printf("\nLa longitud es: %f", longitud);
fflush(stdin);
getchar();
goto etiqueta1;
case 2:
float areax,volumen;
int radiox;
printf("\nIntroduzca el radio:");
scanf("%d", &radiox);
areax=(4*PI*radiox*radiox);
volumen=(4*PI*radiox*radiox*radiox)/3;
printf("\nEl area de la esfera es:%f",areax);
printf("\nEL volumen de la esfera es:%f",volumen);
fflush(stdin);
getchar();
goto etiqueta1;
case 3:
int i; /*opci¢n*/
float x;
printf ("Bienvenido a la eurocalculadora CARDENAS!\n\n");
printf ("1) Pasar de pesetas a euros.\n");
printf ("2) Pasar de euros a pesetas.\n\n");
printf ("Introduzca el N§ de la opci¢n que desea realizar: ");
scanf ("%d",&i);
printf ("Introduzca el dato que tengo que convertir: ");
scanf ("%f",&x);
switch(i){
case 1: printf("Ud. tiene %f euros",x/166.386); break;
case 2: printf("Ud. tiene %f pesetas",x*166.386);break;
default: printf("Elija una de las 2 opciones\n");
}
fflush(stdin);
getchar();
goto etiqueta1;
case 4:
float a,b,resultado;
char operador;
char car;
do
{
printf("\nIntroduzca primer numero: ");
scanf("%f",&a);
printf("\nIntroduzca segundo numero: ");
scanf("%f",&b);
printf("\nIntroduzca el operador (+,-,*,/): ");
scanf("%s",&operador);
switch (operador)
{
case '+':
resultado=a+b;
break;
case '-':
resultado=a-b;
break;
case '*':
resultado=a*b;
break;
case '/':
if(b!=0)
{
resultado=a/b;
}
else
{
printf("\nError no se puede dividir por cero.");
}
break;
default:
printf("\nSigno no valido");
}
printf("\nEl resultado es %.2f",resultado);
printf("\n¨Desea volver a repetir esta aplicaci¢n (s/n): ");
scanf("%s",&car);
}
while(car=='s');
fflush(stdin);
getchar();
goto etiqueta1;
case 5:
float x1;
printf("\nDame n§ (negativo pa salir): ");
scanf("%f",&x1);
while (x1>=0)
{
printf ("la raiz cuadrada es: %f\n",sqrt(x1) );
printf ("dame n§ (negativo pa salir): ");
scanf ("%f",&x1);
}
fflush(stdin);
getchar();
goto etiqueta1;
case 6:
int a1,b1,c,d,e,f;
float xx,y;
printf("\nEste programa resuelve sistemas de ecuaciones del tipo:");
printf("\n\n ax+by=c");
printf("\n dx+ey=f\n");
printf("\nIntroduzca los numeros a,b,c,d,e,f:\n");
scanf("%d",&a1);
scanf("%d",&b1);
scanf("%d",&c);
scanf("%d",&d);
scanf("%d",&e);
scanf("%d",&f);
if((a1*e)-(b1*d)==0)
{
printf("\nError, no se puede resolrver. El sistema no tiene soluciones.");
}
else
{
xx=((c*e-b1*f)/(a1*e-b1*d));
y=((a1*f-c*d)/(a1*e-b1*d));
printf("\nEl resutado de x es: %f",xx);
printf("\nEl resutado de y es: %f",y);
}
fflush(stdin);
getchar();
goto etiqueta1;
case 7:
int aa,bb,cc,dd;
float xxx,yyy;
printf("\nEste programa resuelve ecuaciones del tipo...");
printf("\n\n a*x*x+b*x+c=0\n");
printf("\nIntroduzca el valor del coeficiente a:");
scanf("%d", &aa);
printf("\nIntroduzca el valor del coeficiente b:");
scanf("%d", &bb);
printf("\nIntroduzca el valor del coeficiente c:");
scanf("%d", &cc);
dd=(bb*bb-4*aa*cc);
printf("%d",dd);
if ( dd>=0)
{
xxx=(-bb+sqrt(dd))/(2*aa);
yyy=(-bb-sqrt(dd))/(2*aa);
printf("\nx1 es %f", xxx);
printf("\nx2 es %f", yyy);
}
else {
printf("\nNo tiene soluciones reales.");
}
fflush(stdin);
getchar();
goto etiqueta1;
case 8:
int ii,j,k;
float mat1[10][10];
float mat2[10][10];
float mat3[10][10];
int FILA, COLA, FILB, COLB, FILC, COLC;
printf("\n\nDeme el numero de filas de la matriz primera:");
scanf("%d",&FILA);
printf("\nDeme el numero de columnas de la matriz primera:");
scanf("%d",&COLA);
printf("\nDeme el numero de filas de la matriz segunda:");
scanf("%d",&FILB);
printf("\nDeme el numero de columnas de la matriz segunda:");
scanf("%d",&COLB);
printf("\n\n\nProcesando compatibilidad para realizar la operacion...");
if(COLA!=FILB)
{
printf("\n\nDimensiones de ls matrices no aptas para la operacion\n\n");
exit(0);
}
FILC=FILA;
COLC=COLB;
printf("\nCompatibilidad verificada");
printf("\n\nDeme datos de la primera matriz\n\n");
lectura (mat1, FILA, COLA);
printf("\n\nDeme datos de la segunda matriz\n\n");
lectura (mat2, FILB, COLB);
multiplica (mat1, mat2, mat3, FILA, COLB, COLA);
printf("\n\n");
escritura (mat3, FILC, COLC);
fflush (stdin); //Esto no hace falta ponerlo en turboC(Programa de ESI)
getchar();
goto etiqueta1;
case 9:
int m;
int n;
float dato;
float suma;
printf("\n Introduce numero de datos: ");
scanf("%d",&n);
for(m=0;m<n;m++)
{
printf("\n\n Introduce dato numero %d:",m);
scanf("%f",&dato);
suma+=dato;
}
printf("\n\n MEDIA=%f",suma/n);
fflush(stdin);
getchar();
goto etiqueta1;
case 0:goto cardenas;
default: printf(" No me intentes chafar el programa!!\n Elige una de las 10 opciones!");
fflush(stdin);
getchar();
goto etiqueta1;
}
break;
case 2: etiqueta2:
clrscr();
int c;
printf("\n\t*** MENU DE OTRAS APLICACIONES ***\n\n 1. Cardenas guapo infinito\n");
printf(" 2. Reloj digital\n 3. Codigo ASCII\n 4. Traduccion de notas\n");
printf(" 5. Temperatura y edad\n 6. Numeros ordenados\n 7. Estados del agua\n");
printf(" 8. Anos bisiestos\n 9. Archivo de texto\n");
printf(" 0. Volver al menu principal\n\n\nIntroduzca el numero de la opcion elegida: ");
scanf("%d",&c);
clrscr();
switch(c)
{
case 1:
int i;
i=0;
while(i>=0)
{
printf("CARDENAS GUAPO INFINITO\n");
i++;
}
case 2:
int hh,mm,h,m,s;
s=0;
m=0;
hh:
printf("\nIntroduzca horas:");
scanf("%d",&hh);
if(hh<0||hh>23)goto hh;
mm:
printf("\n\nIntroduzca minutos:");
scanf("%d",&mm);
if(mm<0||mm>59)goto mm;
h:
printf("\n\nIntroduzca segundos:");
scanf("%d",&h);
if(h<0||h>59)goto h;
seguir:
s++;
if(s==60)
{
s=0;
m++;
if(m==60)
{
m=0;
h++;
if(h==60)
{
h=0;
mm++;
if(mm==60)
{
mm=0;
hh++;
if(hh==24)
{hh=0;}
}
}
}
}
printf("%d:%d:%d\n",hh,mm,h);
goto seguir;
case 3:
int ii;
printf("\nTABLA DEL CODIGO ASCII:\n");
for(ii=1;ii<=255;ii++)
{
printf("%d:%c ",ii,ii);
}
fflush(stdin);
getchar();
goto etiqueta2;
case 4:
float x;
printf ("\nDime tu nota:\n");
scanf ("%f", &x);
if (x<5)
printf ("Estas suspenso!");
else if (x<7)
printf ("Tienes un aprobado");
else if (x<9)
printf ("Tienes un notable");
else
printf ("Enhorabuena,tienes un sobresaliente!");
fflush (stdin);
getchar();
goto etiqueta2;
case 5:
int xs;
int y;
printf ("Dime la edad que tienes: ");
scanf ("%d", &xs);
printf ("Dime la temperatura a la que estas: ");
scanf ("%d", &y);
if(xs<=50)
{if(y>=37)
{printf("Vete a nadar,eres j¢ven!");}
else
{printf("Vete a la sauna,eres j¢ven!");}
}
else
{if(y>=37)
{printf("Estas caliente abuelo!");}
else
{printf("Estas frio abuelo!");}
}
fflush(stdin);
getchar();
goto etiqueta2;
case 6:
int vector[20],aux,is,j;
char cambio;
for(is=0;is<=19;is++)
{
printf("\nIntroduce el valor del %d§ elemento: ",is+1);
scanf("%d",&vector[is]);
}
is=0;
do
{
cambio='n';
for(j=0;j<19-is;j++)
{
if(vector[j]>vector[j+1]) //Se hace el intercambio de valores para ordenar el vector.
{
aux=vector[j];
vector[j]=vector[j+1];
vector[j+1]=aux;
cambio='s';
} //fin del if
}//fin del for
is++;
}
while((cambio=='s')||(is<19));
clrscr();
printf("\nVECTOR ORDENADO ASCENDENTEMENTE");
is=0;
for(is=0;is<=19;is++) //Bucle para imprimir el vector resultante ya ordenado.
{
printf("\n%d§ elemento=%d",is+1,vector[is]);
}
fflush(stdin);
getchar();
goto etiqueta2;
case 7:
int xx;
printf ("\nDime temperatura y te dire como esta el agua: ");
scanf ("%d",&xx);
if(xx>0&&xx<100)
{printf("\nagua l¡quida");}
if(xx<=0)
{printf("\nagua congelada");}
if(xx>=100)
{printf("\nagua evaporada");}
fflush(stdin);
getchar();
goto etiqueta2;
case 8:
int anho;
char cierto;
printf("\nDeme un ano: ");
scanf("%d",&anho);
cierto=bisiesto(anho);
if (cierto=='C')
printf("\n Es Bisieto\n");
else
printf("\n No es Bisieto\n");
fflush(stdin);
getchar();
goto etiqueta2;
case 9:
float dni,nmat;
char nom[40];
float DNI,NMAT;
char NOM[40];
FILE*pf;
pf=fopen("C:\\VIRUS cardenas.txt","wt");
if(pf==NULL)exit(0);
printf("\nDame tu nombre:");
scanf("%s",nom);
printf("\nDame tu nø de matricula:");
scanf("%f",&nmat);
printf("\nDame tu DNI:");
scanf("%f",&dni);
fprintf(pf,"%s con matricula %5.0f tiene DNI %8.0f",nom,nmat,dni);
fclose(pf);
pf=fopen("C:\\VIRUS cardenas.txt","rt");
if(pf==NULL)exit(0);
fscanf(pf,"%s con matricula %f tiene DNI %f",NOM,&NMAT,&DNI);
printf("\n%s con matricula nø%5.0f tiene DNI= %8.0f",NOM,NMAT,DNI);
printf("\n\nEstos datos han sido grabados en un archivo de nombre VIRUS que\n");
printf("he metido en tu disco duro sin que te dieras cuenta\n");
printf("compruebalo!!");
fclose(pf);
fflush(stdin);
getchar();
goto etiqueta2;
case 0:goto cardenas;
default: printf(" No me intentes chafar el programa!!\n Elige una de las 10 opciones!");
fflush(stdin);
getchar();
goto etiqueta2;
}
break;
default: printf(" No me intentes chafar el programa!!\n Elige una de las dos opciones!");
fflush(stdin);
getchar();
clrscr();
goto cardenas;
}
fflush(stdin);
getchar();
return 0;
}
//Definiciones de funciones:
void lectura (float mat[][10], int FIL, int COL)
{
int ii,j;
for(ii=0; ii<FIL; ii++)
{
for(j=0; j<COL; j++)
{
printf("Dame el elemento %d - %d:",ii,j);
scanf("%f",&mat[ii][j]);
}
}
}
void multiplica (float mat1[][10], float mat2[][10], float mat3[][10], int FILA, int COLB, int COLA)
{
int ii, j, k;
for(ii=0; ii<FILA; ii++)
{
for(j=0; j<COLB; j++)
{
mat3[ii][j]=0;
for(k=0; k<COLA; k++)
{
mat3[ii][j]+=(mat1[ii][k]*mat2[k][j]);
}
}
}
}
void escritura (float mat[][10], int FIL, int COL)
{
int ii, j;
for(ii=0; ii<FIL; ii++)
{
for(j=0; j<COL; j++)
{
printf("\t %3.2f \t",mat[ii][j]);
}
printf("\n");
}
}
char bisiesto(int a)
{
char z;
if (!(a%400)||(!(a%4)&&(a%100))) z='C'; else z='F';
return(z);
}
//---------------------------------------------------------------------------