Programas-aritmeticos

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Programas-aritmeticos as PDF for free.

More details

  • Words: 10,738
  • Pages: 64
www.monografias.com

Programas aritméticos, de aleatoriedad y de arreglos desarrollados en Microsoft visual c++ 1. 2. 3. 4.

Introducción Ventana de presentación o portada que aparece en todos los programas Ejercicios Conclusión

INTRODUCCIÓN En este trabajo se presenta el código completo de cada uno de los programas presentados. Se han desarrollado completamente los ejercicios asignados en la clase de Programación II. Para cada programa se muestra una o más impresiones de pantalla para poder visualizar los resultados y la apariencia del cada programa a la hora de ejecutar el código. Todos los programas han sido desarrollados en Microsoft Visual C++ e incluso en las impresiones del código aparecen en color azul las palabras reservadas del código de Visual C++ y en color verde se muestran los comentarios que proporcionan breves explicaciones a algunas líneas de los programas. Los programas son originales y se han desarrollado luego del análisis detenido de cada problema y encontrando la solución que permitiera resolver cada uno de los problemas. Es claro que para un mismo problema existen muchísimas formas de resolverlo y eso dependerá de la lógica que el programador vaya ocupando. Para estos ejercicios se ha buscado desarrollarlos y resolverlos de la manera más fácil posible y a la vez que sea una forma efectiva y que no presente ningún problema al momento de ejecutar los programas. También se muestra una pantalla de presentación controlada por la herramienta “Sleep” que es la portada de nuestros programas y que desaparecerá automáticamente luego de transcurridos 7 segundos. Otra de las características sobresalientes de estos programas es que el color de letra se ha cambiado a amarillo y verde (pues originalmente el programa presenta todo con fondo negro y color de letra blanco). Igualmente se muestra en una misma ventana el color verde y amarillo para las letras, mostrando que pueden aparecer múltiples colores de letra en una misma ventana y no tiene que ser necesariamente todo del mismo color para un programa o para una ventana. VENTANA DE PRESENTACIÓN O PORTADA QUE APARECE EN TODOS LOS PROGRAMAS

iii

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

La siguiente ventana es la que aparece al inicio de la ejecución de todos los programas, y permanece activa por 7 segundos. Al terminar este tiempo desaparece la ventana de portada y se comienza el desarrollo o solución al problema planteado por cada uno de los ejercicios. El código para generar esta ventana aparece en todos los programas de cada uno de los ejercicios. La ventana se muestra de la siguiente forma:

EJERCICIO 1 (GUÍA 1) GENERAR LA SERIE -1,0,1,2,3,.....,100 Y CALCULAR LOS CUADRADOS DE CADA NUMERO Breve descripción del programa: Este programa simplemente muestra dos columnas con los números del -1 hasta el 100 con los respectivos cuadrados de cada uno de ellos. Eso se pudo hacer fácilmente utilizando un ciclo “for”. La ejecución del programa se muestra de la siguiente forma:

2

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

El código del programa es el siguiente: #include "STdio.h" #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) int main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE);

3

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\n\t\t\t EJERCICIO 1 (GUIA 1)\n"); printf("\t\t\t ====================\n"); int a,b; printf("\nPROBLEMA: GENERAR LA SERIE -1,0,1,2,3,.....,100 Y CALCULAR LOS CUADRADOS DE\nCADA NUMERO.\n\n"); printf("SOLUCION:\n"); printf("\n\t\t\t%s%13\n","NUMERO\tCUADRADO\n"); for(a=-1;a<=100;a++){ b=(a*a); printf("\t\t\t%4d%10d\n",a,b); } printf("\n"); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } return 0; } } EJERCICIO 2 (GUÍA 1) LA ECUACION CUADRATICA A(X)^2 + BX + C = 0 TIENE RAICES REALES SI SE CUMPLE QUE B^2 - 4AC >= 0. DISENE UN PROGRAMA QUE ESCRIBA NO HAY RAICES\nREALES, O BIEN, LOS VALORES DE LAS RAICES X1 y X2 Breve descripción del programa: Este programa resuelve la famosa fórmula cuadrática para una ecuación. Solamente se necesitan los coeficientes A, B y C y el programa resolverá la ecuación con la fórmula cuadrática, sabiendo que si el discriminante (lo que está dentro del radical) es mayor que cero, la ecuación tiene dos soluciones reales distintas; si es igual a cero, la ecuación tiene exáctamente una solución real; y si es menor que cero, la ecuación no tiene solución real. El programa dará la respuesta de acuerdo a los valores de A, B y C que sean introducidos. La ejecución del programa se muestra de la siguiente forma:

4

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

5

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

El código del programa es el siguiente: #include <stdio.h> #include <math.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (0000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 2 (GUIA 1)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: LA ECUACION CUADRATICA A(X)^2 + BX + C = 0 TIENE RAICES REALES SI \nSE CUMPLE QUE B^2 - 4AC >= 0. DISENE UN PROGRAMA QUE ESCRIBA NO HAY RAICES\nREALES, O BIEN, LOS VALORES DE LAS RAICES X1 y X2.\n\n"); printf("SOLUCION:\n\n"); float a,b,c,discriminante,raiz,respuestapos,cuadraticapos,cuadraticaneg; printf("INTRODUZCA EL VALOR DE A: "); scanf("%f",&a); printf("INTRODUZCA EL VALOR DE B: "); scanf("%f",&b); printf("INTRODUZCA EL VALOR DE C: "); scanf("%f",&c); discriminante=b*b-4*a*c; raiz=sqrt(discriminante); cuadraticapos=(-b+raiz)/(2*a); cuadraticaneg=(-b-raiz)/(2*a); if(discriminante<0){ printf("\nLA ECUACION NO TIENE SOLUCION REAL.\n\n"); } else{ if(discriminante==0){

6

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\nLA ECUACION TIENE EXACTAMENTE UNA SOLUCION REAL:\n\n"); printf("X = %.2f\n\n",cuadraticapos); } else{ printf("\nLA ECUACION TIENE DOS SOLUCIONES REALES DISTINTAS:\n\n"); printf("X1 = %.2f\n",cuadraticapos); printf("X2 = %.2f\n\n",cuadraticaneg); } } SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while } EJERCICIO 3 (GUÍA 1) ESCRIBA UN PROGRAMA QUE PERMITA ENCONTRAR EL PROMEDIO DE UN GRUPO DE NUMEROS DADOS POR EL USUARIO. Breve descripción del programa: Este programa saca el promedio o la media aritmética simple para un conjunto de valores introducidos por el usuario. La gran ventaja que ofrece este programa es que no se estipula un valor determinado al cual se le va a sacar el promedio, sino que es el usuario quien decide el valor que tendrá la “n” o población. El programa pregunta al principio a cuántos números se les desea sacar el promedio y en base a eso comienza a pedir cada uno de los valores para luego dividir la suma de todos los números introducidos entre la población total o el número de valores que el usuario haya introducido. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10)

7

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

