El presente trabajo es una recopilacin de los diferentes temas tratados en la
catedra de programacin, en lo cual nos imparti el conocimiento bsico para la estructuracin del cdigo en C++. Grupo #1. Instrucciones Break y contine
La instruccin Break altera el flujo del control. Cuando las instrucciones break se ejecuta en una estructura while, for, do/while se provoca la salida inmediata de la estructura o el escape del ciclo de una manera anticipada al resto de la estructura
La instruccin contine se ejecuta en una estructura while, for, do/while escapa del resto de las instrucciones en el cuerpo de esa estructura y procede con la siguiente interaccin del ciclo.
Programa#1.1 //Programa que desarrolla las potencias de un numero ingresado #include<iostream.h> #include<math.h> int main() { int c=1; int n; int r; int x; int y; cout<<"Ingrese un numero y el programa le mostrara las potencias menores que 500"<<endl; cin>>n; while (c<=100) { r=pow(n,c); cout<<r<<endl; c=c+1; if(r>500) break; } cout<<"La siguiente potencia es mayor que 500"<<endl; cout<<"ingres 2 numeros para realizar una suma"<<endl; cin>>x; cin>>y; cout<<"La suma es"<<x+y<<endl; return 0; }
Programa#1.2 // Programa que desarrolla la tabla de multiplicar #include<iostream.h> int main() { int c=1; int n; int r; int salida; cout<<"ingrese un numero entero y el programa le desarrollara las tablas de multiplicar hasta el diez"<<endl; cout<<"y lo interrumpira cuando aparezca un resultado mayor que 15"<<endl; cin>>n; while(c<=10) { r=n*c; if(r>=15) break; cout<<n<<" x "<<c<<" = "<<r<<endl; c=c+1; } cin>>salida; return 0; }
Grupo #2. Funciones Una funcin es un modulo que esta separado del cuerpo principal, est formada por un conjunto de sentencias que realizan una determinada tarea y que podemos invocar mediante un nombre, [tipo devuelto] nombre funcin ([tipo parametro1][, tipo parametro2][, ....]).
Parmetros Los parmetros formales son los datos que recibe la funcin para operar con ellos. Una funcin puede recibir cero o ms parmetros. Se debe especificar para cada parmetro su tipo. Los parmetros formales deben coincidir en nmero, orden y tipo
Llamado de la funcin La instruccin RETURN es quien regresa un y solo un dato a la parte del programa que la este llamando o invocando
Programa # 2.1 //volumen de un rectangulo; #include<iostream.h> #include<math.h> double volumenrect(double a,double b,double h){ double v; v=a*b*h; return v;} int main(){ double num1, num2, num3; cout<<"Volumen de un rectangulo"<<endl; cout<<"Ingrese a=largo"<<endl; cin>>num1; cout<<"Ingrese el b=ancho"<<endl; cin>>num2; cout<<"Ingrese el h=altura"<<endl; cin>>num3; cout<<"El volumen del rectangulo es:"<<volumenrect(num1,num2,num3)<<endl; return 0;}
Programa #2.2 //Maximo de un entero. #include<iostream.h> int maximo(int x, int y, int z){ int max=x; if (y>maxz){ max=y;} if (z>max){ max=z;} return max;} int main(){ int ent1,ent2,ent3; cout<<"entero 1:"; cin>>ent1; cout<<"entero 2:"; cin>>ent2; cout<<"entero 3:"; cin>>ent3; cout<<"El maximo es:"<<maximo(ent1, ent2, ent3); return 0;}
Grupo#3. Libreria Math.h Comparacin de Cuadros #include<iostream.h> int main(){ inta,b,r; cout<<"SUMA DE ENTERO"<<endl; cout<<"ingrese el primer nmero:"; cin>>a; cout<<"ingrese el segundo nmero:"; cin>>b; r= a+b; cout<<"la suma es:"<<r<<endl; return 0; } #include<iostream.h> intsumar(){ inta,b,r; cout<<"SUMA DE ENTERO"<<endl; cout<<"ingrese el primer nmero:"; cin>>a; cout<<"ingrese el segundo nmero:"; cin>>b; r= a+b; cout<<"la suma es:"<<r<<endl; } Int main() { sumar (); return 0; }
Librera math.h math.h es un archivo de cabecera de la biblioteca estndar del lenguaje de programacin C diseado para operaciones matemticas bsicas. Muchas de sus funciones incluyen el uso de nmeros en coma flotante. C++ tambin implementa estas funciones por razones de compatibilidad y las declara en la cabecera
Programa # 3.1 //Area de un Circulo #include<iostream.h> #include <math.h> double Areacirculo(double r) { double A; A=pow(r,2)*3.1415; return A; } int main() { double radio; cout<<"AREA DE UN CIRCULO"<<endl; cout<<"introduzca el radio:"; cin>>radio; cout<<"El area es:"<<Areacirculo(radio); return 0; }
Grupo#4. Archivos de encabezado Definicin: Los archivos de encabezado contienen los prototipos de funcin para las funciones relacionadas que forman cada porcin de la biblioteca. Los archivos de encabezado tambin contienen definiciones de varios tipos de clases y funciones, as como las constantes que necesitan las funciones. Un archivo de encabezado instruye al compilador acerca de como interconectarse con los componentes de la biblioteca y los componentes escritos por el usuario.
Algunos archivos de encabezado, y que son de uso mas frecuente :
<cfloat> (float.h) : Esta cabecera se describe las caractersticas de los tipos flotantes para el sistema especfico y Implementacin compilador utilizado
<cmath>(math.h) : Es un archivo de cabecera diseado para operaciones matemticas bsicas.
<cstdio>(stdio.h): El archivo de cabecera que contiene las definiciones de macros, las constantes, las declaraciones de funciones y la definicin de tipos usados por varias operaciones estndar de entrada y salida. (stdio significa Standar Input Output header). Contiene funciones para poder ingresar datos por teclado y para mostrar por pantalla, adems de algunas otras. <cstdlib> (stdlib.h): (std-lib: standard library o biblioteca estndar) Contiene prototipos de funcin para las conversiones de nmeros a texto, de texto a nmeros, asignacin de memoria, nmeros aleatorios y varias otras funciones utilitarias. <string>(string.h) : Contiene la definicin de macros, constantes, funciones y tipos de utilidad para trabajar concadenas de caracteres y algunas operaciones de manipulacin de memoria <ctime>(time.h) : Contiene funciones para manipular y formatear la fecha y hora del sistema. <ctype>(ctype.h): sta librera se encarga de todo lo relacionado a modificar y operar con caracteres. <cassert>(assert.h): sta librera es muy til a la hora de depuracin de programas y previsin de comportamientos inesperados.
Archivos de encabezado Tipos de archivos para libreras ms comunes. funcin tipo librera sintaxis informacin cos(d) double math.h double cos(double d); complex cos(complex d); Devuelve el coseno de d sin(d) double math.h double sin(doubl d); Devuelve el seno de d tan(d) double math.h double tan(double d); Devuelve la tangente de d sqrt(d) double math.h double sqrt(double d); Devuelve la raiz cuadrada de d pow(d1, d2) double math.h double pow(double d1, double d2); Devuelve d1 elevado a la potencia d2 log10(d) double math.h double log10(double d); Devuelve el logaritmno (en base 10) de d log(d) double math.h double log(double d); Devuelve el logaritmo natural de d abs(i) int stdlib.h int abs(int i); Devuelve el valor absoluto de i tolower int ctype.h o stdlib.h int tolower(int c); Convierte una letra a minuscula toupper int ctype.h o stdlib.h int toupper(int c); Convierte una letra a mayuscula getchar( ) int stdio.h int getchar(void); Lee un caracter desde el dispostivo de entrada estandar gets(s) char(puntero ) stdio.h char *gets(char *cad); Lee una cadena de caracteres desde el dispositivo de entrada estandar printf(...) int stdio.h int printf(const char *formato[,argume nto,...]); Escribe datos en dispositivo de salida estandar.
%c Caracter %d Entero Decimal %e Real (double o float), notacion cientifica. %f Coma flotante %s Cadena de caracteres %x Hexadecimal sin signo scanf(...) int stdio.h int scanf(const char *formato {,direccion,...]); Lee datos en dispositivo de entrada estandar %c Caracter %d Enetero Decimal %x Hexadecimal %i Entero Decimal %f Numero Real %o Octal %p Puntero %s Cadena isalnum(c) int ctype.h int isalnum(int c); Determina si el argumento es alfanumerico. Devuelve un valor disitinto de cero si es cierto; en otro caso devuelve 0 time(p) long int time.h time_t time(time_t *h); Devuelve el numero de segundos transcurridos despues de un tiempo base designado struct tm *gmtime(time_t *) Recibe un puntero a una variable de tiempo (time_t*) y devuelve su conversin como fecha/hora UTC a struct tm a travs de un puntero. time_t mktime(struct_tm *) Inversamente a gmtime() y localtime(),l recibe un puntero a struct tm (struct tm*) y devuelve su conversin al tipo time t. struct tm *localtime(time_t *) Similar funcionalidad a gmtime(), pero devuelve la conversin como fecha/hora LOCAL. time_t time(time_t *) Devuelve la fecha/hora (time_t) actual o -1 en caso de no ser posible. Si el argumento que se le pasa no es NULL, tambin asigna la fecha/hora actual a dicho argumento. int tm_hour hora (0 - 23) int tm_mday da del mes (1 - 31) int tm_isdst Horario de verano enabled/disabled int tm_min minutos (0 - 59) int tm_sec segundos (0 - 60) int tm_mon mes (0 - 11, 0 = Enero) int tm_wday da de la semana (0 - 6, 0 = domingo) int tm_year ao desde 1900 int tm_yday da del ao (0 - 365) Programa # 4.1 //Resolviendo una cuadratica #include <stdio.h> #include <math.h> #include <conio.h> #include <time.h> int main( ) { float A, B, C, D, S, sol1, sol2; printf("Bienvenido, resolveremos su ecuacin de segundo grado.\n\n"); printf("\nPo favor ingrese en coeficiente A: "); scanf("%f",&A); printf("\nAhora, escriba el coeficiente B: "); scanf("%f",&B); printf("\nPor ultimo, inserte el coeficiente C: "); scanf("%f",&C); D=B*B-4*A*C; if(D<0){ printf("\n\nDisculpe, no tiene solucion real\n\n"); }else if(D==0){ S=-B/2*A; printf("\n\nEl resultado de la ecuacion es %f\n\n",S); }else{ sol1=(-B+sqrt(D))/(2*A); sol2=(-B-sqrt(D))/(2*A); printf("\n\nLos resultados de la ecuacion son %f y %f\n\n",sol1,sol2); } printf("\nGracias por utilizar este programa\n\n"); time_t x; struct tm *hora; struct tm *fecha; time(&x); hora = localtime(&x); fecha = localtime(&x); printf("%d-%d-%d\n", fecha->tm_mday, fecha->tm_mon+1, fecha->tm_year+1900); printf("%d:%d:%d", hora->tm_hour, hora->tm_min, hora- >tm_sec); getch(); return 0; }
Programa # 4.2 //Uso de assert.h #include <iostream.h> #include <assert.h> #include <conio.h> int main() { double a, b,divi; cout<<"Ingrese el numerador:\n"; cin>>a; cout<<"Ingrese el denominador:\n"; cin>>b; assert(b!=0); divi=a/b; cout<<"la divicion es: " <<a<<"\\"<<b<<"= "<<divi; getch(); return 0; }
Programa #4.3 //Conteo de vocales #include <stdio.h> #include <conio.h> void main(){ int contador=0,a=0,e=0,i=0,o=0,u=0; char c; printf("Introduzca caracteres hasta pulsar el guion:\n\n"); while(contador==0){ c=getche(); if(c=='a'){ a++; }else if(c=='e'){ e++; }else if(c=='i'){ i++; }else if(c=='o'){ o++; }else if(c=='u'){ u++; }else if(c=='-'){ contador=1; }else{ contador=0; } } printf("\n\n\t\t\tRecuento de vocales\n"); printf("\nLa a se ha repetido %d veces \n",a); printf("\nLa e se ha repetido %d veces \n",e); printf("\nLa i se ha repetido %d veces \n",i); printf("\nLa o se ha repetido %d veces \n",o); printf("\nLa u se ha repetido %d veces \n",u); printf("\n\nGracias por utilizar este programa.\n\n"); getch();
Grupo #5. Printf () y Scanf () Printf : Salida de datos con formato. Escribe una serie de caracteres en la salida estndar (pantalla). Formato de Printf: Cadena de caracteres, entre comillas dobles, que especifica como va a ser la salida. Argumento de Printf : Indica las variables a escribir. Scanf: Entrada de datos con formato. Lee datos de la entrada estndar (teclado), los interpreta y los almacena en los argumentos. Formato de Scanf: Cadena de caracteres, entre comillas dobles, que especifica como van a ser introducidos los datos. Argumento de Scanf : Indica las direcciones de variables que almacenaran los datos (&). Las funciones printf y scanf, la utilizaremos para mostrar e ingresar informacin respectivamente. La funcin scanf es el equivalente e inverso de la funcin printf, de hecho tambin se incluye en la librera estndar de C (stdio.h). Funciona exactamente igual que printf, pero al inverso. Es decir en vez de "devolver" datos, "recibir".
Ejemplo de Printf :
printf("Hola Mundo"); printf("Funcin printf, para mostrar informacin en pantalla");
Para %d, se debe asignar una variable del tipo int Para %f, se debe asignar una variable del tipo float Para %c, se debe asignar una variable del tipo char.
Programa #5.1 //puntos en el plano cartesiano #include<stdio.h> #include<math.h> int main () { int x1, x2, y1, y2; double M,Ix, Iy, D, x3, y3; printf("Ingrese los puntos de la recta:\n"); scanf("%d %d %d %d", &x1,&x2,&y1,&y2); M=(y2-y1)/(x2-x1); printf("\nLa pendiente es igual a: %f\n", M); Iy= (y1-x1)*M; printf("El intercepto en y es: %f\n", Iy); Ix= x1-(y1/M); printf("El intercepto en x es: %f\n", Ix); D= sqrt(pow(x2-x1,2)+pow(y2-y1,2)); printf("La distancia entre los dos puntos de la recta son: %f\n",D); x3=(x1+x2)/2; y3=(y1+y2)/2; printf("La coordenada del punto medio en el eje x es: %f\n",x3); printf("La coordenada del punto medio en el eje y es: %f\n",y3); return 0; }
Programa #5.2 //Programa multiplicador #include <stdio.h> main () { int a, b, producto; printf ("\nTeclee dos nmeros enteros: "); scanf ("%d %d", &a, &b); producto = multiplica (a, b); printf ("\nEl resultado es %d", producto); } /* Definicin de la funcin multiplica() */ multiplica (int x, int y) { return (x * y); }
Grupo #6. Recursividad La recursividad consiste en realizar una definicin de un concepto en trminos del propio concepto que se est definiendo. Una funcin recursiva es una funcin que se llama a si misma, ya sea de manera directa, o indirecta(a travs de otra funcin ). Los mtodos para solucionar problemas recursivos tienen un conjunto de elementos en comn, se llama a una funcin recursiva para resolver un problema.
Solucin de problemas recursivos
Divisin sucesiva del problema original en uno o varios ms pequeos, del mismo tipo que el inicial. Se van resolviendo estos problemas ms sencillos. Con las soluciones de stos se construyen las soluciones de los problemas ms complejos.
Caractersticas de los problemas que pueden ser resueltos de manera recursiva Los problemas pueden ser redefinidos en trminos de uno o ms sub problemas, idnticos en naturaleza al problema original, pero de alguna forma menores en tamao.
Uno o ms sub problemas tienen solucin directa o conocida, no recursiva.
Aplicando la redefinicin del problema en trminos de problemas ms pequeos, dicho problema se reduce sucesivamente a los sub problemas cuyas soluciones se conocen directamente.
La solucin a los problemas ms simples se utiliza para construir la solucin al problema inicial.
El Caso Base La llamada recursiva, que expresa el problema original en trminos de otro ms pequeo, y el valor para el cual se conoce una solucin no recursiva. Esto es lo que se conoce como caso base: una instancia del problema cuya solucin no requiere de llamadas recursivas. Es la condicin de finalizacin de la funcin recursiva. Sin el caso base la rutina recursiva se llamara indefinidamente y no finalizara nunca. Es el cimiento sobre el cual se construir la solucin completa al problema.
Programa #6.1 //Programa factorial #include<stdio.h> #include<conio.h> int factorial(int n) { if(n<2)//Caso Base return 1; else return n * factorial(n-1); //paso recursivo } int main() { int num=0; printf("::CALCULAR FACTORIAL::\n"); printf("Introduce un numero: "); scanf("%i",&num); //Pedir variable num printf("\tEl resultado es: %i\n", factorial(num)); //Llama la funcion e imprime resultado getch (); return 0; }
Programa #6.2 // Este programa muestra en la pantalla cierto numero de Garra dependiendo del numero que decidamos darle a Porra e ira bajando ese numero hasta el caso base que es n==1 y entonces imprimir en la pantalla la palabra Catracha #include<iostream.h> #include<conio.h> void porra(int n); int main() { porra(3); return 0; } void porra(int n) { if(n == 1) //Caso Base { cout << " Catracha !!\n"; } else { cout << " Garra "; porra(n - 1); } getch (); }
Grupo #7. Funciones Inline
Inline es utilizada en C++ y se aplica a una funcin. Esta indica al compilador que cada llamado a la funcin inline deber ser reemplazado por el cuerpo de esta funcin. En la prctica la funcin inline es utilizada solo cuando las funciones son pequeas para evitar generar un ejecutable de tamao considerable. La funcin inline se puede usar en cualquier biblioteca de C++.
Cuando una funcin miembro no deba modificar el valor de ningn dato de la clase, podemos y debemos declararla como constante Una variable declarada const no se puede cambiar, es decir, es una constante. No obstante, la palabra const slo se tiene en cuenta durante el tiempo de compilacin. El compilador emite un error cuando encuentra una instruccin que asignar un valor a una constante.
Const Programa #7.1 //Volumen de un Cubo #include<iostream.h> #include<conio.h> inline double cubo(const double lado) { return lado*lado*lado; } int main() { cout<<"introduzca la longitud del lado de su cubo:"; double valorlado; cin>>valorlado;
cout<<"el volumen del cubo es: "<<cubo(valorlado)<<endl; getch(); return 0; }
Programa #7.2 // Programa del Factorial include<iostream.h> #include<conio.h> int i; int factorial=1; inline long int factoriales (const long int fac) { for (i=1; i<=fac; i++) { factorial=i*factorial;} return factorial ; } int main() { long int n; cout<<"ingrese el valor de n"<<endl; cin>>n; while (n<0) { cout<<"el valor de n debe ser positivo"<<endl<<endl;
cout<<"****************************** *"<<endl; cout<<"Ingrese un nuevo valor de n "<<endl; cin>>n; } if (n==0) { cout<<"el factorial es:1"<<endl;} else { cout<<"el valor del factorial es:"<<factoriales(n)<<endl;} getch () ; return 0; }
Grupo #8. Arreglos Un arreglos es aquel almacenan una especie de lista de muchos elementos de un mismo tipo de dato. Se considera un buen principio de programacin declarar la cantidad de elementos de nuestro arreglo en una variable constante; como se muestra en el siguiente ejemplo. const int tam=10; int lista [tam]; Los arreglos pueden ser: Unidimensional, Bidimensional, Multidimensional Arreglo unidimensional: es un tipo de datos estructurados que est formado de una coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Estn formados por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre, y se diferencian por la posicin que tiene cada elemento dentro del arreglo de datos. [5,6,7,4,9,3] int lista []
Arreglo bidimensional: es la representacin de tablas de valores o matrices, consistiendo de informacin arreglada en reglones y columnas. [5,6,7,4] int matriz[][] Arreglo multidimensional: Es un tipo de dato estructurado, que est compuesto por dimensiones. El termino dimensin representa el numero de ndices utilizados para referirse a un elemento en particular dentro del arreglo. <2,2,2> int vector [] Subndices en un arreglo: Los subndices nos permiten ver la posicin de un elemento dentro de un arreglo. C=[1,3,4,2,6,7,8] el elemento que tiene subndice 0 o que est en la posicin 0 del arreglo es 1; C[0]=1, C[5]=7. Declarar un arreglo es as como declaramos las variables de tipo entero (int) 1. Tipo de Dato (Almacena el arreglo si es entero) 2. Nombre o identificador 3. Cantidad de Elementos (se colocan entre corchetes)
Programa #8.1 //Inicializacion de un arreglo #include<iostream.h> #include<iomanip.h> int main() { int n[10]; for (int i=0; i<10; i++) n[i]=0; cout<<" elemento"<< setw(15)<<"valor"<<endl; for (int j=0; j<10; j++) cout<<setw(7)<<j<< setw(15)<<n[j]<<endl; return 0; }
Programa #8.2 //AREGLO EN DOS DIMENSIONES // suma de matrices # include<iostream.h> # include<iomanip.h> int main(){ int matrizA[2][2],matrizB[2][2]; cout<<"ingrese los elementos de la matriz A \n"; for (int i=0; i<2;i++) for (int j=0; j<2;j++) { cout<<"a"<<(i+1)<<(j+1)<<"="; cin>>matrizA[i][j]; } cout<<endl; for (int m=0; m<2;m++) { for (int n=0; n<2;n++) cout<<setw(10)<<matrizA[m][n]; cout<<endl; } cout<<endl; cout<<"ingrese los elementos de la matriz B \n"; for (int x=0; x<2;x++) for (int y=0; y<2;y++) { cout<<"b"<<(x+1)<<(y+1)<<"="; cin>>matrizB[x][y]; } cout<<endl; for (int p=0; p<2;p++) { for (int q=0; q<2;q++) cout<<setw(10)<<matrizB[p][q]; cout<<endl; } cout<<endl; cout<<"la suma de matrices es:\n\n"; for(int a=0;a<2;a++) { for(int b=0;b<2;b++) cout<<setw(5)<<matrizA[a][b]+matrizB[a][b]; cout<<endl; } return 0; }
Grupo #9. Ordenamiento de Arreglos Clave: La parte de un registro por la cual se ordena la lista. Por ejemplo, una lista de registros con campos nombre, direccin y telfono se puede ordenar alfabticamente de acuerdo a la clave nombre. En este caso los campos direccin y telfono no se toman en cuenta en el ordenamiento. Criterio de ordenamiento (o de comparacin): EL criterio que utilizamos para asignar valores a los registros con base en una o ms claves. De esta manera decidimos si un registro es mayor o menor que otro. Registro: Un grupo de datos que forman la lista. Pueden ser datos atmicos (enteros, caracteres, reales, etc.) o grupos de ellos, que en C equivalen a las estructuras. La Ordenacin de burbuja (Bubble Sort en ingls) es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambindolos de posicin si estn en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten ms intercambios, lo cual significa que la lista est ordenada. Tambin es conocido como el mtodo del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparacin, siendo el ms sencillo de implementar La idea bsica de este algoritmo consiste en comparar pares de elementos adyacentes e intercambiarlos entre s hasta que todos se encuentren ordenados. Se realizan (n-1) pasadas, transportando en cada de las mismas el menor o mayor elemento (segn sea el caso) a su posicin ideal. Vamos a ordenar la lista en forma ascendiente, es decir, de menor a mayor. Obviamente es esencialmente lo mismo que hacerlo en forma inversa. La forma de intercambiar los elementos depende de la estructura de datos: si es un arreglo (dinmico o esttico) es necesario guardar una copia del primer elemento, asignarle el segundo al primero y el temporal al segundo. La variable temporal es necesaria, porque de lo contrario se perdera uno de los elementos. Si la estructura es una lista dinmica el procedimiento es parecido, pero se utilizan las direcciones de los elementos. En el pseudocdigo se utilizar el primer mtodo. La lista se manejar como un arreglo de C: si tiene TAM elementos, el primer elemento es lista[0] y el ltimo es lista[TAM-1]. Esto ser as para todo el pseudocdigo presentado en este artculo
Estructura con un ciclo For 1. for (i=1; i<TAM; i++) 2. for j=0 ; j<TAM - 1; j++) 3. if (lista[j] > lista[j+1]) 4. temp = lista[j]; 5. lista[j] = lista[j+1]; 6. lista[j+1] = temp Esta es nuestra lista: 4 - 3 - 5 - 2 - 1 Tenemos 5 elementos. Es decir, TAM toma el valor 5. Comenzamos comparando el primero con el segundo elemento. 4 es mayor que 3, as que intercambiamos. Ahora tenemos: 3 - 4 - 5 - 2 - 1 Ahora comparamos el segundo con el tercero: 4 es menor que 5, as que no hacemos nada. Continuamos con el tercero y el cuarto: 5 es mayor que 2. Intercambiamos y obtenemos: 3 - 4 - 2 - 5 - 1 Comparamos el cuarto y el quinto: 5 es mayor que 1. Intercambiamos nuevamente: 3 - 4 - 2 - 1 - 5 Repitiendo este proceso vamos obteniendo los siguientes resultados: 3 - 2 - 1 - 4 5 ; 2 - 1 - 3 - 4 5 ; 1 - 2 - 3 - 4 - 5
Programa #9.1 #include <iostream> #include <iomanip> using std:: setw; int main () { const int tamanoarreglo = 10; int a[tamanoarreglo]={2,7,8,3,78,98,21,34,89,9 }; int mantiene; cout<<"elementos de datos en el orden original"; getchar(); for(int i = 0; i< tamanoarreglo; i++) cout<<setw(4)<<a[i]; for(int pasada =0; pasada < tamanoarreglo - 1; pasada++ ) for(int j=0; j < tamanoarreglo - 1; j++ ) if (a[j] > a[j + 1 ]) { mantiene = a[j]; a[j] = a[j + 1 ]; a[j + 1 ] = mantiene; } cout<<"\n elementos de datos en orden ascendente\n"; for (int k = 0; k< tamanoarreglo; k++) cout<<setw(4)<<a[k]; cout<<endl; getchar(); return 0; }