You are on page 1of 39

#include <iostream> //Biblioteca para cin y cout #include <stdlib.

h> //Biblioteca para system("pause") using namespace std; int main() //funcion main lleva el control del programa { int x=0; //declaracion e inicializacion de variable do { x=x+5; //hacer aumento de cinco en cinco cout <<x<<", "<<endl; //escribir los numeros separados por coma y salto de pagina } while (x<=99); //condicion siempre que sea menor a cien system("PAUSE"); return 0; }

Programa que imprime los nmeros impares entre 0 y 100 e imprime cuantos hay. La variable contador est inicializada a uno por conveniencia. Sugerencia: Hacer este programa con la sentencia do while. Cdigo:
#include <iostream> using namespace std; int main() { int contador,contador1; contador1=0; cout << "\t Estos son los nmeros impares entre 0 y 100 \n"; cout << "\t -------------------------------------------\n"; for(contador=1; contador<100; contador+= 2)//Este contador permite moverme de impar a impar { contador1++; // Este otro contador cuenta el nmero de impares cout << contador << " , "; } cout << "\nEl nmero de impares entre cero y cien es: " << contador1 << endl; cout << "Pulse una tecla para acabar..."; cin.get(); return 0; }

Aqu se muestra como funciona un contador aunque la forma de asignacin no es la ms propia para c y c++, puedindose cambiar sta a: contador++ ver tema 4 curso de c++ asignacin de operadores. Sugerencia: Intentar hacer este programa con la sentencia do while.

Cdigo:
// Programa que muestra los nmeros del 0 al 100 #include <iostream> using namespace std; int main() { int contador; for(contador=0;contador <=100;contador = contador + 1)//*Ver nota { cout << contador << " , " ; } cout << endl; cout << "Presione una tecla para acabar..."; cin.get(); return 0; }

Programa que calcula la suma de los cuadrados de los nmeros pares entre 0 y 100. Cdigo:
#include <iostream> using namespace std; int main() { int suma, pares, cuadrados; cuadrados=suma=0; for(pares=2;pares<=100;pares+=2) { cuadrados = pares * pares; suma = suma + cuadrados; } cout << "\nLa suma de los cuadrados del 0 al cien es: " << suma << endl; cout << "Pulse una tecla para acabar...\n"; cin.get(); return 0; }

Tareas repetitivas usando bucles "for". Cdigo:


/* Programa que pide un nmero y lo escribe 10 veces en pantalla*/ #include <iostream> using namespace std; int main() {

int num;// Declaracin de variable a mostrar cout << "Introduzca el nmero "; cin >> num; for (int cont=0; cont < 10; cont++) // Comienzo bucle for (Ver tema 5)** { cout << num << endl; } return 0; }

El ejemplo muestra el uso de la sentencia condicional IF, y el uso del operador lgico &&. A travs de estos se calcula el menor nmero entre tres nmeros enteros. En el caso del lgico &&, observar como su uso "involucra", "exige" que sus dos operandos cumplan determinada condicin: Para el caso del primer if operando 1 es: num_1 < num_2 operando 2 es: num_1 < num_3 && es: El operador lgico Y AND. **Cualquier sugerencia o correccin escribirme a m e-mail, gracias a todos espero ayudar en algo** Cdigo:
#include <stdio.h> void main(void) { /* Declaramos las variables */ int num_1, num_2, num_3; int num_menor; /* Inicializamos las variables num_... */ num_1 = 2; num_2 = 134; num_3 = 5; /* Determinamos el menor de los nmeros */ if (num_1 < num_2 && num_1 < num_3) { num_menor = num_1; printf("\n De los valores %d, %d, %d el menor num_1,num_2,num_3); printf("\t El valor: %d\n\n",num_menor); printf("Presione ENTER para finalizar..."); } else if (num_2 < num_1 && num_2 < num_3) { num_menor = num_2; printf("\n De los valores %d, %d, %d el menor es:\n\n",num_1,num_2,num_3); printf("\t El valor: %d\n\n",num_menor); printf("Presione ENTER para finalizar..."); } else if (num_3 < num_1 && num_3 < num_2) {

es:\n\n",

num_menor = num_3; printf("De los valores %d, %d, %d el menor es:\n\n",num_menor); printf("\t El valor: %d\n\n",num_menor); printf("Presiones ENTER para finalizar..."); } getchar(); }

Realice un programa que muestre en pantalla los nmeros que son pares, dentro del conjunto de los nmeros del 1 al 100. Hgalo con un ciclo FOR. Cdigo:
/*Programa para mostrar en pantalla los nmeros pares en el conjunto de nmeros del 1 al 100*/ /*Reinel Hdez*/ /*Programacin en C*/ #include <stdio.h> /*Para utilizar la funcin printf()*/

void main(void) { /*Declaramos una variable entera para el ciclo for que usaremos*/ int i; /*Mostramos en pantalla el siguiente encabezado*/ printf("Listado de los numeros pares en el econjunto de numeros del 1 al 100.\n\n"); /*Buscamos los pares con ayuda del ciclo For*/ for ( i = 0 ; i <= 100 ; i += 2 ) { /*Los mostramos en pantalla*/ printf("\t %d",i); } /*Solicitamos se presione una tecla para finalizar*/ printf("Presione una tecla para finalizar..."); /*Esperamos a que se preione cualquier tecla*/ getchar(); /*Funcin que recibe una tecla */ } Se me ocurrio hacer un programa para aprender ingles y creo que los tiros tambien van por ahi corrgeme: 1 llenar 1000 palabras 2 agruparlas por alguna relacion como emociones articulos y otros(para esto quisiera usar una matriz para acceder a ella mas facil aunque 2 matrices tambien creo q me van :s con punteros y eso ,s) 3 ejecucion: con un par de cases hacer un menu que me permita lanzar 20 palabras al azar(con sran o ran creo + time) con su significado y despues que me permita hacer un tipo de examen o test con esas mismas palabras desordenadas que cada acierto valga algo para ganar puntos y asi involucrar a los amigos y familiares

Me gust la idea de hacer un pequeo bosquejo de su idea porque precisamente se necesita usar el cdigo de mi ltimo post: Nmeros aleatorios sin repetir en C++. As que mi algoritmo es algo as:

1. Crear una matriz tipo string de N filas y 2 columnas, la primera columna son las palabras en ingls; la segunda, en espaol. 2. Pedir el nmero de palabras que el usuario quiera memorizar. 3. Obtener ese nmero de palabras aleatoriamente y mostrarlas. 4. Borrar las palabras y empezar a preguntar el significado de cada una. 5. Comparar la respuesta del usuario con la respuesta correcta. 6. Calcular su calificacin y mostrarla. El cdigo es este:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 #include<cstdlib> #include<ctime> #include<iostream> using namespace std; int nofw; #define N 8 // numero de pares de palabras en la matriz bool checkrep(int n, int num[]) { for(int i=0; i<nofw; i++) if(n == num[i]) return true; return false; } int main() { srand(time(NULL)); string ans, words[N][2] = {{"hi", "hola"}, {"house", "casa"}, {"water", "agua"}, {"roof", "techo"}, {"chair", "silla"}, {"loudspeaker", "bocina"}, {"screen", "pantalla"}, {"money", "dinero"}}; int n, correct=0, wrong=0; cout << "Numero de palabras?: "; cin >> nofw; // obtener 'nofw' palabras aleatoriamente de nuestra matriz int num[nofw]; for(int i=0; i<nofw; i++) { do n = rand() % N; while(checkrep(n, num)); num[i] = n; cout << words[n][0] << " -> " << words[n][1] << endl; } cin.get(); cin.get(); system("cls"); // preguntar el significado de cada palabra for(int i=0; i<nofw; i++) { cout << words[num[i]][0] << " = "; cin >> ans; if(ans == words[num[i]][1]) { correct++; cout << ">> Bien :)\n\n"; } else {

50 51 52 53 54 55 }

wrong++; cout << ">> Mal :(\n\n"; } } cout << "Tuviste un " << (float)correct / (float)nofw * 100 << "% de respuestas correctas."; cin.get(); cin.get();

Ya hemos visto cmo obtener nmero aleatorios en c++, pero tarde o temprano surge la necesidad de generar nmeros aleatorios pero sin que se repitan. Podra ser til para varias cosas como por ejemplo, ordenar de manera aleatoria elementos de una lista, formas grupos aleatorios, barajear cartas, etc. As que en algoritmo quedara algo as: 1. Crear una matriz y dejarla vaca. 2. Obtener un nmero aleatorio. 3. Checar si ese nmero existe en la matriz. Si si, regresar al paso 2. Si no, guardar el numero en la matriz. As que el programa es este:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include<cstdlib> #include<ctime> #include<iostream> using namespace std; bool checkrep(int n, int num[]) { for(int i=0; i<10; i++) if(n == num[i]) return true; return false; } int main() { srand(time(NULL)); int n, num[10]; for(int i=0; i<10; i++) { do n = 1 + rand() % 10; while(checkrep(n, num)); num[i] = n; cout << num[i] << " "; } }

Primero que nada, <cstdlib> es la forma correcta de incluir la librera <stdlib.h> en c++, igual con <ctime>. Como ven, usamos una funcin bool (que retorna falso o verdadero) para checar si el nmero aleatorio ya existe en nuestra matriz. Si cualquiera de los nmeros es igual a nuestro nmero aleatorio n, la funcin retorna true, por lo que el ciclo do-while desde el cual llamamos la funcin tendr que repetirse una vez ms y hasta que la funcin retorne false.

Cuando se logra salir del ciclo do-while, guardamos nuestra n en el lugar de la matriz que corresponda, lo mostramos en pantalla y continumos con la siguiente posicin de la matriz. Otra cosa. Para decirnos si un nmero est repetido en la matriz, la funcin checkrep() necesita obviamente dos cosas, el nmero aleatorio y la matriz. As que le envimos como parmetros nuestra matriz y nuestro nmero aleatorio. 7 Comentarios

Devolver cambio en C++


Guardado en: Programas el 10 de febrero del 2011 Etiquetas: if else, while Han pagado algn recibo en una mquina automtica y se han preguntado cmo ser el programa que les devuelve el cambio? Lo ms seguro es que no, pero pues resulta que el profesor de Miguel ngel le encarg un programa que simulara eso, en sus propias palabras: Supn que una maquina de monedas de 10,5,2,1 y 50 centavos. Debes escribir un programa que decida cuantas monedas dar de cambio, dando prioridad las de mayor denominacin. Debe recibir como entrada la cantidad de dar a cambio. Ejemplo: para $40.50 ser 4 de 10, 0 de 5, 0 de 2, 0 de 1 y 1 de 50 centavos.

As que el primer problema se presenta con la entrada cmo hacer que el usuario introduzca slo cantidades como $50 o $43.50 y no cantidades como $23.45 o $9.70? Lo que se me ocurri es pedir la cantidad en una variable float (cambio), en otra variable convertir esa cantidad a tipo int (cambioint). En ese proceso se perder la parte decimal del nmero, as que si la resta cambio cambioint es igual a 0 o igual a 0.50, la cantidad que introdujo el usuario es correcta. La otra parte es sencilla, slo se necesita ver si la variable cambio es mayor que 10. Si si, se le restan 10 a la variable y se aumenta un contador. Luego se hace lo mismo con las dems monedas. Pero bueno, el programa es este:
1 #include<iostream>

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

using namespace std; int main() { float cambio; int cambioint, m10=0, m5=0, m2=0, m1=0, m50c=0; do { cout << "Cambio?: "; cin >> cambio; cambioint = (int)cambio; }while((cambio - cambioint) != 0 && (cambio - cambioint) != 0.50); while(cambio != 0) { if(cambio>=10) { m10++; cambio-=10; } else if(cambio>=5) { m5++; cambio-=5; } else if(cambio>=2) { m2++; cambio-=2; } else if(cambio>=1) { m1++; cambio-=1; } else if(cambio>=0.5) { m50c++; cambio-=0.5; } } cout << m10 << ", " << m5 << ", " << m2 << ", " << m1 << ", " << m50c; }

Solo le faltara darle un poco de formato a la salida, pero pues ya es cuestin de gustos y ya saben, cualquier duda aqu estn los comentarios abajo. 18 Comentarios

Simular una Progress Bar en C++


Guardado en: Programas el 13 de enero del 2011 Etiquetas: time Una progress bar es la barrita, generalmente verde, que aparece en sistemas operativos e infinidad de programas cuando algo se est cargando. Hoy no nos vamos a meter en asuntos de cargar archivos o algo, nicamente vamos a ver el principio bsico sobre el que operan estas barras.

Nuestro programa slo pedir una cantidad en segundos, que ser el tiempo que durar en llenarse nuestra progress bar. A la ventana donde se ejecutan nuestros programas le caben 80 caracteres de largo, as que vamos a decir que nuestra progress bar tiene una resolucin de 80. El nico problema es saber cunto durar cada unidad de esas 80 para que en total se acumule el tiempo indicado.

La funcin delay() o Sleep()


Si en su IDE pueden usar la librera conio.h, entonces van a usar la funcin delay(). Si no, vamos a tener que agregar la librera windows.h y usar la funcin Sleep() (as con mayscula). Ambas funciones hacen exactamente lo mismo: paran el programa durante una cierta cantidad de tiempo en milisegundos. Por ejemplo:
cout << "Hola" << endl; Sleep(2000); cout << "Hace dos segundos te salud!";

Se muestra 'Hola', se pausa 2 segundos y se muestra 'Hace dos segundos te salud!' Para los que usan conio.h, sera algo as:
printf("Hola\n"); delay(2000); printf("Hace dos segundos te salud!");

Ahora s, para saber cuanto tiempo durar cada unidad de nuestra barra tenemos primero que convertir los segundos a milisegundos (s*1000), luego dividirlos entre la resolucin de la barra (s*1000/80). As que nuestro programa queda as:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<windows.h> #include<iostream> using namespace std; int main() { int s; cout << "Segundos?: "; cin >> s; for(int i=0; i<=79; i++) cout << "_"; for(int i=0; i<=79; i++) { cout << "="; Sleep(s*1000/80); } }

El primer ciclo es solo por esttica, para ver hasta donde va a llenar la barra. El segundo es el que imprime la barra con sus respectivas pausas. 11 Comentarios

Saber si es palndromo o no, de forma recursiva 2da parte

Guardado en: Programas el 10 de enero del 2011 Etiquetas: cadenas, string.h Pues la idea que se me ocurri en el otro post result ser ms sencilla de lo que me imagin, y ahora s la funcin recursiva se ve mucho mejor, ya es mucho ms que un ciclo disfrazado. Coment extensivamente el cdigo, as que aqu est:
#include<string.h> #include<iostream> using namespace std; int len, n=0; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 string chk4palindrosity(string thestr) { if(thestr[0] == thestr[thestr.length() - 1]) // comparar primer caracter con ultimo { n++; if(n == len / 2) // si el numero de veces que la comparacin ha sido cierta es... return "Si es palindromo!"; // igual a la mitad de los caracters, es palindromo thestr.erase(0, 1); // borramos primer caracter thestr.erase(thestr.length() - 1, 1); // borramos ultimo return chk4palindrosity(thestr); // llamamos a la funcin con el string recortado } else // si una de las comparaciones no es cierta, no es palndromo return "No es palindromo"; } int main() { char inputf[50]={0}, input[50], *parte; cout<<"Introduce un palindromo: "; cin.getline(input, '\n'); parte = strtok(input, " "); // strcat(inputf, parte); // while((parte = strtok(NULL, " ")) != NULL) // strcat(inputf, parte); // quitar espacios del array string thestr(inputf); // convertir array en string para facilitar operaciones len = thestr.length(); // obtener longuitud del string if(len == 1) cout << "Si es palindromo!"; else cout << chk4palindrosity(thestr); // llamar a la funcion e imprimir lo que retorne cin.get(); }

Lo que hace la funcin recursiva es comparar el primer caracter con el ltimo, si son iguales recortarlos y llamarse; si no, no es palndromo. Cualquier duda ya saben que los comentarios estn abiertos.

1 Comentario

Saber si es palndromo o no, de forma recursiva


Guardado en: Programas el 8 de enero del 2011 Etiquetas: cadenas, string.h Hace unos das me pidieron por correo un programa que nos dijera si un string es palndromo o no, pero usando una funcin recursiva. Me pareci interesante aunque raro que pidieran hacerlo de forma recursiva. Tal vez recuerden que ya haba publicado aqu una forma de saber si un string es palndromo o no, el cual he descubierto (ahora que hice este otro) que no es muy eficiente. Bueno pues el cdigo es este:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include<string.h> #include<iostream> using namespace std; char cadenaf[50]={0}; int len, n=0; string chk4palindrosity(int c) { if(cadenaf[c] == cadenaf[len-1-c]) { n++; if(n == len/2) return "Si es palindromo!"; return chk4palindrosity(c+1); } else return "No es palindromo"; } int main() { char cadena[50],*parte; cout<<"Introduce un palindromo: "; cin.getline(cadena,50,'\n'); parte = strtok(cadena," "); // strcat(cadenaf,parte); // while((parte = strtok(NULL," ")) != NULL) // strcat(cadenaf,parte); // quitar espacios del string len = strlen(cadenaf); cout << chk4palindrosity(0); cin.get(); }

La verdad es que es la funcin es recursiva de puro milagro. Lo que hice fue transformar el ciclo que checaba que los caracteres fueran iguales en una funcin en la que se aumenta una variable cada vez que se llama a s misma. El cdigo ahora es ms eficiente por dos simples razones:

1. Se detiene y da el resultado a la primera comparacin de caracteres que no sean iguales. Si el primer y el ltimo caracter no son iguales, no es palndromo y ya no sigue analizando los dems. 2. Slo checa la mitad de los caracteres. Si la mitad de los caracteres corresponden a la configuracin de un palndromo, ya no hay porqu seguir analizando la otra mitad. Tal vez una mejor manera de hacerlo sera con una funcin que recibiera el string a analizar, comparar el primer y ltimo caracter: si no, no es; si si, eliminar el primer y ltimo caracter y volver a llamar a la funcin. Esto hasta que el numero de comparaciones ciertas sea igual a la mitad de la longitud inicial del string. Alguien se anima a hacerlo? 3 Comentarios

Imprimir determinados nmeros primos


Guardado en: Programas el 19 de diciembre del 2010 Etiquetas: primos Sobre nmeros primos he escrito bastantes programas y me he dado cuenta de que los profesores de programacin tienen cierta fijacin con ellos. Pero bueno, el programa de hoy imprime la cantidad de nmeros primos que el usuario quiera y es interesante porque es un buen ejemplo de la utilidad de los ciclos infinitos, que ya habamos visto antes. Ok, el cdigo es este:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include<iostream> using namespace std; int main() { int cnt,i=0,ii,res,nc=0,np=0; cout << "Introduce la cantidad de numeros: "; cin >> cnt; for(;;) { i++; for(ii=1;ii<=i;ii++) { res=i%ii; if(res==0) nc=nc+1; } if(nc==2) { cout << i << " "; np++; } nc=0; if(np==cnt) break; } }

Si tienen problemas para entender cmo obtuvimos los nmeros primos, deberan darle una revisada a estos posts: Saber si es primo o no y Primos en un rango. Lo que hicimos es que todo el programa estuviera dentro de un ciclo infinito que se detendr cuando nuestra variable que se aumenta cada vez que obtenemos un numero primo np sea igual a la variable con la cantidad deseada de nmeros primos cnt. Pero recuerden que donde podemos usar un ciclo infinito, queda mucho mejor un ciclo while:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include<iostream> using namespace std; int main() { int cnt,i=0,ii,res,nc=0,np=0; cout << "Introduce la cantidad de numeros: "; cin >> cnt; while(np!=cnt) { i++; for(ii=1;ii<=i;ii++) { res=i%ii; if(res==0) nc=nc+1; } if(nc==2) { cout << i << " "; np++; } nc=0; } }