#define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 3 (GUIA 1)\n"); printf("\t\t\t ====================\n"); int n; float cantidad,numero,suma=0,promedio; printf("\nPROBLEMA: ESCRIBA UN PROGRAMA QUE PERMITA ENCONTRAR EL PROMEDIO DE UN GRUPO\nDE NUMEROS DADOS POR EL USUARIO.\n\n"); printf("SOLUCION:\n\n"); while(cantidad<=0){ printf("INTRODUZCA A CUANTOS NUMEROS DESEA SACARLES EL PROMEDIO: "); scanf("%f",&cantidad); } printf("\n"); for(n=1;n<=cantidad;n++){ printf("INTRODUZCA EL NUMERO %d DEL GRUPO: ",n); scanf("%f",&numero); suma=suma+numero; } promedio=suma/cantidad; printf("\nEL PROMEDIO DEL GRUPO DE NUMEROS INTRODUCIDOS ES: %.2f\n\n",promedio); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

8

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 4 (GUÍA 1) ESCRIBA UN PROGRAMA QUE PERMITA ENCONTRAR LA SUMATORIA DE LOS NUMEROS IMPARES COMPRENDIDOS DESDE 50 A 1000 Breve descripción del programa: Este programa simplemente realiza la suma de los números impares que están comprendidos entre 50 y 1000. Especialmente ayuda a tener destreza en la utilización del ciclo “for” dando intervalos específicos y al final muestra el resultado de la suma que se indica, que es 249375. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 4 (GUIA 1)\n");

9

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ESCRIBA UN PROGRAMA QUE PERMITA ENCONTRAR LA SUMATORIA DE LOS NUMEROS\nIMPARES COMPRENDIDOS DESDE 50 A 1000."); printf("\n\nSOLUCION:"); int i,suma; suma=0; for(i=51;i<1000;i=i+2){ suma=suma+i; } printf("\n\nLA SUMA DE LOS NUMEROS IMPARES ENTRE 50 Y 1000 ES %d.\n\n",suma); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

10

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 5 (GUÍA 1) ESCRIBA UN PROGRAMA QUE CALCULE LA SUMA DE LOS CIEN PRIMEROS\nENTEROS; ES DECIR, 1+2+3+4+5+....+100 Breve descripción del programa: Este programa es muy similar al anterior, y lo único que se necesita para desarrollarlo es aplicar correctamente el ciclo “for” y el resultado es de 5050. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include "STdio.h" #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 5 (GUIA 1)\n"); printf("\t\t\t ====================\n");

11

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\nPROBLEMA: ESCRIBA UN PROGRAMA QUE CALCULE LA SUMA DE LOS CIEN PRIMEROS\nENTEROS; ES DECIR, 1+2+3+4+5+....+100.\n\n"); printf("SOLUCION:\n\n"); int a,b,c; c=0; for (a=1;a<=100;a++) { c=c+a; } printf("LA SUMA DE LOS 100 PRIMEROS ENTEROS ES: %d\n\n",c); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. return 0; } EJERCICIO 6 (GUÍA 1) ESCRIBA UN PROGRAMA PARA CALCULAR 1 + 1/2 + 1/3 + 1/4 + 1/5 + .... +\n1/100 Breve descripción del programa: Este programa tiene la característica que el denominador va creciendo de uno en uno, por lo cual el incremento del “for” se aplica solamente al denominador y se deja el numerador siempre como una constante que no cambia. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO);

12

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 6 (GUIA 1)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ESCRIBA UN PROGRAMA PARA CALCULAR 1 + 1/2 + 1/3 + 1/4 + 1/5 + .... +\n1/100.\n\n"); printf("SOLUCION:\n\n"); float suma,denominador; suma=0; for(denominador=1;denominador<=100;denominador++){ suma=suma+(1/denominador); } printf ("LA SUMA DE 1 + 1/2 + 1/3 + 1/4 + 1/5 + .... + 1/100 ES %.2f\n\n",suma); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. } EJERCICIO 7 (GUÍA 1) ELABORE UN PROGRAMA PARA CALCULAR LA SIGUIENTE SERIE: (1)^2 + (2)^2 + (3)^2 + (4)^2 + (5)^2 + .... + (100)^2 Breve descripción del programa: Este programa calcula la serie de ir elevando al cuadrado los números del 1 al 100 y sumar cada uno de los resultados que se van obteniendo. La ejecución del programa se muestra de la siguiente forma:

13

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

El código del programa es el siguiente: #include "STdio.h" #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 7 (GUIA 1)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ELABORE UN PROGRAMA PARA CALCULAR LA SIGUIENTE SERIE: (1)^2 + (2)^2 + (3)^2 + (4)^2 + (5)^2 + .... + (100)^2.\n\n"); printf("SOLUCION:\n\n"); int a,b,c; c=0; for (a=1;a<=100;a++){ c=c+(a*a); } printf("LA SUMA DE LOS NUMEROS AL CUADRADO DEL 1 AL 100 ES: %d\n\n",c);

14

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

15

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 8 (GUÍA 1) ESCRIBA UN PROGRAMA QUE CALCULE EL FACTORIAL DE UN NUMERO CUALQUIERA Breve descripción del programa: Este programa calcula el factorial de un número, para lo cual la herramienta poderosa es el uso de ciclos y la utilización inteligente de las variables para que el número que el usuario introduzca sea multiplicado por cada uno de los anteriores hasta llegar al uno. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 8 (GUIA 1)\n");

16

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ESCRIBA UN PROGRAMA QUE CALCULE EL FACTORIAL DE UN NUMERO CUALQUIERA.\n\n"); printf("SOLUCION:\n\n"); int numero,factorial,ciclo; printf("INTRODUZCA EL NUMERO AL QUE DESEA CALCULARLE EL FACTORIAL: "); scanf("%d",&numero); if(numero<0){ numero=numero*-1; factorial=1; for(ciclo=1;ciclo<=numero;ciclo++){ factorial=factorial*ciclo; } factorial=factorial*-1; printf("\n\nEL FACTORIAL DE -%d ES %d.\n\n",numero,factorial); } else{ factorial=1; for(ciclo=1;ciclo<=numero;ciclo++){ factorial=factorial*ciclo; } printf("\n\nEL FACTORIAL DE %d ES %d.\n\n",numero,factorial); } SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

17

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 9 (GUÍA 1) Breve descripción del programa: Este programa se desarrolla mediante “for” y tiene la característica especial que tanto el numerador como el denominador van sufriendo un incremento en cada ciclo. Todo eso se va sumando en una variable hasta llegar al resultado final de 94.81. ELABORAR UN PROGRAMA PARA CALCULAR LA SIGUIENTE SERIE: 1/2 + 2/3 + 3/4 + 4/5 + 5/6 + 6/7 + .... + 99/100 La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include "STdio.h" #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 9 (GUIA 1)\n");

