Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - rayk

#1
Vale, ya decia yo que habia algunas cosas que no entendia y es porque esta en c++.
Si hay alguien que me pueda decir como hacerlo en c, siguiendo mi codigo o con otro que llegue a la solucion de maner más fácil, se lo agradeceria. Saludos
#2
Estoy intentando entender el codigo que has puesto pero como he empezado hace poco hay algunas cosas que no comprendo.las cosas que no entiendo son:

void binary(int number)

¿qué es cout?

y el simbolo <<

te agradeceria si me lo explicases un poco. Saludos y gracias.

PD. se me olvido decir que esta en lenguaje c, no se si lo que has puesto es c o c++
#3
Hola quería saber si alguien me podría echar una mano con este código de programacón. El programa lo que hace es pasar un número en el sistema decimal al binario. Lo he hecho cogiendo los restos de las sucesivas divisiones entre dos y el último cociente, pero solo consigo mostrarlos por pantalla en el orden en el que voy consiguiendo los unos y ceros, por lo que el numero en binario esta al reves (leido de derecha a izquierda).

pongo lo que llevo de codigo:

#include <stdio.h>
#include <stdlib.h>
// Pasar un número de decimal a binario.
int main()
{
    int numero, c, r;
    scanf("%d", &numero);
    c=numero/2;
    while(c>1)
    {         
              r=numero%2;
              printf("%d", r);   
              c=numero/2;
              numero=c;         
    }
    printf("%d", c);
    system("pause");
}
#4
A ver si me explico mejor...

Con respecto al problema de que a tuviese que ser a mayor que b, realmente es indiferente. Voy a ponerte un ejemplo a ver si me explico mejor.

Supongamos que a=6 y b=4, entonces el ordenador hace el modulo a%b (6%4) y le da r=2, entonces como r es mayor que 0 entra en el while. Ahora a=b y b=r, entonces vuelve a hacer el modulo a%b (en este caso 4&2) le da un  r=0 por lo que no vuelve a entrar en el while y da el valor b como mcd en este caso 2.

Ahora bien si en vez de introducirlos en ese orden, los cambiamos a=4 y b=6 , el ordenadorhace el modulo de a%b (4%6) lo que le da un r=4, por tanto entra dentro del while. Ahora a=b y b=r, entonces vuelve a hacer el modulo a%b (en este caso 6&4) que resulta ser la situcion inicial de cuando los metes en orden.

Es decir que es indiferente meter primero el mayo y luego el menor o al contrario.
espero que haya quedado claro ajaja.
#5
Vale, y ¿el return -1? que funcion tiene, supongo que retroceder no, de modo que introduzcas las dos variables de nuevo.

otra cosa, ¿ es imprescindible poner el return 0; al final?

saludos

Editado: Me he dado cuenta de que no es necesario poner la condición de que el primero sea mayor que el segundo. Y esque de no ser asi tras haber entrado en el while los numeros se cambian entre si de manera que la segunda vez que entra en el while es como si los hubiesemos introducido en el orden correcto. No se si me he explicado bien.



#6
Muchas gracias, lo empece ayer y al final lo deje por que no encontraba el fallo.

una duda mas: poner system("pause"); equivale a lo que pusiste tu

getch();
return 0;

he visto que de esta forma te ahorras el <stdlib.h>

Saludos y gracias
#7
Hola me habia propuesto elaborar un programa que pudiese sacar el máximo común divisor de dos números. De momento lo estoy haciendo para que el primer numero que se introduzca sea mayor que el segundo(supongo que luego con un if pondre las dos opciones).Para ello he utilizado el conocido algoritmo de Euclides. Pero hay algo en el codigo que debo de hacer mal ya que no consigo que funcione.
incluyo el codigo para que me echeis una mano.

Saludos y gracias

#include <stdio.h>
#include <stdlib.h>
//Máximo común divisor de dos números mediante el algoritmo de Euclides.
int main()
{
    int a, b, c, r;
    printf("Maximo comun divisor de a y b\n\n");
    printf("a: ");
    scanf("%d", &a);
    printf("b: ");
    scanf("%d", &b);
    r=a%b;
    while(r>0)
    {
              fflush(stdin);
              a=b;
              b=r;
              r=a%b;
    }
    sprintf("el maximo comun divisor es %d", b);
    system("pause");
}