Autor
|
Tema: Practiquemos C++ (juntos) (Leído 17,896 veces)
|
micky123
Desconectado
Mensajes: 32
|
Hola a todos bueno estuve leyendo el post en los cuales participaban Leyer y Amerikano, muy bueno por cierto, la idea de practicar en conjunto resolviendo ejercicios que suben el nivel gradualmente me agrada, partiendo de su idea; espero que participenos.
Como hicieron con java, quisiera proponer resolver ejercicios en C++,partiendo de ejercicios simples para todos aquellos principiantes (me incluyo).
si les parece... Comienzo proponiendo un ejercicio basico:
1. Realizar un programa en el cual me permita introducir un numero y el programa debera de desplegar un mensaje si dicho numero es capicua o no... Ejemlpo: x=12321 mensaje==> Es capicua
|
|
|
En línea
|
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
Aquí esta el código #include<stdio.h> int main(int argc, char **argv) { int numero,len,capicua,I; char *cadena; printf("Ingrese un numero: "); cadena = (char*)calloc(18,sizeof(char)); capicua = 1; I = 0; if((len % 2) == 0) { while(I <= (len/2)) { printf("comparando %c , %c\n",cadena [I ],cadena [len - I -1]); if(cadena[I] != cadena[len - I -1]) { printf("Saliendo del ciclo\n"); capicua = 0; break; } I++; } } else { while(I < ((len-1)/2)) { printf("comparando %c , %c\n",cadena [I ],cadena [len - I -1]); if(cadena[I] != cadena[len - I -1]){ printf("Saliendo del ciclo\n"); capicua = 0; break; } I++; } } if(capicua) printf("Numero %d es capicua\n",numero ); else printf("Numero %d NO es capicua\n",numero ); }
Lo he compilado con el gcc de devcpp Saludos
|
|
« Última modificación: 16 Febrero 2010, 03:31 am por Anon »
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Colaborador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
#include <iostream> #include <string> using namespace std; int main() { string num; cin>>num; string num2 = string(num.rbegin(), num.rend()); if(num==num2) cout<<""<<"Es capicua"<<endl; else cout<<""<<"No es capicua"<<endl; cin.get(); cin.get(); }
|
|
« Última modificación: 16 Febrero 2010, 03:35 am por Littlehorse »
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
Littlehorse tu código es mucho mas sencillo que el mio y mas facil de entender, sin embargo es posible ingresar también letras, ese seria "Textos capicua" xDD Edit Agrego codigo mas reducido, con la idea de Littlehorse #include<stdio.h> int main(int argc, char **argv) { int numero,len,capicua,I; char *cadena1,*cadena2; printf("Ingrese un numero: "); cadena1 = (char*)calloc(18,sizeof(char)); cadena2 = (char*)calloc(len ,sizeof(char)); I = 0; while(I < len) { cadena2[I] = cadena1[len -1 -I]; I++; } if(strcmp(cadena1 ,cadena2 ) == 0) printf("Numero %d es capicua\n",numero ); else printf("Numero %d NO es capicua\n",numero ); }
Saludos
|
|
« Última modificación: 16 Febrero 2010, 03:43 am por Anon »
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Colaborador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
Y bueno texto capicua sera entonces jaja. Ahora en serio, validar el input son solo 2 lineas mas y prefiero dejarselo a micky123. La lógica seguirá siendo la misma. No obstante, en tu código también se puede ingresar texto: Ingrese un numero: AAAADDDD Numero 2 es capicua Para validarlo podes usar ctype o chequear los valores ascii. Igualmente en C la única forma de validar un input correctamente es leyendo el texto y parseando. Y para calloc tenes que incluir stdlib.h. Un saludo!
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
AlbertoBSD
Programador y
Moderador Global
Desconectado
Mensajes: 3.705
🏴 Libertad!!!!!
|
Si se del stdlib.h sin embargo ahorita estoy en winsucks y si me lo permite con el gcc del devcpp Ahora con tu comentario de texto en mi input, es cierto pasan cosas raras, de hecho:
scanf es el que impide la entrada de texto con el formato "%d" Aun así no procesa el texto como parte de la entrada Saludos
edit ¿El que contesta el ejercicio propone otro? Saludos
|
|
« Última modificación: 16 Febrero 2010, 03:59 am por Anon »
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Colaborador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
Claro pero a lo que iba es que el programa funciona igual. Es decir, no hay avisos que el input es invalido. Ese 2 puede ser un 2 o cualquier otro valor basura. No me gusta scanf, pero igualmente devuelve valores para comprobar si el input fue correcto. No es de lo mejor pero tampoco esta mal si validas de esa forma. Yo también estoy con devcpp ahora. Un saludo PD: Tambien falta string.h para strxxx, aunque es verdad, en este entorno ni siquiera se queja .
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
micky123
Desconectado
Mensajes: 32
|
Hola a todos y gracias por continuar con el tema. bueno mi respuesta al ejercicio q plantee seria: #include<stdio.h> #include<conio.h> void main() { int x,d,aux,i=1,nn=0; scanf("%d",&x); aux=x; while(x>0) { d=x%10; nn=(nn*i)+d; i=i*10; x=x/10; } if(nn==aux) printf("Es capicua"); else printf("No es capicua"); } bueno Anon gracias por responder primero, y bueno te tocaria proponer otro ejercicio(con la misma simplicidad je je) gracias por continuar.
|
|
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Colaborador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
Antes que nada decidir si es C, C++ o ambos . Porque el código que pusiste vos (Y Anon tambien) es C, y en el hilo el titulo dice C++. Decidí vos que fuiste el que inicio el hilo. Y por cierto, muy buena iniciativa. Siempre viene bien ponerse a hacer ejercicios. Un saludo!
|
|
« Última modificación: 16 Febrero 2010, 04:17 am por Littlehorse »
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
micky123
Desconectado
Mensajes: 32
|
bueno gracias por continuar... espero no ser cambiante pero agradeceria por que continuemos con C... por que aun soy principiante y quiero practicar un poco... propongan un nuevo ejercicio je je Salu2
|
|
|
En línea
|
|
|
|
|
|