18

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\t\t\t ====================\n"); printf("\nDESCRIPCION: ELABORAR UN PROGRAMA PARA CALCULAR LA SIGUIENTE SERIE: 1/2 + 2/3 + 3/4 + 4/5 + 5/6 + 6/7 + .... + 99/100.\n\n"); printf("SOLUCION:\n\n"); float a,b,c; b=0; for (a=1;a<100;a++){ b+=(a/(a+1)); } printf("LA SUMATORIA DE LA SERIE ES: %.2f\n\n",b); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. } EJERCICIO 10 (GUÍA 1) ESCRIBA UN PROGRAMA QUE DETERMINE SI ES PRIMO UN NUMERO DE ENTRADA. PARA LA ENTRADA 67, LA SALIDA DEBE SER 67 ES PRIMO. PARA LA ENTRADA 91, LA SALIDA DEBE SER 91 NO ES PRIMO Breve descripción del programa: Este programa determina si un número es primo o no. El usuario solamente tiene que ingresar el número que desea evaluar y el programa dará la respuesta si se trata de un número primo o no. Para esto se utilizó el “%” que es para obtener residuos, y el número introducido se va dividiendo entre todos los números anteriores a dicho número y entre el número mismo. Si hay más de dos residuos de cero, entonces el número no es primo y de lo contrario, el número es primo, pues sabemos que los números primos son divisibles exactamente sólo entre ellos mismos y la unidad. La ejecución del programa se muestra de la siguiente forma:

19

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 10 (GUIA 1)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ESCRIBA UN PROGRAMA QUE DETERMINE SI ES PRIMO UN NUMERO DE ENTRADA.\nPARA LA ENTRADA 67, LA SALIDA DEBE SER 67 ES PRIMO. PARA LA ENTRADA 91, LA\nSALIDA DEBE SER 91 NO ES PRIMO.\n\n"); printf("SOLUCION:\n\n"); int numero,contador,ciclo,residuo; printf("INTRODUZCA EL NUMERO QUE DESEA EVALUAR: "); scanf("%d",&numero);

20

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

contador=0; for(ciclo=1;ciclo<=numero;ciclo++){ residuo=numero%ciclo; if(residuo==0){ contador=contador+1; } } if(contador<=2){ printf("\n%d ES PRIMO.\n\n",numero); } else{ printf("\n%d NO ES PRIMO.\n\n",numero); } SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. } EJERCICIO 11 (GUÍA 1) DISENE UN PROGRAMA QUE SIMULE EL LANZAMIENTO DE DOS DADOS HASTA QUE SALGA UN SIETE DOS VECES CONSECUTIVAS. EL PROGRAMA DEBE INDICAR EN QUE TIRADA OCURRIO ESE RESULTADO Breve descripción del programa: Este programa es posible gracias a la utilización del generador de números aleatorios para simular el lanzamiento de dos dados. El programa indica en qué tirada se da el evento de los dos dados que caigan 7 consecutivamente. Para lograr esto se da la condición (“if”) que cada vez que caiga un 7 que vaya a evaluar si la siguiente tirada da otro siete. Si esto es así, el programa se sale del ciclo o de lo contrario continúa. Se añade también un contador que es el que dice finalmente a las cuántas tiradas se dio el evento de dos sietes consecutivamente. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include #include <windows.h> #define FONDO (0)

21

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

#define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 11 (GUIA 1)\n"); printf("\t\t\t =====================\n"); int a,lanzamiento,i=0,contador=0; printf("\nPROBLEMA: DISENE UN PROGRAMA QUE SIMULE EL LANZAMIENTO DE DOS DADOS HASTA QUE\nSALGA UN SIETE DOS VECES CONSECUTIVAS. EL PROGRAMA DEBE INDICAR EN QUE TIRADA\nOCURRIO ESE RESULTADO.\n\n"); printf("SOLUCION:\n\n"); srand(time(NULL));//Inicializar generador aleatorio. while(i==0){ lanzamiento=1+rand()%12;//Generar números aleatorios. if(lanzamiento==7){ lanzamiento=1+rand()%12; contador=contador+1; if(lanzamiento==7){ contador=contador+1; i=1; } } contador=contador+1; } printf("EL SIETE SALIO DOS VECES CONSECUTIVAS EN LA TIRADA NUMERO %d.\n\n",contador); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){

22

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\n\a"); salir=1; } }//Fin del while. } EJERCICIO 13 (GUÍA 1) ESCRIBA UN PROGRAMA QUE SIMULE LA TIRADA DE DOS DADOS 100 VECES, Y DE LUEGO UNA SALIDA DE LA FORMA: EL SIETE SALIO ______ VECES Breve descripción del programa: Este programa simula con la herramienta de aleatoriedad, la tirada de dos dados 100 veces y se crea un contador para que va aumentando en uno cada vez que cae un siete, de manera que al final se diga ese número como respuesta. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include "STdio.h" #include "time.h" #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir;

23

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 13 (GUIA 1)\n"); printf("\t\t\t =====================\n"); int lanzamiento,ciclo,contador=0; printf("\nPROBLEMA: ESCRIBA UN PROGRAMA QUE SIMULE LA TIRADA DE DOS DADOS 100 VECES, Y DE LUEGO UNA SALIDA DE LA FORMA: EL SIETE SALIO ______ VECES."); printf("\n\nSOLUCION:\n\n"); srand(time(0));//Inicializar generador aleatorio. for (ciclo=1;ciclo<=100;ciclo++){ lanzamiento=1+rand()%12;//Generar números aleatorios para simular el lanzamiento de los dados. if(lanzamiento==7){ contador=contador+1; } } printf("EL SIETE SALIO %d VECES.\n\n",contador); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. } EJERCICIO 14 (GUÍA 1) DISENE UN PROGRAMA QUE SIMULE EL LANZAMIENTO DE UNA MONEDA 100 VECES YQUE PRODUZCA UNA DE LAS SIGUIENTES SALIDAS: 1. MAS CARAS QUE CORONAS. 2. MAS CORONAS QUE CARAS. 3. IGUAL NUMERO DE CARAS Y CORONAS Breve descripción del programa: Este programa funciona con la herramienta de generación de números aleatorios y con un contador se van almacenando por separado el número de veces que cae cara o corona. Al final con un “if” se compara el contador de caras con el contador de coronas y dependiendo de cuál es mayor se concluye en la impresión final si salieron más caras que coronas o viceversa. La ejecución del programa se muestra de la siguiente forma:

24

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

El código del programa es el siguiente: #include <stdio.h> #include #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 14 (GUIA 1)\n"); printf("\t\t\t =====================\n"); printf("\nPROBLEMA: DISENE UN PROGRAMA QUE SIMULE EL LANZAMIENTO DE UNA MONEDA 100 VECES YQUE PRODUZCA UNA DE LAS SIGUIENTES SALIDAS: 1. MAS CARAS QUE CORONAS. 2. MAS\nCORONAS QUE CARAS. 3. IGUAL NUMERO DE CARAS Y CORONAS.\n\n"); printf("SOLUCION:\n\n"); int ciclo,lanzamiento,caras,coronas;

25

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

caras=0; coronas=0; srand(time(NULL));//Inicializar generador aleatorio. for(ciclo=1;ciclo<=100;ciclo++){ lanzamiento=rand()%2;//Generar números aleatorios. if(lanzamiento==0){ caras=caras+1; } if(lanzamiento==1){ coronas=coronas+1; } } printf("NUMERO DE CARAS: %d\n",caras); printf("NUMERO DE CORONAS: %d\n\n",coronas); if(caras>coronas){ printf("MAS CARAS QUE CORONAS.\n\n"); } else{ if(coronas>caras){ printf("MAS CORONAS QUE CARAS.\n\n"); } else{ printf("IGUAL NUMERO DE CARAS Y CORONAS.\n\n"); } } SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

26

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 1 (GUÍA 2) ELABORE UN PROGRAMA QUE PERMITA INTRODUCIR 20 ELEMENTOS DE TIPO ENTERO EN UN ARREGLO, EL PROGRAMA MOSTRARA IMPRESO EL ARREGLO EN ORDEN INVERSO Breve descripción del programa: Acá se trabaja directamente con arreglos y lo que se hace es cambiar el orden de los elementos mediante un ciclo que vaya con un incremento en orden inverso, de manera que al final el arreglo original sea invertido. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include "STdio.h" #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n");

27

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 1 (GUIA 2)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE PERMITA INTRODUCIR 20 ELEMENTOS DE TIPO \nENTERO EN UN ARREGLO, EL PROGRAMA MOSTRARA IMPRESO EL ARREGLO EN ORDEN INVERSO.\n\n"); printf("SOLUCION:\n\n"); int n[20],i,x; //Pedir elementos del arreglo. for (x=0;x<=19;x++){ printf("INTRODUZCA EL ELEMENTO %d DEL ARREGLO: ",x); scanf("%d",&n[x]); } printf("\n"); //Mostrar arreglo original. printf("EL ARREGLO ORIGINAL ES: \n\n"); //Poner el arreglo en orden inverso. for(x=0;x<20;x++){ printf("[%d]",n[x]); } //Mostrar el areglo en orden inverso. printf("\n\nEL ARREGLO EN ORDEN INVERSO ES: \n\n"); for (x=19;x>=0;x--){ printf("[%d]",n[x]); } SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\n\nSI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a");//Sonido con el \a. salir=1; } } }

28

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 2 (GUIA 2) ELABORE UN PROGRAMA QUE CONVIERTA UN NUMERO DECIMAL A SU EQUIVALENTE EN LOS SISTEMAS NUMERICOS OCTAL, BINARIO y HEXADECIMAL Breve descripción del programa: Este programa tiene un grado de complejidad mayor que otros programas sencillos de simples operaciones aritméticas porque se debe buscar la manera en la cual los residuos desde el último hasta el primero sean tomados hasta formar el valor de un nuevo valor convertido al sistema binario, octal o hexadecimal. Es un programa popular y definitivamente útil en el área de la informática. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno;

29

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 2 (GUIA 2)\n"); printf("\t\t\t ====================\n"); int numero,numeroinicial,sumabinario,sumaoctal; float residuo,potencia10; char hexadecimal; printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE CONVIERTA UN NUMERO DECIMAL A SU\nEQUIVALENTE EN LOS SISTEMAS NUMERICOS OCTAL, BINARIO y HEXADECIMAL.\n\n"); printf("SOLUCION:\n\n"); printf("INTRODUZCA EL NUMERO DECIMAL QUE DESEA CONVERTIR: "); scanf("%d",&numero); //Comienza proceso de decimal a binario. numeroinicial=numero;//Para imprimir al final el valor inicial que introdujo el usuario, pues la variable numero sufrirá modificaciones. potencia10=1; sumabinario=0; while(numero>=1){ residuo=numero%2; numero=int(numero/2); sumabinario=sumabinario+residuo*potencia10; potencia10=potencia10*10; } printf("\nEL NUMERO %d DEL SISTEMA DECIMAL EQUIVALE A:\n\n%d EN EL SISTEMA BINARIO.\n",numeroinicial,sumabinario); //Comienza proceso de decimal a octal. numero=numeroinicial;//Para que el numero que introdujo el usuario regrese a su valor inicial, pues en el proceso anterior sufrio modificaciones. potencia10=1; sumaoctal=0; while(numero>=1){ residuo=numero%8; numero=int(numero/8); sumaoctal=sumaoctal+residuo*potencia10; potencia10=potencia10*10; } printf("%d EN EL SISTEMA OCTAL.\n",sumaoctal); //Comienza proceso de decimal a hexadecimal. numero=numeroinicial; cout<
30

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

}

31

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 3 (GUÍA 2) ELABORE UN PROGRAMA QUE PERMITA ENCONTRAR EL PRIMER Y SEGUNDO MAYOR DE UN ARREGLO DE 15 ELEMENTOS Breve descripción del programa: Este programa utiliza un método super popular y de gran importancia conocido como “el método de la burbuja”, que sirve para ordenar un arreglo desde el menor hasta el mayor, y de manera análoga se puede hacer desde el mayor hasta el menor. Tiene muchas aplicaciones en problemas prácticos. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n");

32

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 3 (GUIA 2)\n"); printf("\t\t\t ====================\n"); int arreglo[10],ciclo1,pasadas,i,almacena; printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE PERMITA ENCONTRAR EL PRIMER Y SEGUNDO MAYOR DEUN ARREGLO DE 15 ELEMENTOS.\n\n"); printf("SOLUCION:\n\n"); //Pedir arreglo al usuario. for(ciclo1=0;ciclo1<10;ciclo1++){ printf("INTRODUZCA EL ELEMENTO %d DEL ARREGLO: ",ciclo1); scanf("%d",&arreglo[ciclo1]); } //Mostrar arreglo introducido por usuario. printf("\nEL ARREGLO INTRODUCIDO ES EL SIGUIENTE: \n\n"); for(i=0;i<10;i++){ printf("[%d] ",arreglo[i]); } printf("\n\n"); //Ciclo para controlar el número de pasos. for(pasadas=1;pasadas<10;pasadas++){ //Ciclo para controlar el número de comparaciones por pasada. for(i=0;i<9;i++){ //Compara los elementos adyacentes y los intercambia si el primer elemento es mayor que el segundo. if(arreglo[i]>arreglo[i+1]){ almacena=arreglo[i]; arreglo[i]=arreglo[i+1]; arreglo[i+1]=almacena; }//Fin del if. }//Fin del for interno. }//Fin del for externo. printf("EL ARREGLO ORDENADO ES EL SIGUIENTE2: \n\n"); for(i=0;i<10;i++){ printf("[%d] ",arreglo[i]); } printf("\n\n"); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

33

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 4 (GUÍA 2) ELABORE UN PROGRAMA QUE PERMITA ENCONTRAR EL PRIMER Y SEGUNDO MAYOR DE UN ARREGLO DE 15 ELEMENTOS Breve descripción del programa: Este programa muestra los primeros dos elementos mayores de un arreglo de 15 elementos. Para ello se utiliza primero el método de la burbuja para ordenar los elementos de menor a mayor y luego los últimos dos elementos (los mayores) son los que da como respuesta. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n");

