PROGRAMA.
Diseñe un programa que realice lo siguiente:
Pida el nombre al usuario
De la bienvenida.
Que muestre un menú con lo siguiente:
o Sumar dos matrices de 2x3.
o Cambiar el nombre y convertirlo en mayúscula, y retornar el largo de la cadena.
o Muestre la cadena original.
o Salir, preguntando si Si o si No.
/**************************************************************************
**Programa que pide el nombre, realiza la suma de dos matrices, cambia el **
**nombre a mayusculas, y te permite cambiar el nombre **
***************************************************************************/
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<ctype.h>
#include<stdlib.h>
#include<time.h>
int suma(int a[2][3],int b[2][3]); int llenar(int a[2][3], int b[2][3]);
void opcion(int *c);void cadena (char nombre[30]); void salir(void);
void ya(void);
char nombre[30]={0}; //se declara la cadena que contendra al nombre del usuario
char mayu[30]={0}; //se declara la cadena que guardara una copia del nombre del usuario
main(){
int c=0; // se declara la variable "c" la que permitira escoger alguna opcion clrscr();
printf("Introduzca su nombre: ");
gets(nombre); // se lee el nombre del usuario
do{
clrscr();
printf("Bienvenido ");
printf("%s",nombre);
printf(",que deseas hacer? ");
printf("\n 1.-Sumar 2 matrices 2x3.\n 2.-Cambiar el nombre y convertirlo en mayuscula.\n 3.- Muestre el nombre original.\n 4.-Salir del programa.\n");
scanf("%d",&c); // se lee la variable "c" que se explico con anterioridad opcion(&c); //llama a la funcion "opcion", esta realizara las diversas opciones
}while(c!=4); // va a permitir que se repita esta informacion en la pantalla hasta que se desee salir
return 0;
}
void opcion(int *c){
int a[2][3]={0};//se declara la matriz A int b[2][3]={0};// se declara la matriz B char sal,ol;
switch((*c)){
case 1:
llenar(a,b); // si C es 1 se llamara a la funcion "llenar" (que se vera mas adelante)
break;
case 2:
cadena(nombre); // si C es 2 se llamara a la funcion "cadena" (que se vera mas adelante)
break;
case 3:
printf("El nombre original es: %s",mayu); // muestra el nombre original del usuario
getch();
break;
case 4:
salir(); //llama a la funcion "salir" que se explicara mas adelante break;
default:
printf("\nAh introducido una opcion no valida...!!!");
/* para el caso en que C no sea un valor de 1 al 4, el mostrara en pantalla este mensaje*/
sleep(1);// coloca un retardo de 1 segundo en el programa }
}
int llenar(int a[2][3], int b[2][3]){
/*La funcion "llenar" permitira llenar las matrices con valores, ya sean aleatorios o sean introducidos por el usuario */
int i,j; // se declaran las variables de los indices de las matrices
char u,g; // se declaran las variables de caracter "u" y "g" que permitira escoger una opcion o otra
clrscr();
printf("\n se llenara a continuacion la matriz A...\n A.-Desea llenar la matriz ud?\n B.-Desea que el sistema lo haga?\n");
u=getch(); // se lee la variable "u"
switch(u){
case 'a':
case 'A':/*En el caso de que "u" sea esta opcion el usuario debera llenar las matrices con los valores que el desee */
for(i=0;i<2;i++)
for(j=0;j<3;j++){
printf("\nIntroduzca el valor de A[%d][%d]= ",i,j);
scanf("%d",&a[i][j]);
} break;
case 'b':
case 'B': /*En el caso de que "u" se igual a b o B, las matrices seran
llenadas aleatoriamente */
randomize(); /*crea un punto de partida para "random"
tomando del valor del tiempo trancurrido los valores*/
for(i=0;i<2;i++)
for(j=0;j<3;j++){
a[i][j]=random(513)-256;
/* Aleatoriamente son tomados valores para llenar la matriz A, este rango de valores va desde -256 hasta 256*/
} break;
}
printf("\n se llenara a continuacion la matriz B...\n A.-Desea llenar la matriz ud?\n B.-Desea que el sistema lo haga?\n");
g=getch(); // se lee la varible "g"
switch(g){
case 'a':
case 'A':/*En el caso de que "g" sea esta opcion el usuario debera llenar las matrices con los valores que el desee */
for(i=0;i<2;i++)
for(j=0;j<3;j++){
printf("\nIntroduzca el valor de B[%d][%d]= ",i,j);
scanf("%d",&b[i][j]);
} break;
case 'b':
case 'B': /*En el caso de que "g" se igual a b o B, las matrices seran llenadas aleatoriamente */
randomize(); /*crea un punto de partida para tomar los valores al azar, tomando del valor del tiempo trancurrido los valores*/
for(i=0;i<2;i++)
for(j=0;j<3;j++){
b[i][j]=random(513)-256;
/* Aleatoriamente son tomados valores para llenar la matriz B, este rango de valores va desde -256 hasta 256*/
} break;
} suma(a,b);
//llama a la funcion suma, que realizara como su nombre lo indica la suma de las matrices return 0;
}
int suma(int a[2][3],int b[2][3]){
int i=0,j=0; //son declaradas los indices de las matrices.
int s[2][3]={0}; // se declara la matriz suma, que contendra la suma de A+B clrscr();
for(i=0;i<2;i++)
for(j=0;j<3;j++){
s[i][j]=a[i][j]+b[i][j]; // se realiza la suma de A+B y se almacena el S }
for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%5d",a[i][j]); // el %5d deja 5 espacios cada vez que se imprime un valor printf("\n\n");// pasa a la linea siguiente y cominza desde la columna 1
/*Se muestra en pantalla la matriz A*/
}
printf("\n+\n");//imprime el signo "+" para indicar que se suma A + B for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%5d",b[i][j]);
printf("\n\n");
//Igual que con la matriz A, esta imprime los valores de la matriz B }
printf("\n=\n");//imprime el signo de igualdad for(i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%5d",s[i][j]);
printf("\n\n");
/*Se imprime la suma de las matrices, que es S*/
} getch();
return s[i][j];
}
void cadena (char nombre[30]){
/*La funcion cadena permite cambiarle el nombre del usuario, si es que lo desea*/
int m;// se declara "m" que es el indice de la cadena
strcpy(mayu,nombre);// se copia la cadena "nombre" a la cadena "mayu"
printf("la cadena original es: %s",mayu);
/* se imprime la cadena mayu que es la copia de la original*/
printf("\nLa cantidad de caracteres es: %d ",strlen(mayu));
/* el strlen permite mostrar la cantidad de caracteres existentes en la cadena mayu*/
printf("\nIntroduzca el nuevo nombre: ");
scanf("%s",nombre); // se lee el nuevo nombre del usuario
for(m=0;nombre[m];m++) //indica que se realizara la opcion varias veces nombre[m]=toupper(nombre[m]);
/**El toupper permite colocar en mayusculas los caracteres del nombre del usuario, en vista de que tiene un indice "m" (desconocido) colocara en mayusculas todos los
caracteres hasta que encuentre al caracter nulo (0) y esto sera almacenado en la misma cadena "nombre"*/
}
void salir (void){
//Permite al usuario preguntar si desa salir del programa
char ol;// se declara la variable "ol" que permite seleccionar una opcion u otra
printf("Esta seguro que desea salir (s/n)?");
do{ /*Este ciclo do-while permite que mientras no se pisen las teclas indicadas el programa no realice ninguna modificacion a lo que se muestra en pantalla*/
ol=getch();
}while((ol!='s') && (ol!='S') && (ol!='n') &&(ol!='N'));
switch(ol){
case 's':
case 'S':
clrscr();
printf("\nSaliendo del programa...");
delay(450); //coloca un retardo de 450milisegundo antes de finazilar el programa break;
case 'n':
case 'N':
ya(); //llama a la funcion "ya", que se explicara dentro de poco.
break;
}
}
void ya(void){
/* es utilizada unicamente para cuando el usuario no desea salir del programa y ya haya pisado la opcion 4 de la variable "c", esta funcion lo que hace es
mostrar el mismo menu que se tiene en un principio sin preguntar el nombre del usuario*/
int c;
do{
clrscr();
printf("Bienvenido ");
printf("%s",nombre);
printf(",que deseas hacer? ");
printf("\n 1.-Sumar 2 matrices 2x3.\n 2.-Cambiar el nombre y convertirlo en mayuscula.\n 3.-Muestre el nombre original.\n 4.-Salir del programa.\n");
scanf("%d",&c);
opcion(&c);
}while(c!=4);
}