nicamente ponemos la palabra while en lugar de for, copiamos la condicin que condicionaba (s, lo se) el break y la pegamos dentro de los parntesis del while pero de manera contraria (de == a != o de < a >). 9 Comentarios

Clasificar nmeros en C++


Guardado en: Programas el 26 de noviembre del 2010 Etiquetas: matrices, rand Por medio de un comentario Gaby me pidi un programa que: Genere 10 nmeros aleatorios del 0 al 50 y los clasifique en 2 rangos: menores que 10 y mayores que 10 pero menores que 20. A nosotros nos sirve para practicar el uso de nmeros random, de matrices y de ciclos. El programa es este:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

#include<stdlib.h> #include<ctime> #include<iostream> using namespace std; int main() { int numrnd[10], cls1[10]={0}, cls2[10]={0}, ct1=0, ct2=0; srand(time(NULL)); cout << "Los numeros: "; for(int i=0; i<=9; i++) { numrnd[i] = rand() % 51; cout << numrnd[i] << ", "; if(numrnd[i] < 10) { cls1[ct1] = numrnd[i]; ct1++; } if(numrnd[i] > 10 && numrnd[i] < 20) { cls2[ct2] = numrnd[i]; ct2++; } } cout << endl << "Menores que 10: "; for(int i=0; i<ct1; i++) cout << cls1[i] << ", "; cout << endl << "Mayores que 10 y menores que 20: "; for(int i=0; i<ct2; i++) cout << cls2[i] << ", "; }

Para dudas respecto a la generacin de nmeros random est este post: Obtener nmeros aleatorios en C++. Para dudas respecto a la declaracin y uso de matrices est este otro post: Ah nunca he escrito sobre matrices!, voy a tener que ponerme a ello. Para dudas con respecto a los ciclos for, s tengo un post: Ciclos for en C++.

Tenemos 3 matrices, en la primera guardamos nuestros 10 nmeros aleatorios, en la segunda los nmeros que queden en la primera clasificacin (menores que 10) y en la tercera los que queden en la segunda clasificacin. As que lo que hacemos es ir traspasando los valores de la primera matriz a las otras dos segn su valor. Para esto tenemos que llevar en el mismo ciclo 3 cuentas diferentes, una para cada matriz. Las variable ct1 y ct2 se encargan de ir cambiando los ndices de las matrices cls1 y cls2 respectivamente, por lo que slo deben aumentar cuando en realidad sea necesario. Despus lo nico necesario es mostrar nuestras dos matrices. Como cada matriz puede tener un nmero de elementos diferentes cada vez, tenemos que hacer dos ciclos, uno para cada matriz con ct1 o ct2 como lmite. Como ltima aclaracin slo digo que, tal como dice el problema, el nmero 10 nunca va a quedar clasificado en algn rango porque el 10 no es menor que 1o y tampoco es mayor que 10.

11 Comentarios

Saber si un nmero es primo o no


Guardado en: Programas el 13 de noviembre del 2009 Etiquetas: primos, while Anteriormente vimos como imprimir los nmeros primos en un rango determinado por el usuario, ahora la idea es pedirle al usuario un nmero y decirle si es primo o no es primo.
#include<iostream> using namespace std; int main() { int num,c,res,nc=0; cout<<"Introduce un nmero: "; cin>>num; for(c=1;c<=num;c++) { res=num%c; if(res==0) nc++; if(nc>2) break; } if(nc==2) cout<<"Es primo"; else cout<<"No es primo"; cin.get();cin.get(); }

En s, es lo mismo que el anterior. Para darle mas presentacin podemos hacer que no se salga a la primera, sino hasta que se introduzca, por ejemplo, un cero. Esto se hace con un ciclo do while.
#include<iostream> using namespace std; int main() { int num=1,c,res,nc=0,rep=0; while(num!=0) { cout<<"Introduce un nmero: "; if(rep==1) { cout<<" --> Para salir oprime cero: "; } rep++; cin>>num; for(c=1;c<=num;c++) { res=num%c; if(res==0) nc++; }

if(nc==2) cout<<"Es primo\n\n"; else cout<<"No es primo\n\n"; nc=0; } }

Alguien sabe porqu la variable num empieza en 1 en este caso? 36 Comentarios

Nmeros primos en un rango


Guardado en: Programas el 12 de noviembre del 2009 Etiquetas: ciclos, for, primos La idea es imprimir en pantalla los nmeros primos entre 1 y un dato introducido por el usuario. Creo que es la primera vez que usamos un ciclo dentro de otro ciclo en este blog. Pero en realidad es muy sencillo:
#include<iostream> using namespace std; int main() { int n=0,c=0,c2=0,res=0,nc=0; cout<<"Introduce el limite de numeros: "; cin>>n; for(c=1;c<=n;c++) { for(c2=1;c2<=c;c2++) { res=c%c2; if(res==0) { nc=nc+1; } } if(nc==2) { cout<<" "<<c; } nc=0; } }