34

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 4 (GUIA 2)\n"); printf("\t\t\t ====================\n"); int arreglo[15],ciclo1,pasadas,i,almacena; printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE PERMITA ENCONTRAR EL PRIMER Y SEGUNDO MAYOR DEUN ARREGLO DE 15 ELEMENTOS.\n\n"); printf("SOLUCION:\n\n"); //Pedir arreglo al usuario. for(ciclo1=0;ciclo1<15;ciclo1++){ printf("INTRODUZCA EL ELEMENTO %d DEL ARREGLO: ",ciclo1); scanf("%d",&arreglo[ciclo1]); } //Mostrar arreglo introducido por usuario. printf("\nEL ARREGLO INTRODUCIDO ES EL SIGUIENTE: \n\n"); for(i=0;i<15;i++){ printf("[%d] ",arreglo[i]); } printf("\n\n"); //Ciclo para controlar el número de pasos. for(pasadas=1;pasadas<15;pasadas++){ //Ciclo para controlar el número de comparaciones por pasada. for(i=0;i<14;i++){ //Compara los elementos adyacentes y los intercambia si el primer elemento es mayor que el segundo. if(arreglo[i]>arreglo[i+1]){ almacena=arreglo[i]; arreglo[i]=arreglo[i+1]; arreglo[i+1]=almacena; }//Fin del if. }//Fin del for interno. }//Fin del for externo. printf("LOS PRIMEROS DOS MAYORES DEL ARREGLO DE 15 ELEMENTOS SON: \n\n"); printf("PRIMER MAYOR: %d\n",arreglo[14]); printf("SEGUNDO MAYOR: %d\n\n",arreglo[13]); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while.

35

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

}

36

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 5 (GUÍA 2) MODIFICANDO EL EJERCICIO 4, IMPRIMA EN QUE POSICIONES SE ENCUENTRAN ESOS NUMEROS Breve descripción del programa: Este programa encuentra encuentra los dos números mayores de un arreglo y luego dice también en qué posición se encontraban estos números originalmente. Para esto se crea otro arreglo del orden de los elementos aparte del arreglo introducido por el usuario. Luego se utiliza el método de la burbuja y no solamente se aplica al arreglo introducido por el usuario sino también al arreglo del orden de los elementos, de modo que al final se pueda determinar las posiciones originales que los dos elementos mayores del arreglo original tenían al principio. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE);

37

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 5 (GUIA 2)\n"); printf("\t\t\t ====================\n"); int arreglo[15],ciclo1,pasadas,i,almacena,orden[15],almacenaorden; printf("\nPROBLEMA: MODIFICANDO EL EJERCICIO 4, IMPRIMA EN QUE POSICIONES SE ENCUENTRAN\nESOS NUMEROS.\n\n"); printf("SOLUCION:\n\n"); //Pedir arreglo al usuario. for(ciclo1=0;ciclo1<15;ciclo1++){ printf("INTRODUZCA EL ELEMENTO %d DEL ARREGLO: ",ciclo1); scanf("%d",&arreglo[ciclo1]); } //Crear arreglo de orden. for(ciclo1=0;ciclo1<15;ciclo1++){ orden[ciclo1]=ciclo1; } //Mostrar arreglo introducido por usuario. printf("\nEL ARREGLO INTRODUCIDO ES EL SIGUIENTE: \n\n"); for(i=0;i<15;i++){ printf("[%d] ",arreglo[i]); } printf("\n\n"); //Mostrar posiciones originales. printf("POSICIONES ORIGINALES: \n\n"); for(i=0;i<15;i++){ printf("[%d] ",orden[i]); } //Ciclo para controlar el número de pasos. for(pasadas=1;pasadas<15;pasadas++){ //Ciclo para controlar el número de comparaciones por pasada. for(i=0;i<14;i++){ //Compara los elementos adyacentes y los intercambia si el primer elemento es mayor que el segundo. if(arreglo[i]>arreglo[i+1]){ almacena=arreglo[i];

38

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

arreglo[i]=arreglo[i+1]; arreglo[i+1]=almacena; almacenaorden=orden[i];//Método de la burbuja aplicado al arreglo de las posiciones originales. orden[i]=orden[i+1]; orden[i+1]=almacenaorden; }//Fin del if. }//Fin del for interno. }//Fin del for externo. printf("\n\nLOS PRIMEROS DOS MAYORES DEL ARREGLO DE 15 ELEMENTOS SON: \n\n"); printf("PRIMER MAYOR: %d\n",arreglo[14]); printf("SEGUNDO MAYOR: %d\n\n",arreglo[13]); printf("POSICION ORIGINAL PRIMER MAYOR: %d\n",orden[14]); printf("POSICION ORIGINAL SEGUNDO MAYOR: %d\n\n",orden[13]); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

39

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 6 (GUÍA 2) MODIFICANDO EL EJERCICIO 3, IMPRIMA LAS POSICIONES ORIGINALES DEL ARREGLO Breve descripción del programa: Este programa toma un arreglo introducido por el usuario, luego lo ordena utilizando el método de la burbuja y finalmente muestra las posiciones originales que tenía cada elemento del arreglo antes de ser ordenado. Para eso se crea un nuevo arreglo de orden de los elementos y se le aplica el método de la burbuja de modo que cuando un elemento del arreglo original cambia de posición, su número de orden correspondiente también lo hace. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n");

40

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 6 (GUIA 2)\n"); printf("\t\t\t ====================\n"); int arreglo[10],ciclo1,pasadas,i,almacena,orden[10],almacenaorden; printf("\nPROBLEMA: MODIFICANDO EL EJERCICIO 3, IMPRIMA LAS POSICIONES ORIGINALES DEL\nARREGLO.\n\n"); printf("SOLUCION:\n\n"); //Pedir arreglo al usuario. for(ciclo1=0;ciclo1<10;ciclo1++){ printf("INTRODUZCA EL ELEMENTO %d DEL ARREGLO: ",ciclo1); scanf("%d",&arreglo[ciclo1]); } //Crear arreglo de orden. for(ciclo1=0;ciclo1<10;ciclo1++){ orden[ciclo1]=ciclo1; } //Mostrar arreglo introducido por usuario. printf("\nEL ARREGLO INTRODUCIDO ES EL SIGUIENTE: \n\n"); for(i=0;i<10;i++){ printf("[%d] ",arreglo[i]); } //Mostrar posiciones originales. printf("\n\nPOSICIONES ORIGINALES: \n\n"); for(i=0;i<10;i++){ printf("[%d] ",orden[i]); } printf("\n\n"); //Ciclo para controlar el número de pasos. for(pasadas=1;pasadas<10;pasadas++){ //Ciclo para controlar el número de comparaciones por pasada. for(i=0;i<9;i++){ //Compara los elementos adyacentes y los intercambia si el primer elemento es mayor que el segundo. if(arreglo[i]>arreglo[i+1]){ almacena=arreglo[i]; arreglo[i]=arreglo[i+1]; arreglo[i+1]=almacena; almacenaorden=orden[i];//Método de la burbuja aplicado al arreglo de las posiciones originales.

41

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

orden[i]=orden[i+1]; orden[i+1]=almacenaorden; }//Fin del if. }//Fin del for interno. }//Fin del for externo. printf("EL ARREGLO ORDENADO ES EL SIGUIENTE2: \n\n"); for(i=0;i<10;i++){ printf("[%d] ",arreglo[i]); } //Mostrar posiciones originales. printf("\n\nPOSICIONES ORIGINALES ANTES DE ORDENAR EL ARREGLO: \n\n"); for(i=0;i<10;i++){ printf("[%d] ",orden[i]); } printf("\n\n"); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

