elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
27 Mayo 2012, 10:15  


Tema destacado: [Overclocking] Récords de overclock del foro

+  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 Ir Abajo Respuesta Imprimir
Autor Tema: Practiquemos C++ (juntos)  (Leído 4,501 veces)
micky123

Desconectado Desconectado

Mensajes: 32


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

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
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


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

Aquí esta el código

Código
#include<stdio.h>
 
int main(int argc, char **argv) {
int numero,len,capicua,I;
char *cadena;
printf("Ingrese un numero: ");
scanf("%d",&numero);
cadena = (char*)calloc(18,sizeof(char));
snprintf(cadena,19,"%d",numero);
len = strlen(cadena);
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 por Anon » En línea

Bien Super Divertido
@wifigdlmx
Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.710


Nie Dam Sie


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

Código
#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 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
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


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

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
#include<stdio.h>
 
int main(int argc, char **argv) {
int numero,len,capicua,I;
char *cadena1,*cadena2;
printf("Ingrese un numero: ");
scanf("%d",&numero);
cadena1 = (char*)calloc(18,sizeof(char));
snprintf(cadena1,19,"%d",numero);
len = strlen(cadena1);
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 por Anon » En línea

Bien Super Divertido
@wifigdlmx
Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.710


Nie Dam Sie


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

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
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


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

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
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 por Anon » En línea

Bien Super Divertido
@wifigdlmx
Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.710


Nie Dam Sie


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

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 »

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.710


Nie Dam Sie


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

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 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 »

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
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


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

LOL no me habia dado cuenta que el titulo dice "C++" xD, bueno acepto que me haga falta stdlib.h y string.h xD, en FreeBSD los tendría que poner a fuerza, pero "conio.h", micky123 no necesitas conio.h.

Ahora sobre ejercicios fáciles asi, pues no se me ocurren muchos pero ahi va uno:

Escribir un programa que lea un numero ROMANO en forma de cadena de caracteres y lo convierta en un numero Arábigo. Si ya esta repetido por ahi en las chinchetas propongan otro.

Saludos
 
 
« Última modificación: 16 Febrero 2010, 04:41 por Anon » En línea

Bien Super Divertido
@wifigdlmx
micky123

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Re: Practiquemos C++ (juntos)
« Respuesta #11 en: 16 Febrero 2010, 18:29 »

Holas gracias por continuar y bueno dando solucion al ultimo ejercicio mi forma de resolverlo solo convierte un numero romano comprendido entre 0 y 399, seria asía:

/*Escribir un programa que lea un numero ROMANO en forma de cadena de caracteres y lo convierta en un numero Arábigo realizado por Micky123*/

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

void main(void)
{
   char v[15];
   int i=1, cont=0,na=0,dim;
   clrscr();
   printf("Ingrse Numero Romano: ");
   fflush(stdin);
   fgets(v,15,stdin);

   //cputs(v);
   dim=strlen(v);
   //mayusculas
   for(i=0;i<dim;i++)
   v=toupper(v);

   for(i=0;i<dim;i++)
     if(v=='I')
       if(v[i+1]=='V')
       { na=na+4;i++;}
       else
    if(v[i+1]=='X')
    {  na=na+9;i++;}
    else
      if(v[i+1]=='L')
        {na=na+49;i++;}
      else
        if(v[i+1]=='C')
          {na=na+99;i++;}
        else
          na++;
     else
       if(v=='V')
    na=na+5;
       else
    if(v=='X')
      if(v[i+1]=='L')
        {na=na+40;i++;}
      else
        if(v[i+1]=='C')
         { na=na+90;i++;}
        else
          na=na+10;
    else
      if(v=='L')
        na=na+50;
      else
        if(v=='C')
          na=na+100;

   printf("\nEn arabigo es %d",na);

   getch();
}

gracias y bueno proponiendo otro ejercicio(mm generacion de digitos) seria:
generar los N numeros perfectos:

salu2
En línea
Littlehorse
All the world's a stage
Colaborador
***
Desconectado Desconectado

Mensajes: 2.710


Nie Dam Sie


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

micky123, usa las etiquetas Geshi para poner código, así es mas legible.

Citar
generar los N numeros perfectos:

Código
#include <stdio.h>
int isPnumber(int num);
 
int main()
{
   int num=0;
   int i=0;
 
   printf("Ingrese numero:  ");
   scanf("%d", &num);
 
for(i=1;i<=num;i++)
 if(isPnumber(i))
     printf("%d es perfecto\n",i);
 
getchar();
getchar();
}
 
int isPnumber(int num)
{
   int sum = 0 ;
   int i=0;
 
   for( i = 1; i<num; i++ )
       if( num%i==0)
           sum+=i;
   if( sum == num )
       return 1;
   else
       return 0;
}

Citar
Ingrese numero:  10000
6 es perfecto
28 es perfecto
496 es perfecto
8128 es perfecto


Nuevo ejercicio:

Leer tres variables enteras A1, M1, D1, que representan una fecha, y otras tres A2, M2 y D2, que representan otra fecha. Luego informar la cantidad de días entre las dos fechas (respetando la cantidad de días que tiene cada mes y teniendo en cuenta los años bisiestos).
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 #13 en: 17 Febrero 2010, 01:34 »

ok Littlehorse gracias por la sugerencia, es que como soy nuevo en el foro me voy acostumbrando :P...
salu2... resolviendo ejercicio.
Código
Probando geshi
 
En línea
micky123

Desconectado Desconectado

Mensajes: 32


Ver Perfil
Re: Practiquemos C++ (juntos)
« Respuesta #14 en: 17 Febrero 2010, 02:20 »

hola Litllehorse... bueno me costo mucho resolver este ejercicio je je... fue uno de mis ejercicios mas complejos, pero bueno al fin logre realizarlo... ahí va:

Código
#include <stdio.h>
#include <conio.h>
 
void main()
{ int d1,m1,a1,d2,m2,a2,d,db,ca;
 int mes[12],i;
 mes[1]=31;  mes[7]=31;
 mes[2]=28;  mes[8]=31;
 mes[3]=31;  mes[9]=30;
 mes[4]=30;  mes[10]=31;
 mes[5]=31;  mes[11]=30;
 mes[6]=30;  mes[12]=31;
 
 printf("Ingrese dia inicial d1= ");
 scanf("%d",&d1);
 printf("Ingrese mes inicial m1= ");
 scanf("%d",&m1);
 printf("Ingrese año inicial a1= ");
 scanf("%d",&a1);
 
 printf("Ingrese dia final d2= ");
 scanf("%d",&d2);
 printf("Ingrese mes final m2= ");
 scanf("%d",&m2);
 printf("Ingrese año final a2= ");
 scanf("%d",&a2);
 d=0;db=0;
 ca=a2-a1-1;
 d=d+ca*365;
 
 for(i=m1;i<=12;i++)
   d=d+mes[i];
 
 if(m2>1)
   for(i=1;i<=m2-1;i++)
     d=d+mes[i];
 d=d-d1+d2;
 if(d1%100==0)
 {  if(a1%400==0)
     if(m1<=2)
db=1;  
 }
 else
 {
   if(a1%4==0)
     if(m1<=2)
db=1;
 }
 for(i=a1+1;i<=a2;i++)
 { if(i%100==0)
   { if(i%400==0)
       db++;
   }
   else
   { if(i%4==0)
db++;
   }
 
 }
 if(a2%100==0)
 { if(a2%400==0)
   { if(m2>2)
     { db++; }
     else
     { if(m2==2 && d2==29)
 db++;
     }
   }
 }
 else
 { if(a2%4==0)
   { if(m2>2)
     { db++;}
     else
     { if(m2==2 && d2==29)
         db++;
     }
   }  
 }
 d=d+db;
 printf("Los dias entre la fecha 1 y la fecha 2 son= %d",d);
 getch();
}
 

gracias por continuar con la linea y gracias por hacerme romper la cabeza :xD je je
lo necesitaba...
salu2
En línea
Páginas: [1] 2 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 2,193 Último mensaje 1 Marzo 2011, 21:48
por mokoMonster
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines