Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[Ayuda]Comparar dos numeros binarios y encontrar el mayor

Estas en el tema de [Ayuda]Comparar dos numeros binarios y encontrar el mayor en el foro de C/C++ en Foros del Web. Código: #include<iostream> #include<conio.h> #include<stdlib.h> #include<stdio.h> #include<string.h> #include<ctype.h> using namespace std; int main() { char bin1[10]; char* b1=0; char bin2[10]; char* b2=0; int a,b; cout<<"Escriba el ...
  #1 (permalink)  
Antiguo 04/02/2012, 18:43
 
Fecha de Ingreso: enero-2005
Mensajes: 95
Antigüedad: 19 años, 10 meses
Puntos: 0
[Ayuda]Comparar dos numeros binarios y encontrar el mayor

Código:
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>

using namespace std;

int main()
{

    char bin1[10];
    char* b1=0;
    char bin2[10];
    char* b2=0;
    int a,b;
    cout<<"Escriba el primer numero: ";
    gets(bin1);
    cout<<"Escriba el segundo numero: ";
    gets(bin2);
    a=strlen(bin1);
    b=strlen(bin2);
    //Comparar longitud    de las cadenas
    if(a>b)
    {
        cout<<"El numero mayor es: "<<bin1;
    }
    else if(a<b)
    {
        cout<<"El numero mayor es: "<<bin2;
    }
    //si ambas cadenas tienen el mismo tamaño.aqui se determina el mayor
    else
    {
    b1 = bin1;
    b2 = bin2;
	while (*b1 != '\0' or *b1>*b2 or *b2<*b1)
	{

    b1++;
	b2++;
	}
    if (*b1 > *b2)
		{
		cout<<"El mayor es : "<<bin1;
		}
		else if (*b1 < *b2)
		{
		 cout<<"El mayor es : "<<bin2;
		}
		else
		{cout<<"Son iguales";}
    }


}
Estoy tratando de crear un algoritmo para comparar dos numeros binarios y determine cual de ellos es el mayor, he he estado leyendo pero aun asi no lo consigo :shock:,se que al codigo le falta bastantes mejoras pero la idea general del algoritmo es la siguiente.

-Si los dos numeros ingresados tiene diferente logitud de digitos.ej 1111 y 111 el mayor sera aquel que tenga mayor cantidad de digitos binarios(por eso utlizo strlen para contar la cantidad de caracteres de ambas cadenas).aun que claro si ingreso 0000111 dara por mayor a 111

-sii tengo dos numeros con igual cantida de digitos binarios ej 101 y 110 tendria que comparar digito a digito del mas significativo al menos significativo hasta que llegue al fin de la cadena y donde un caracter sea mayor que el otro alli se detenga la comparacion,para el caso seria hasta la segunda comparacion donde 1>0,por lo tanto el mayor seria 110. y alli el problema,aun no tengo bien claro los conceptos de estructuras de datos,esta parte solo la copie de por alli e internet
Código:
    if (*b1 > *b2)
		{
		cout<<"El mayor es : "<<bin1;
		}
		else if (*b1 < *b2)
		{
		 cout<<"El mayor es : "<<bin2;
		}
		else
parece que va recorriendo caracter a caracter de cada cadena,pero al final siempre me tira que ambas cadenas son iguales.me podria alguien orientar sobre que tengo que ir a leer para comparar caracteres de una cadena que sea numerica. se que hay una funcion que hace todo strcmp(o algo asi) pero no es mi idea hacerlo de esa forma puesto que no aprenderia mayor cosa
__________________
customsmf
Seo,tutoriales,decargas
  #2 (permalink)  
Antiguo 05/02/2012, 05:22
 
Fecha de Ingreso: enero-2012
Ubicación: En españa dije...
Mensajes: 28
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: [Ayuda]Comparar dos numeros binarios y encontrar el mayor

A ver es muy sencillo. Primero estás agregando la librería "String" y después utilizas un array de char, no tiene sentido.

Ya que agregas la librería "String" utiliza strings y utiliza la conversión de datos.

Código C++:
Ver original
  1. #include<iostream>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. #include<stdio.h>
  5. #include<string.h>
  6. #include<ctype.h>
  7.  
  8. using namespace std;
  9.  
  10. int main(){
  11.     string bin1;
  12.     string bin2;
  13.     int b1, b2;
  14.     cout<<"Escriba el primer numero: ";
  15.     getline(cin>>ws, bin1);
  16.     cout<<"Escriba el segundo numero: ";
  17.     getline(cin>>ws, bin2);
  18.     b1=atoi(bin1.c_str());
  19.     b2=atoi(bin2.c_str());
  20.  
  21.     if(b1>b2){
  22.         cout<<"El mayor es: "<<bin1;
  23.     }
  24.     if(b1<b2){
  25.         cout<<"El mayor es: "<<bin2;
  26.     }
  27.     if(b1==b2){
  28.         cout<<"Son igual de grandes.0";
  29.     }
  30.     getch();
  31.     return 0;
  32. }
  #3 (permalink)  
Antiguo 05/02/2012, 12:26
 
Fecha de Ingreso: enero-2005
Mensajes: 95
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: [Ayuda]Comparar dos numeros binarios y encontrar el mayor

Gracias mil,me pondre a estudiar el codigo que ha hecho,hace su cometido pero quiero entenderlo ,soy neofito en C++ y programacion.

solo uan pregunta si quisera recorrer caracter a caracter de la cadena este codigo estaria bien
Código:
while (*b1 != '\0' or *b1>*b2 or *b2<*b1)
	{

    b1++;
	b2++;
la verdad solo lo copie y de es parte no estoy muy seguro como es que trabaja.
Muchas gracias por dedicar parte de tu tiempo a solventar mi problema
__________________
customsmf
Seo,tutoriales,decargas
  #4 (permalink)  
Antiguo 06/02/2012, 09:07
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 10 meses
Puntos: 10
Respuesta: [Ayuda]Comparar dos numeros binarios y encontrar el mayor

osea que si por ejemplo pongo

bin1 e introduzco : 0000000001
y en bin2: 01110

tu algoritmo daria como mayor al bin1? cuando en realidad bin2 es mayor en este caso.. no has tomado en cuenta eso ?

Etiquetas: encontrar, funcion, mayor, numeros, string, struct, binario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:16.