42

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 7 (GUÍA 2) ELABORE UN PROGRAMA QUE IMPRIMA EN ORDEN INVERSO UNA CADENA DE CARACTERES Breve descripción del programa: Este programa ya utiliza nuevas librerías que no se había estado utilizando en los ejercicios anteriores. Estas librerías son necesarias para el trabajo con cadenas. Se utiliza también una función que permite contar el tamaño de la cadena y con eso se genera el ciclo para que invierta el orden, generando un arreglo diferente al que se tenía originalmente para que la cadena quede con un orden invertido y resolver así el problema planteado por este ejercicio. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <string> #include #include using namespace std;//Necesario para que funcione. #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto.

43

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 7 (GUIA 2)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE IMPRIMA EN ORDEN INVERSO UNA CADENA DE\nCARACTERES.\n\n"); printf("SOLUCION:\n\n"); string cadena; printf("INTRODUZCA UNA CADENA DE CARACTERES:\n\n"); int cant_letras,x; getline(cin,cadena); cant_letras= cadena.length();//Cuenta cuántas letras hay en la cadena. printf("LA CADENA DE CARACTERES EN ORDEN INVERSO ES:\n\n"); for (x=cant_letras;x>=0;x--){ cout<
44

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 8 (GUÍA 2) ELABORE UN PROGRAMA QUE PERMITA INTRODUCIR UN ARREGLO DE 10 ELEMENTOS, EL PROGRAMA MOSTRARA UN HISTOGRAMA DE ESOS DATOS Breve descripción del programa: Este programa muestra un histograma que utiliza como frecuencia de cada clase los números introducidos por el usuario en el arreglo original. Para esto se utilizan los asteriscos como cadenas y se usa también un ciclo que vaya haciendo crecer el número de asteriscos que aparecerán juntos de acuerdo al número que se esté evaluendo. Esto se hace para cada elemento del arreglo y así se generará el resultado. Se necesita usar ciclos anidados (un “for” dentro de otro), y es necesario tener mucho cuidado con los ciclos y el incremento que va sufriendo la cadena que muestra los asteriscos para cada elemento del arreglo. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <string> #include using namespace std; #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO);

45

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 8 (GUIA 2)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE PERMITA INTRODUCIR UN ARREGLO DE 10 ELEMENTOS,EL PROGRAMA MOSTRARA UN HISTOGRAMA DE ESOS DATOS.\n\n"); printf("SOLUCION:\n\n"); int ciclo1,arreglo[10],i,asterisco; string numdeasteriscos; string dosespacios; string tresespacios; dosespacios=' ';//Para dejar un margen izquierdo de dos espacios y dos espacios entre arreglo[i] y numdeasteriscos. //Pedir arreglo al usuario. for(ciclo1=0;ciclo1<10;ciclo1++){ printf("INTRODUZCA EL ELEMENTO %d DEL ARREGO: ",ciclo1); scanf("%d",&arreglo[ciclo1]); } //Mostrar arreglo introducido por usuario. printf("\nEL ARREGLO INTRODUCIDO ES EL SIGUIENTE: \n\n"); for(i=0;i<10;i++){ numdeasteriscos='*'; for(asterisco=1;asterisco<arreglo[i];asterisco++){ numdeasteriscos=(numdeasteriscos)+'*'; } cout << dosespacios << arreglo[i] << dosespacios << numdeasteriscos << endl;//Ahí se está concatenando todo. } printf("\n"); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while.

46

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

}

47

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 9 (GUÍA 2) ELABORE UN PROGRAMA QUE MUESTRE LAS INICIALES DE UNA CADENA DE CARACTERES. EJEMPLO: CADENA ORIGINAL: UNIVERSIDAD CATOLICA DE OCCIDENTE. INICIALES: UCDO Breve descripción del programa: Este programa toma las iniciales de una cadena de carácteres introducida por el usuario. Esto no se ha hecho con funciones preestablecidas por Microsoft Visual C++ para encontrar iniciales, sino que simplemente programando que primeramente se cuente el número de caracteres (incluyendo los espacios como caracteres) que tiene la cadena introducida por el usuario. Luego con un ciclo se hace que el programa comience a examinar desde el primer elemento del arreglo hasta el último (desde el primer carácter de la cadena hasta la última). Cada vez que se encuentre un espacio en blanco, se ordena que se extraiga el carácter que está después del espacio y que se guarde en una variable. Cada vez que suceda eso se irá tomando el carácter que aparezca después del espacio y la variable que almacena las iniciales irá recibiendo nuevas letras hasta que se llegue a la última letra inicial. Finalmente se manda a imprimir la variable que contiene las iniciales. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <string> #include #include using namespace std;//Necesario para que funcione. #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n");

48

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 9 (GUIA 2)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE MUESTRE LAS INICIALES DE UNA CADENA DE\nCARACTERES. EJEMPLO: CADENA ORIGINAL: UNIVERSIDAD CATOLICA DE OCCIDENTE.\nINICIALES: UCDO.\n\n"); printf("SOLUCION:\n\n"); string cadena,resultado; int cant_letras,x; getline(cin,cadena);//Para que el usuario ingrese la cadena. cant_letras= cadena.length();//Cuenta cuántas letras hay en la cadena. printf("LAS INICIALES DE LA CADENA DE CARACTERES INTRODUCIDA SON:\n\n"); resultado=cadena[0]; for(x=0;x
49

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n");

50

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 10 (GUIA 2)\n"); printf("\t\t\t =====================\n"); int arreglo[25],ciclo1,i,valor,ciclo2,contador=0; printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE PERMITA INTRODUCIR UN ARREGLO DE 25 ELEMENTOS DE TIPO ENTERO. LUEGO PEDIR AL USUARIO QUE INTRODUZCA UN NUMERO. EL PROGRAMA MOSTRARA EL NUMERO DE VECES QUE SE REPITE DICHO VALOR EN EL ARREGLO.\n\n"); printf("SOLUCION:\n\n"); //Pedir arreglo al usuario. for(ciclo1=0;ciclo1<25;ciclo1++){ printf("INTRODUZCA EL ELEMENTO %d DEL ARREGLO: ",ciclo1); scanf("%d",&arreglo[ciclo1]); } //Mostrar arreglo introducido por usuario. printf("\nEL ARREGLO INTRODUCIDO ES EL SIGUIENTE: \n\n"); for(i=0;i<25;i++){ printf("[%d]",arreglo[i]); } printf("\n\n"); //Pide el valor a buscar. printf("INTRODUZCA EL NUMERO QUE DESEA BUSCAR EN EL ARREGLO: "); scanf("%d",&valor); for(ciclo2=0;ciclo2<25;ciclo2++){ if(arreglo[ciclo2]==valor){ contador=contador+1; } } printf("\nEL NUMERO %d SE REPITE %d VECES EN EL ARREGLO.\n\n",valor,contador); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

51

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

EJERCICIO 1 (GUÍA 3) ELABORE UN PROGRAMA QUE PERMITA ENCONTRAR EL PRIMER Y SEGUNDO MENOR DE UN ARREGLO DE 15 ELEMENTOS Breve descripción del programa: Este programa utiliza el método de la burbuja para ordenar los elementos de menor a mayor y finalmente determina que los elementos 0 y 1 del nuevo arreglo (luego de haber usado el método de la burbuja) son el primer y el segundo mayor. La ejecución del programa se muestra de la siguiente forma:

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n");