El operador % obtiene el residuo de la divisin de dos nmeros. Por ejemplo:


10 % 3 = 1

Porque el 3 cabe 3 veces en el 10 y le sobra 1.

Explicacin:
1. El primer ciclo lleva la cuenta de los nmeros de 1 a n de uno por uno en la variable c 2. Luego se inicia un ciclo de 1 a c en la variable c2. Este ciclo se har n veces porque est dentro de el primer ciclo

3. En la variable res se guarda el residuo de dividir c / c2 4. Si el residuo es cero, se incremento al contador nc 5. Si al terminarse el segundo ciclo el contador nc es igual a 2, significa que el nmero es primo y lo imprime Recuerden que los nmeros primos son los que nicamente se dividen (sin dejar residuo) entre 1 y entre si mismos 63 Comentarios

Encontrar el nmero mayor de un conjunto


Guardado en: Programas el 27 de octubre del 2009 Etiquetas: ciclos, iostream, sencillos Es en realidad muy simple, se trata de pedir un conjunto de nmeros e ir comparandalos para obtener el mayor. Un problema es que no sabemos la cantidad de nmeros que se van a pedir, por lo que al principio del programa tenemos que pedir este valor.
#include<iostream> using namespace std; int main() { int n_num=0,num=0,elmayor=0,c=0; cout <<"Introduce el numero de numeros: "; cin >> n_num; for(c=1;c<=n_num;c++) { cout <<"\nIntroduce el numero " << c <<": "; cin >> num; if(num>elmayor) { elmayor=num; } } cout <<"\n\tEl numero mayor fue el " << elmayor; cin.get();cin.get(); return 0; }

Una parte importante es la estructura del ciclo:


for(c=1;c<=n_num;c++)

Significa que el ciclo va de 1 hasta lo-que-nos-diga-el-usuario. Otra cosa es que usamos iostream y no usamos conio.h. 14 Comentarios

Programa: Porcentaje de Hombres y Mujeres


Guardado en: Programas el 8 de octubre del 2009 Etiquetas: ciclos, goto, if else, porcentajes, sencillos

Supongamos que nos preguntan qu porcentaje de hombres y qu porcentaje de mujeres hay un saln de clases. Lo primero que tenemos que hacer es preguntar el total de personas que hay, luego hacer un ciclo que en cada iteracin pregunte el sexo de cada alumno. En base a esos datos se calculan los porcentajes. El programa en c++ sera as:
#include<stdio.h> #include<conio.h> int main() { float total=0,ciclo=0,conta_h=0,conta_m=0,porc_h=0,porc_m=0; char mof; gotoxy(5,5);printf("Cuantos alumnos hay en este grupo?: ");scanf("%f",&total); for(ciclo=1;ciclo<=total;ciclo++) { clrscr(); PREG: gotoxy(10,6);printf("Sexo de alumno %.f? (M o F): ",ciclo);scanf("%c",&mof); if(mof=='m' || mof=='M') conta_h++; else if(mof=='f' || mof=='F') conta_m++; else goto PREG; } //Calculos porc_h=conta_h/total*100; porc_m=conta_m/total*100; // gotoxy(5,5);printf("El porcentaje de hombres es %.1f (%.f de %.f)",porc_h,conta_h,total); gotoxy(5,6);printf("El porcentaje de mujeres es %.1f (%.f de %.f)",porc_m,conta_m,total); getch(); }

3 Comentarios UNIDAD 2: C++ CONTROL DE PROGRAMA TEMA 7: CICLO FOR C++

Instrucciones para ciclos resuelven el problema de repetir todo el programa o cierta parte del programa mas de una vez. Este ciclo es uno de los mas usados para repetir una secuencia de instrucciones, sobre todo cuando se conoce la cantidad exacta de veces que se quiere que se ejecute una instruccin simple o compuesta. Su formato general es: for (inicializacin; condicin; incremento)

{ instruccin(es); }; ejemplo:

for(x=1;x10;x=x+1) { puts( MAMA ); };

En su forma simple la inicializacin es una instruccin de asignacin que carga la variable de control de ciclo con un valor inicial. La condicin es una expresin relacional que evala la variable de control de ciclo contra un valor final o de parada que determina cuando debe acabar el ciclo. El incremento define la manera en que la variable de control de ciclo debe cambiar cada vez que el computador repite un ciclo. Se deben separar esos 3 argumentos con punto y coma (;) EJEMPLO Codigo prog6.cpp
#include <stdio.h> #include <conio.h> #include <string.h> void main() { clrscr(); // declaracion variables int x; // instruccion for for(x=1;x<=10;x=x+1) { gotoxy(10, x+4); printf("%d MAMA",x); }; getchar(); }

corrida:

