elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  Practiquemos C++ (juntos)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Practiquemos C++ (juntos)  (Leído 17,896 veces)
micky123

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Practiquemos C++ (juntos)
« en: 16 Febrero 2010, 02:46 am »

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 Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Practiquemos C++ (juntos)
« Respuesta #1 en: 16 Febrero 2010, 03:19 am »

Aquí esta el código

Código
  1. #include<stdio.h>
  2.  
  3. int main(int argc, char **argv) {
  4. int numero,len,capicua,I;
  5. char *cadena;
  6. printf("Ingrese un numero: ");
  7. scanf("%d",&numero);
  8. cadena = (char*)calloc(18,sizeof(char));
  9. snprintf(cadena,19,"%d",numero);
  10. len = strlen(cadena);
  11. capicua = 1;
  12. I = 0;
  13. if((len % 2) == 0) {
  14. while(I <= (len/2)) {
  15. printf("comparando %c , %c\n",cadena[I],cadena[len - I -1]);
  16. if(cadena[I] != cadena[len - I -1]) {
  17. printf("Saliendo del ciclo\n");
  18. capicua = 0;
  19. break;
  20. }
  21. I++;
  22. }
  23. }
  24. else {
  25. while(I < ((len-1)/2)) {
  26. printf("comparando %c , %c\n",cadena[I],cadena[len - I -1]);
  27. if(cadena[I] != cadena[len - I -1]){
  28. printf("Saliendo del ciclo\n");
  29. capicua = 0;
  30. break;
  31. }
  32. I++;
  33. }
  34. }
  35. if(capicua)
  36. printf("Numero %d es capicua\n",numero);
  37. else
  38. printf("Numero %d NO es capicua\n",numero);
  39.  
  40. }

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 Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Practiquemos C++ (juntos)
« Respuesta #2 en: 16 Febrero 2010, 03:32 am »

Código
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. string num;
  8. cin>>num;
  9.  
  10. string num2 = string(num.rbegin(), num.rend());
  11.  
  12. if(num==num2)
  13. cout<<""<<"Es capicua"<<endl;
  14. else
  15.   cout<<""<<"No es capicua"<<endl;
  16.  
  17. cin.get();
  18. cin.get();
  19. }
« Ú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 Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Practiquemos C++ (juntos)
« Respuesta #3 en: 16 Febrero 2010, 03:35 am »

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

Código
  1. #include<stdio.h>
  2.  
  3. int main(int argc, char **argv) {
  4. int numero,len,capicua,I;
  5. char *cadena1,*cadena2;
  6. printf("Ingrese un numero: ");
  7. scanf("%d",&numero);
  8. cadena1 = (char*)calloc(18,sizeof(char));
  9. snprintf(cadena1,19,"%d",numero);
  10. len = strlen(cadena1);
  11. cadena2 = (char*)calloc(len,sizeof(char));
  12. I = 0;
  13. while(I < len) {
  14. cadena2[I] = cadena1[len -1 -I];
  15. I++;
  16. }
  17. if(strcmp(cadena1,cadena2) == 0)
  18. printf("Numero %d es capicua\n",numero);
  19. else
  20. printf("Numero %d NO es capicua\n",numero);
  21.  
  22. }

Saludos
« Última modificación: 16 Febrero 2010, 03:43 am por Anon » En línea

Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Practiquemos C++ (juntos)
« Respuesta #4 en: 16 Febrero 2010, 03:46 am »

Y bueno texto capicua sera entonces  :xD 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:

Citar
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 Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Practiquemos C++ (juntos)
« Respuesta #5 en: 16 Febrero 2010, 03:53 am »

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:

Código
  1. scanf("%d",&numero);

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 Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Practiquemos C++ (juntos)
« Respuesta #6 en: 16 Febrero 2010, 04:00 am »

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  ;D.
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 Desconectado

Mensajes: 32


Ver Perfil
Re: Practiquemos C++ (juntos)
« Respuesta #7 en: 16 Febrero 2010, 04:12 am »

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 Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Practiquemos C++ (juntos)
« Respuesta #8 en: 16 Febrero 2010, 04:15 am »

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 Desconectado

Mensajes: 32


Ver Perfil
Re: Practiquemos C++ (juntos)
« Respuesta #9 en: 16 Febrero 2010, 04:21 am »

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

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
UTF-8 e ISO-8859-1 juntos?
Desarrollo Web
mokoMonster 3 6,074 Último mensaje 1 Marzo 2011, 21:48 pm
por mokoMonster
aprender juntos
Dudas Generales
robertofd1995 0 1,639 Último mensaje 27 Agosto 2013, 00:38 am
por robertofd1995
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines