Foros ZackYFileS

Foros ZackYFileS (http://foros.zackyfiles.com/index.php)
-   PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc (http://foros.zackyfiles.com/forumdisplay.php?f=370)
-   -   Ejercicio C++, averiguar si un numero es multiplo de 11 (http://foros.zackyfiles.com/showthread.php?t=381316)

Snake12 11/12/2005 23:57

Ejercicio C++, averiguar si un numero es multiplo de 11
 
Hola de nuevo amigos, para variar vuelvo a estar liado, y de que manera, en C++. Esta vez el ejercicio dice así:

[QUOTE]Diseña un programa C++ que determine si un número introducido por teclado es o no múltiplo de once mediante el siguiente algoritmo: Un numero es múltiplo de 11 cuando la suma de sus dígitos pares menos la suma de sus dígitos impares es a su vez múltiplo de 11 o es 0.[/QUOTE]

Yo he hecho lo siguiente, pero no sé cómo hacer el cuerpo del algoritmo, es decir, que me sume los dígitos pares (que he llamado "par") y me sume los digitos impares (llamados "imp"):

[QUOTE]int main()
{
// Zona de Declaración de Variables del Programa principal
unsigned int num, par, imp, res;

cout << "Introduzca un numero y descubra si es multiplo de once: ";
cin >> num;
cout << '\n' << endl;

if ( num >= 11 )
{
for ( num;


res = par - imp;

if ( res % 11 == 0 || res == 0 )

cout << "Su numero es multiplo de once." << '\n' << endl;

else

cout << "Su numero no es multiplo de once." << '\n' << endl;

}

else

cout << "Su numero no es multiplo de once." << '\n' << endl;



system("Pause"); // Hacer una pausa
return 0; // Valor de retorno al S.O.
}[/QUOTE]

Bueno amigos, espero consejos, no pido la resolución del problema, simplemente que me orieten, o un ejemplo...l

Gracias por vuestro tiempo. Ta luego!!!

rober_pirata 12/12/2005 00:09

supongo que para sacar los digitos que tiene el nmero deberias hacer divisiones en base 10 y quedarte con el resto, para sacar unidades, decenas, centenas etc.
para comprobar si es par/impar basta con hacer el mod 2, si el resto es 0, par lo sumas por un lado, y si el resto no es 0, es impar y lo sumas por el otro.

una vez tengas las sumas haces un mod 11 y si el resto es 0, es divisible y si no no.

Lo qu eno entiendo es porque liar tanto un programa que se resolveria haciendo mod 11 del numero recibido y listo.

Coke 12/12/2005 03:43

saludos...

yo lo haria asi....no lo copies, intenta hacerlo tu y mejoralo, lo he hecho en un ratito y seguro que se puede mejorar bastante.

Código PHP:

int main()
{
    
unsigned int numparimpresultado;
    
int paim;
    
    
cout << "Introduzca un numero y descubra si es multiplo de once: ";
    
cin >> num;
    
cout << '\n' << endl;
    
    if(
num >= 11) {
        
int hj[20];
        
int i 0;
        while(
num != 0) {
            
int fg num 10;
            
num num 10;
            
hj[i] = fg;
            
i++;
        }
        
im i;
        
imp 0;
        while( 
im 0) {
            
int gh hj[im 1];
            
imp imp gh;
            
im im 2;
        }
        
pa i;
        
par 0;
        while( 
pa 1) {
            
int gh hj[pa 2];
            
par par gh;
            
pa pa 2;
        }
        
resultado imp par;
    }    
    if(
resultado == 11 || resultado == 0) {
        
cout <<"El numero es multiplo de 11\n" <<endl;
    }
    else {
        
cout <<"El numero no es multiplo de 11\n" <<endl;
    }
    
system("pause");
    return 
0;


Coke.

Coke 12/12/2005 22:33

saludos...

otra forma de hallarlo que se me ocurre, es esta...con menos lineas de codigo.

Código PHP:

int main()
{
    
unsigned int numparimpresultadofg;
    
bool v;
    
    
cout << "Introduzca un numero y descubra si es multiplo de once: ";
    
cin >> num;
    
cout << '\n' << endl;
    
    if(
num >= 11) {
        
false;
        
imp 0;
        
par 0;
        while(
num != 0) {
            
fg num 10;
            
num num 10;
            if(!
v) {
                
imp imp fg;
                
true;
            }else {
                
par par fg;
                
false;
            }
        }
        
resultado imp par;
    }    
    if(
resultado == 11 || resultado == 0) {
        
cout <<"El numero es multiplo de 11\n" <<endl;
    }
    else {
        
cout <<"El numero no es multiplo de 11\n" <<endl;
    }
    
system("pause");
    return 
0;


Coke.

Snake12 16/12/2005 12:33

Muchas gracias Coke por tu inestimable ayuda, gracias. La primera manera en que lo has hecho no la comprendo bien, creo que utilizas un array, no?, pero es que los acabo de dar ayer, y como que no los domino mucho...

La segunda manera si la entiendo perfectamente y es bien sencillo el ejercicio.

No sé, o yo soy mu torpe y esto me cuesta, o es normal para los que empezamos en C++...pero hay ejercicios que no veas...

Bueno, muchas gracias de nuevo, y hasta otra...;)

Coke 17/12/2005 01:49

si, es un array, he supuesto que todavia no habias dado vectores....los vectores se utilizan cuando no se sabe el espacio que vas a necesitar...cuando declaras un array tienes que poner el tamaño del mismo, ejemplo : int array[20];...mientras que en un vector no, ejemplo : std::vector<int> array;

aqui tienes el ejemplo con un vector...

[PHP]
#include<vector>
using namespace std;
int main()
{
unsigned int num, par, imp, resultado;
int pa, im;

cout << "Introduzca un numero y descubra si es multiplo de once: ";
cin >> num;
cout << '\n' << endl;

if(num >= 11) {
vector<int> hj;
int i = 0;
while(num != 0) {
int fg = num % 10;
num = num / 10;
hj.push_back(fg);
i++;
}
im = i;
imp = 0;
while( im > 0) {
int gh = hj[im - 1];
imp = imp + gh;
im = im - 2;
}
pa = i;
par = 0;
while( pa > 1) {
int gh = hj[pa - 2];
par = par + gh;
pa = pa - 2;
}
resultado = imp - par;
}
if(resultado == 11 || resultado == 0) {
cout <<"El numero es multiplo de 11\n" <<endl;
}
else {
cout <<"El numero no es multiplo de 11\n" <<endl;
}
system("pause");
return 0;
}

[/PHP]

Coke.


La franja horaria es GMT +2. Ahora son las 11:23.

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
ZackYFileS - Foros de Debate