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