• Miércoles 6 de Noviembre de 2024, 02:27

Autor Tema:  A Ver Si Me Podeis Ayudar Con Este....  (Leído 1598 veces)

Ne0ne

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
A Ver Si Me Podeis Ayudar Con Este....
« en: Lunes 12 de Diciembre de 2005, 01:51 »
0
Pues este lo ke trata es.... tu le metes un numero y debes comprobar si es multiplo de 11 pero.. para ello lo tengo ke hacer con el algoritmo ke es.. sumar los digitos pares del numero introducido , sumar los digitos impares del numero y luego hacer la diferencia entre los pares y los impares...... y si da 0 es multiplo de 11 y sino pues no..... yo lo ke he hecho ha sido esto pero no tira... a ver si me ayudais.
Código: Text
  1.  
  2.      int par, impar, x, num, k;
  3.      cout << "Introduzca numero" << endl;
  4.      cin >> num;
  5.      par=0;
  6.      impar=0;
  7.              for(x=1; x<=num; x ++)
  8.              {
  9.                      if(x%2)
  10.                      impar += x;
  11.                      else
  12.                      par += x;
  13.             k = abs(par-impar);
  14.             }
  15.             if (k==0)
  16.             {
  17.                      cout << "es multiplo de 11" << endl;
  18.             }
  19.              else cout << "no es multiplo de 11" << endl;
  20.  
  21.  
  22.  

Gracias por adelantado :D

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: A Ver Si Me Podeis Ayudar Con Este....
« Respuesta #1 en: Lunes 12 de Diciembre de 2005, 12:19 »
0
Así a simple vista:

Código: Text
  1.  
  2. for(x=1; x<=num; x ++)
  3.  
  4.  

estás iterando desde x=1 hasta el número introducido por teclado, vamos, que del 11, que debiera dar múltiplo, estás recorriendo todos los números desde el 1 hasta el 11.

Prueba esto:

Convierte el número num a cadena, itera desde x=0 hasta longitud ((cadena) num) - 1 y te vas quedando con cada caracter, que tendrás que transformar otra vez a número y operar con el...

Espero que te sirva..

Suerte


Silverfox

Ne0ne

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: A Ver Si Me Podeis Ayudar Con Este....
« Respuesta #2 en: Lunes 12 de Diciembre de 2005, 13:25 »
0
y eso como se hace? .... eske soi nuevo. y no he dado muxo......

Ne0ne

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
Re: A Ver Si Me Podeis Ayudar Con Este....
« Respuesta #3 en: Martes 13 de Diciembre de 2005, 21:59 »
0
alguno me podria ayudar?? porfavor...

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: A Ver Si Me Podeis Ayudar Con Este....
« Respuesta #4 en: Miércoles 14 de Diciembre de 2005, 10:22 »
0
Como veo que usas cout, asumo que estás programando en C++, ahora no tengo el compilador delante, espero recordar a la primera y de memoria...  <_<

Para convertir a cadena, puedes usar la función itoa, que es de C, no recuerdo si la clase string tiene métodos para esa conversión, pero con esta te valdrá.

defines una variable de tipo string ( #include <string> ) y le pasas la cadena en la que conviertes a tu número:

Código: Text
  1. int num = //el número que recoges
  2.  
  3. string numero = itoa (num);
  4.  

Ahora tienes que iterar desde 0 (el primer caracter de las cadenas es el 0 y no el 1), durante toda la longitud de la cadena, o sea:

Código: Text
  1. for (int contador= 0; i &#60; numero.length(); i++) { [...] }
  2.  

Con la operación substr (¿o era substring?) de string puedes quedarte con un trozo de cadena, que será el número que quieres y lo tienes que convertir a entero otra vez para ver si es par o impar y sumarlo a la variable que sea:

Para conseguir la subcadena usas:
Código: Text
  1. /*esto fuera del bucle, empezaremos por el dígito más a la izquierda*/
  2. string subcadena
  3.  
  4. /*toma un caracter de la cadena, empezando desde el caracter iesimo*/
  5. subcadena = numero.substr(i,1);
  6.  


Para volver a convertir en int usas atoi así:
Código: Text
  1.  
  2. /*atoi espera un char*, puedes usar el tipo string si conviertes su contenido en char*, eso se consigue con c_str() */
  3. int digito = atoi (subcadena.c_str());
  4.  

y con dígito ya puedes trabajar sin problemas.

Espero que te sirva

Suerte


Silverfox