Casos Particulares del ciclo for; 1.- El ciclo comienza en uno y se incrementa de uno en uno este es el caso mas general. 2.- Pero el valor inicial puede se diferente de uno, ejemplo; for(x=5;x15;x=x+1){ etc.}; 3.- Incluso el valor inicial puede ser negativo, ejemplo; for (x = -3 ;x 8; x=x+1) { etc.}; 4.- Los incrementos tambin pueden ser diferentes al de uno en uno, ej.; for (x=1; x 20; x=x+3){ etc. }; 5.- Incluso pueden ser decrementos, solo que en este caso, recordar; 5.1.-el valor inicial de la variable debe ser mayor que el valor final. 5.2.-cambiar el sentido de la condicin. ejemplo;

for (x= 50 ; x >= 10; x= x-4 ) { etctera };

6.- Solo para los casos de incrementos y decrementos de una en una UNIDAD substituir en el for:

el x = x + 1 por x++ el x = x - 1 por x TAREAS PROGRAMAS EN C++ 1.- CONSTRUIR UN PROGRAMA QUE DESPLIEGUE LOS NMEROS DEL 20 AL 30. 2.- DESPLEGAR LOS ENTEROS ENTRE 50 Y 30 ACOMPAADOS DE SU POTENCIA CUADRADA Y RAZ CUBICA RESPECTIVA (revisar el tema de operadores aritmeticos). 3.- DESPLEGAR LOS MLTIPLOS DE 5, ENTRE 10 Y 50, ACOMPAADOS DE SU FACTORIAL Y LOGARITMO RESPECTIVO (revisar el tema de operadores aritmeticos tambien). 4.- DESPLEGAR LA TABLA DE MULTIPLICAR QUE EL USUARIO INDIQUE. 5.- EVALUAR LA FUNCION Y=5X^2 + 3X + 8 CUANDO X> -310 (RANGO DE -3 HASTA 10)
SUMA LOS PRIMEROS 200 NUMEROS. #include <iostream.h>#include <conio.h>int main (){clrscr();int sumaserie = 0; for (int i = 1; i <= 200; i++)sumaserie += i;cout << "\n\nLa suma de los primeros 200 numeros es : " << sumaserie;getch();return 0;}

1- Impresion de asteriscos
#include <iostream> using namespace std; void impresion(int); int main(){ int p,n=0; impresion(1); for(p=1;p<=12;p++){ n+=2; impresion(n); }

system("pause" return 0; }

void impresion(int x){ cout<<endl; for(int i=1;i<=x;i++) cout<<"*"; }

2- Numeros primos
#include <iostream.h> bool primo(int); int main(){ int x; cin>>x; if(primo(x)) cout<<"n Es primo"; else cout<<"n No es primo"; return 0; } bool primo(int x){ if(x==1||x==2) return true; else{ int i; for(i=2;i<x;i++){ if(x%i==0) return false; } } return true; }

otro de numeros primos


#include<iostream> using namespace std; int main(){ unsigned int numero, n, p, num_columnas;

cout <<"Introduzca hasta que numero quiere llegar "; cin >> numero; cout <<'n' << endl; num_columnas = 0 ; n=2; while (n <= numero){ for ( p = 2; n % p!= 0; p++); if ( p == n){ cout << n <<", "; if(++num_columnas % 10 == 0)// controla el numero de elementos en una fila cout <<"n" << endl; } n++; } cout <<"Fin de Programa. n" << endl;

system ("pause" return 0; }

3- Numero factorial
#include <iostream.h> using namespace std; unsigned int factorial(int); int permutacion(int); int combinacion(int); int main(){ int x,y; cin>>x; y=factorial(x); cout<<"n El factorial de "<<x<<" es: "<<y;

return 0; } unsigned int factorial(int n){ if(n==0||n==1) return 1; return n*factorial(n-1); } int permutacion(int n, int r){ return factorial(n)/factorial(n-1); } int combinacion(int n, int r){ return factorial(n)/(factorial(n-1)*factorial(r)); }

4- Fibonacci
#include <iostream> using namespace std; long fibonacci (long); int main(){ long result; int i; for (i=0; i<=10; i++)

result = fibonacci(i); cout << i << endl;

system ("pause" return 0; }

long fibonacci(long i){ if(i == 0 || i == 1) //caso base return i; else return fibonacci(i-1)+fibonacci(i-2); }

5- Productos punto y cruz


#include <iostream> using namespace std; void menu(); void productoCruz(int [], int [], int,int); void productoPunto(int [], int [], int, int); int main(){ int op, m, n, V1[100], V2[100], i; menu(); cin >> op; switch (op){ case 1: cout << "Ingrece tamao del primer vector: "; cin >> n; cout << "Ingrece componentes del vector: n"; for (i=0; i<n; i++){ cout << "A[" << i << "]= "; cin >> V1; } cout << "nnIngrece tamao del segundo vector: "; cin >> m; cout << "Ingrece componentes del vector: n"; for (i=0; i<m; i++){ cout << "A[" << i << "]= "; cin >> V2; } productoCruz(V1, V2, n, m); break;

case 2: int i, V1[100], V2[100], n, m; cout << "Ingrece tamao del primer vector: "; cin >> n; cout << "Ingrece componentes del vector: n"; for (i=0; i<n; i++){ cout << "A[" << i << "]= "; cin >> V1; } cout << "nnIngrece tamao del segundo vector: "; cin >> m; cout << "Ingrece componentes del vector: n"; for (i=0; i<m; i++){ cout << "A[" << i << "]= "; cin >> V2; } productoPunto(V1, V2, n, m); break; default: cout << ""; break; }

system ("pause" return 0; }

//**************************************************************************** **** void menu(){ cout << " MENUnn1 producto cruz.n2 producto punto.nn"; } //**************************************************************************** **** void productoCruz(int a[], int b[], int c, int d){ int prod, p, p1; if (c==d){ if (c==3){ prod = a[1]*b[2]-b[1]*a[2]; p = a[2]*b[0]-b[2]*a[0]; p1 = a[0]*b[1]-b[1]*a[1]; cout << "i " << prod << ",j " << p << ",k " << p1 << endl; } else cout << "Solo vectores en R3n"; } else cout << "Solo vectores igualesn"; } //**************************************************************************** *** void productoPunto(int a[], int b[], int c, int d){ int punto = 0, k; if (c==d){ for (k=0; k<c; k++) punto += a[k]*b[k]; cout << punto; } else cout << "Tienen que ser vectores igualesn"; }

6- Calificaciones de escuela
#include <iostream> #include <iomanip> using namespace std; #define N 10 float promedio(int [],int);

int mayor(int [],int); int menor(int [],int); int main(){ int X[N][N], F,C,i,j,suma=0,promedios[N], mayores[N], menores[N]; cout<<"Ingrese numero de estudiantes:"; cin>>F; cout<<"n Ingrese numero de calificaciones: "; cin>>C; for(i=0;i<F;i++){ cout<<"n Notas: "; for(j=0;j<C;j++) cin>>X[j]; } cout<<"n Datos por Estudiante: "; for(i=0;i<F;i++){ promedios=promedio(X,C); mayores=mayor(X,C); menores=menor(X,C); cout<<"n Promedio: "<<promedio(X,C) <<"n Menor calificacion: "<<menor(X,C) <<"n Mayor calificacion: "<<mayor(X,C); } cout<<"nn DATOS GLOBALES: "; cout<<"n Promedio global: "<<promedio( promedios, F); cout<<"n Mayor global: "<<mayor( mayores, F ); cout<<"n Menor global: "<<menor( menores, F);

cout<<"n";

system ("pause" return 0; }

float promedio(int A[],int n){ int suma=0; for(int i=0;i<n;i++) suma+=A;

return (float) suma/n; } int mayor(int A[],int n){ int temp=A[0]; for(int i=1;i<n;i++){ if(temp<A) temp=A; } return temp; } int menor(int A[],int n){ int temp=A[0]; for(int i=1;i<n;i++){ if(temp>A) temp=A; } return temp; }

7- La tortuga y la liebre Este es uno de los que mas me costo hacer, espero que le

sirva a alguien
#include "iostream"

#include "ctime" using namespace std; int main (){ int t=1, l=1, i, *tp = &t, *lp = &l; srand(time(0)); cout << "BANG!!!nY ARRANCAN!!!n"; if(*lp==*tp){ cout << "nnLa tortuga esta en la posicion "<< *tp; cout << "nLa liebre esta en la posicion "<< *lp; cout << "nOUCH!!!"; } while (t < 70 && l < 70){ i = 1 + rand() % 10; if(i<=5){ *tp += 3; cout << "nnLa tortuga esta en la posicion "<< *tp; if (i<=2) cout << "nLa liebre esta en la posicion "<< *lp; if (i>2 && i <=4){ *lp += 9; cout << "nLa liebre esta en la posicion "<< *lp; } if (i==5){ *lp -= 12; if(*lp < 1) *lp = 1; cout << "nLa liebre esta en la posicion "<< *lp; }//**** if(*lp==*tp) cout << "nOUCH!!!"; } if (i>5 && i<=8){ *lp+=1; cout << "nnLa liebre esta en la posicion "<< *lp; if (i<=7){ *tp -= 6; if(*tp < 1) *tp = 1; cout << "nLa tortuga esta en la posicion "<< *tp; }//****** if(*lp==*tp)

cout << "nOUCH!!!"; } if (i >= 8 && i <= 10){ *tp+=1; cout << "nnLa tortuga esta en la posicion "<< *tp; if (i>=9){ *lp -=2; if(*lp < 1) *lp = 1; cout << "nLa liebre esta en la posicion "<< *lp; } if(*lp==*tp) cout << "nOUCH!!!"; } } if (t>=70) cout << "nnLA TORTUGA GANA!!! BRABO!!!n"; if (l>=70) cout << "nnLa liebre gana. Ni hablar.n"; if (l>=70 && t>=70) cout << "nnEs un empaten";

system("pause" return 0; }

You might also like