52

DE

ARREGLOS\n\t\t

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 1 (GUIA 3)\n"); printf("\t\t\t ====================\n"); int arreglo[15],ciclo1,pasadas,i,almacena; printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE PERMITA ENCONTRAR EL PRIMER Y SEGUNDO MENOR DE UN ARREGLO DE 15 ELEMENTOS.\n\n"); printf("SOLUCION:\n\n"); //Pedir arreglo al usuario. for(ciclo1=0;ciclo1<15;ciclo1++){ printf("INTRODUZCA EL ELEMENTO %d DEL ARREGLO: ",ciclo1); scanf("%d",&arreglo[ciclo1]); } //Mostrar arreglo introducido por usuario. printf("\nEL ARREGLO INTRODUCIDO ES EL SIGUIENTE: \n\n"); for(i=0;i<15;i++){ printf("[%d] ",arreglo[i]); } printf("\n\n"); //Ciclo para controlar el número de pasos. for(pasadas=1;pasadas<15;pasadas++){ //Ciclo para controlar el número de comparaciones por pasada. for(i=0;i<14;i++){ //Compara los elementos adyacentes y los intercambia si el primer elemento es mayor que el segundo. if(arreglo[i]>arreglo[i+1]){ almacena=arreglo[i]; arreglo[i]=arreglo[i+1]; arreglo[i+1]=almacena; }//Fin del if. }//Fin del for interno. }//Fin del for externo. printf("LOS PRIMEROS DOS MENORES DEL ARREGLO DE 15 ELEMENTOS SON: \n\n"); printf("PRIMER MENOR: %d\n",arreglo[0]); printf("SEGUNDO MENOR: %d",arreglo[1]); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\n\nSI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1;

53

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

} } } EJERCICIO 2 (GUÍA 3) UN NUMERO SE DICE QUE ES PERFECTO SI SUS FACTORES, INCLUYENDO A 1 (PERO EXCLUYENDO EL NUMERO MISMO), SUMAN IGUAL QUE EL NUMERO. POR EJEMPLO, 6 ESUN NUMERO PERFECTO PORQUE 6 = 1 + 2 + 3. ESCRIBA UN PROGRAMA QUE DETERMINE SI UN NUMERO ES PERFECTO. REALICE UN PROGRAMA EN C QUE DETERMINE E IMPRIMA TODOS LOS NUMEROS PERFECTOS ENTRE 1 Y 1000. IMPRIMA LOS FACTORES DE CADA NUMERO PERFECTO PARA CONFIRMAR QUE EL NUMERO DE VERDAD ES PERFECTO Breve descripción del programa: Primeramente en este programa se sacan los múltiplos de un número y el ciclo se programa de tal forma que no tome como múltiplo el número mismo que se está evaluando. Luego cada uno de los múltiplos encontrados los suma y si el resultado de dicha suma es igual al número que se está evaluando entonces se concluye que se trata de un número perfecto. Debido a que el problema nos pide los números perfectos entre 0 y 1000, los únicos que existen son el 6, el 28 y el 496. La ejecución del programa se muestra de la siguiente forma:

54

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 2 (GUIA 3)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: UN NUMERO SE DICE QUE ES PERFECTO SI SUS FACTORES, INCLUYENDO A 1\n(PERO EXCLUYENDO EL NUMERO MISMO), SUMAN IGUAL QUE EL NUMERO. POR EJEMPLO, 6 ESUN NUMERO PERFECTO PORQUE 6 = 1 + 2 + 3. ESCRIBA UN PROGRAMA QUE DETERMINE SI\nUN NUMERO ES PERFECTO. REALICE UN PROGRAMA EN C QUE DETERMINE E IMPRIMA TODOS\nLOS NUMEROS PERFECTOS ENTRE 1 Y 1000. IMPRIMA LOS FACTORES DE CADA NUMERO\nPERFECTO PARA CONFIRMAR QUE EL NUMERO DE VERDAD ES PERFECTO.\n\n"); printf("SOLUCION:\n\n"); int numero,contador,ciclo,residuo; for(numero=1;numero<=1000;numero++){//Ciclo hasta 1000 porque el ejercicio pide buscar los números perfectos entre 1 y 1000. contador=0;//La variable contador sirve para contar cuántos factores tiene cada número del 1 al 1000, sin tomar en cuenta como factor el número mismo que se está evaluando. for(ciclo=1;ciclo
55

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

int indice,ciclo1,residuo1; indice=0;//La variable indice se usará para determinar el número de un elemento dentro del arreglo y comienza con cero, tal como sucede en todos los arreglos que el primer elemento es siempre el cero. for(ciclo1=1;ciclo1
56

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

El código del programa es el siguiente: #include <stdio.h> #include <string> #include #include #include <windows.h> using namespace std;//Necesario para que funcione. #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 3 (GUIA 3)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: ESCRIBA UNA FUNCION QUE TOME UN VALOR ENTERO Y REGRESE EL NUMERO CON\nSUS DIGITOS INVERTIDOS. POR EJEMPLO 1245, LA FUNCION DEVOLVERA 5421.\n\n");

57

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("SOLUCION:\n\n"); string cadena; int cant_letras,x; printf("INTRODUZCA UN VALOR ENTERO: "); getline(cin,cadena); cant_letras= cadena.length();//Cuenta cuántas letras hay en la cadena. printf("LOS DIGITOS INVERSIDOS SON:\n\n"); for (x=cant_letras;x>=0;x--){ cout<
El código del programa es el siguiente: #include <stdio.h>

58

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

#include <windows.h> #include #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE); printf("\n\t\t\t EJERCICIO 4 (GUIA 3)\n"); printf("\t\t\t ====================\n"); printf("\nPROBLEMA: SI SE LANZA UN DADO 1000 VECES, CUAL SERA EL VALOR DE REPETICION DE\nCADA UNA DE LAS CARAS DEL DADO, UTILIZANDO LA FUNCION RANDOM, ESCRIBA UN\nPROGRAMA QUE DE COMO SALIDA LA CANTIDAD DE VECES QUE APARECE CADA UNA DE LAS\nCARAS DEL DADO.\n\n"); printf("SOLUCION:\n\n"); int ciclo,lanzamiento,cara1,cara2,cara3,cara4,cara5,cara6; cara1=0; cara2=0; cara3=0; cara4=0; cara5=0; cara6=0; srand(time(NULL));//Inicializar generador aleatorio. for(ciclo=1;ciclo<=1000;ciclo++){ lanzamiento=1+rand()%6;//Generar números aleatorios. switch(lanzamiento){ case 1: cara1=cara1+1; break; case 2: cara2=cara2+1;

59

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

break; case 3: cara3=cara3+1; break; case 4: cara4=cara4+1; break; case 5: cara5=cara5+1; break; case 6: cara6=cara6+1; break; } } printf("EL NUMERO DE REPETICIONES PARA CADA UNA DE LAS CARAS LUEGO DE LOS 1000\nLANZAMIENTOS (USANDO CRITERIOS DE ALEATORIEDAD) ES:\n\n"); printf("CARA UNO.....%d\n",cara1); printf("CARA DOS.....%d\n",cara2); printf("CARA TRES....%d\n",cara3); printf("CARA CUATRO..%d\n",cara4); printf("CARA CINCO...%d\n",cara5); printf("CARA SEIS....%d\n\n",cara6); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. } EJERCICIO 5 (GUÍA 3) ELABORE UN PROGRAMA QUE PERMITA INTRODUCIR UN ARREGLO DE 8 ELEMENTOS DE TIPO ENTERO. EL PROGRAMA MOSTRARA UN ARREGLO EN DONDE MUESTRE UN 1 PARA LOS PRIMOS Y UN 0 PARA LOS NO PRIMOS Breve descripción del programa: Este programa tiene doble complejidad porque primero se debe determinar si un número es primo o no y hacerlo para cada elemento del arreglo original introducido. En segundo lugar se debe imprimir un 0 o 1 si cada elemento del arreglo original es primo o no, y ese 0 o 1 hay que ubicarlo en un nuevo arreglo que corresponderá a cada elemento del arreglo original. Pero todo se hace fácilmente con los ciclos y determinando dentro del ciclo si un número es primo o no lo es. Los ciclos anidados son necesarios en este programa y es así como se desarrolla el programa. La ejecución del programa se muestra de la siguiente forma:

60

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

El código del programa es el siguiente: #include <stdio.h> #include <windows.h> #define FONDO (0) #define VERDE (10) #define AMARILLO (14) void main(){ HANDLE hStdInput=INVALID_HANDLE_VALUE, hStdOutput=INVALID_HANDLE_VALUE; hStdInput=GetStdHandle(STD_INPUT_HANDLE); hStdOutput=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("\n\t\t\tUNIVERSIDAD CATOLICA DE OCCIDENTE\n"); printf("\t\t FACULTAD DE INGENIERIA Y ARQUITECTURA\n\n\n"); printf("\t\t\t\tPROGRAMACION II\n\n\n"); printf("\t\tPROGRAMAS ARITMETICOS, DE ALEATORIEDAD Y DE ARREGLOS\n\t\t DESARROLLADOS EN MICROSOFT VISUAL C++\n\n\n"); printf("\t\t PROFESORA: ING. JEANNETTE A. CHACON MONTUFAR\n\n\n"); printf("\t\t\t\t ALUMNOS:\n"); printf("\n\t\t\t EDILBERTO ABDULIO BANOS MARTINEZ\n"); printf("\t\t\t JAIME OSWALDO MONTOYA GUZMAN\n\n\n"); printf("\t\t PRESENTACION: MARTES, 13 DE JUNIO DE 2006"); Sleep (7000);//7 segundos permanecerá la portada antes de que aparezca la ventana del ejercicio resuelto. float salir; int saliryesno; salir=0; while(salir==0){ system("cls"); SetConsoleTextAttribute(hStdOutput,FONDO|VERDE);

61

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

printf("\n\t\t\t EJERCICIO 5 (GUIA 3)\n"); printf("\t\t\t ====================\n"); int arreglo[8],ciclo1,pasadas,i,almacena,ciclo,residuo,contador,primos[8]; printf("\nPROBLEMA: ELABORE UN PROGRAMA QUE PERMITA INTRODUCIR UN ARREGLO DE 8 ELEMENTOS DE TIPO ENTERO. EL PROGRAMA MOSTRARA UN ARREGLO EN DONDE MUESTRE UN 1 PARA LOS PRIMOS Y UN 0 PARA LOS NO PRIMOS.\n\n"); printf("SOLUCION:\n\n"); //Pedir arreglo al usuario. for(ciclo1=0;ciclo1<8;ciclo1++){ printf("INTRODUZCA EL ELEMENTO %d DEL ARREGLO: ",ciclo1); scanf("%d",&arreglo[ciclo1]); } //Mostrar arreglo introducido por usuario. printf("\nEL ARREGLO INTRODUCIDO ES EL SIGUIENTE: \n\n"); for(i=0;i<8;i++){ printf("[%d] ",arreglo[i]); } printf("\n\n"); //Crear arreglo primos o no. for(ciclo1=0;ciclo1<8;ciclo1++){ for(ciclo=1;ciclo<=arreglo[ciclo1];ciclo++){ residuo=arreglo[ciclo1]%ciclo; if(residuo==0){ contador=contador+1; } } if(contador<=2){ primos[ciclo1]=1; } else{ primos[ciclo1]=0; } contador=0; } //Mostrar arreglo de primos o no primos. printf("\nEL ARREGLO QUE MUESTRA 1 PARA NUMEROS PRIMOS Y 0 PARA NUMEROS QUE NO SON PRIMOS ES EL SIGUIENTE:\n\n"); for(i=0;i<8;i++){ printf("[%d] ",primos[i]); } printf("\n\n"); SetConsoleTextAttribute(hStdOutput,FONDO|AMARILLO); printf("SI DESEA SALIR PRESIONE 1 O DE LO CONTRARIO PRESIONE OTRO NUMERO: "); scanf("%d",&saliryesno); if(saliryesno==1){ printf("\n\a"); salir=1; } }//Fin del while. }

62

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

CONCLUSIÓN Luego de haber resuelto satisfactoriamente cada uno de los problemas propuestos en la guía de ejercicios, se concluye que este trabajo ha sido de mucho beneficio en el aprendizaje porque se pudo poner en práctica la teoría y los conocimientos adquiridos de programación en C++ para la solución de problemas que tienen una complejidad básica que todo programador debe saber resolver. Las impresiones de pantalla mostradas sirven para poder comparar el código con la ejecución de los programas. Se muestran ciertos comentarios a lo largo del código para recordar o aclarar algunos detalles importantes. Se concluye que este tipo de ejercicios son muy importante de desarrollar para todo programador, pues exigen la utilización de las herramientas básicas como las condiciones “if”, los ciclos “for”, los criterios de aleatoriedad para generar valores, el manejo y programación de cadenas de caracteres y por supuesto los arreglos y manipulación de arreglos y búsqueda de datos dentro de estos. Todo ello se ha puesto en práctica en el desarrollo de estos ejercicios y al mismo tiempo se ha utilizado la creatividad y el análisis (indispensable para un programador) para encontrar la mejor solución a los problemas que se nos asignaron.

63

Programas Aritméticos, de Aleatoriedad y de Arreglos Desarrollados en Microsoft Visual C++

DATOS DEL AUTOR Jaime Oswaldo Montoya Guzmán Lugar y fecha de nacimiento: San Salvador, 16 de julio de 2006 Profesión: Estudiante de Ingeniería en Sistemas Informáticos ciclo III en la Universidad Católica de Occidente (UNICO) Lugar: Santa Ana Tema del trabajo: Programas aritméticos, de aleatoriedad y de arreglos desarrollados en Microsoft Visual C++ Asignatura: Programación II Fecha de envío del trabajo: Lunes, 5 de junio de 2006 [email protected] Sitio web personal: http://jaimemontoya.googlepages.com

64