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 - nicolas_cof

#111
cbug, fijate en esta parte...

int mcd( int a, int b )
{
  if ( b == 0 )
    return a;
  else
    mcd( b, a % b ); //mcd( a, a % b );
}


Yo usaria la funcion abs() dentro de la funcion mcd(), debido a lo que habia aclarado do-while, que a mi se me habia pasado por alto. Ya que haciendo esto uno se olvida de tener que aplicarle el valor absoluto a los numeros antes de pasarlos a la funcion mcd().

Otro punto que se podria ver, seria usar la funcion abs() de la libreria stdlib.h

#include <stdio.h>
#include <stdlib.h>

int mcd( int a, int b )
{
    a = abs( a );
    b = abs( b );
    return ( b == 0 ) ? a : mcd( b, a % b );
}

int main( void )
{
    int x, y;
    scanf( "%d %d", &x, &y );
    printf( "mcd: %d\n", mcd( x, y ) );
    return 0;
}


Salu10.
#112
Cita de: do-while... lo correcto seria trabajar con el valor absoluto de los datos introducidos ...

Tenes razon do-while, esto ultimo se me habia pasado por alto! Gracias ;)

Salu10.
#113
Cita de: czealt en  2 Julio 2010, 00:35 AM
Muy bien (señido a la definición, como debe de ser).

Saludos.

function mcd(a, b)
   while b ≠ 0
      t := b
      b := a mod b
      a := t
   return a


Salu10.
#114
Programación C/C++ / Re: Es correcto?
2 Julio 2010, 00:53 AM
jairogon, seria de esta forma

fact = fact * n;
if ( fact == 0 ) return 1.0;
else return n;


Lo anterior esta mal declarado ya que == tiene mas precedencia que *= por lo tanto tendria que quedar asi...

(fact *= n) == 0 ? 1.0 : n;

Salu10.
#115
Cita de: czealt en  2 Julio 2010, 00:00 AM
OK nicolas_cof si 0 es un valor válido como entrada para el programa que calcula el M.C.D de dos números dime cuanto es el MCD de 0 y 1?

1

Salu10.
#116
Foro Libre / Re: Mejor guitarrista
2 Julio 2010, 00:05 AM
Aca sumo algunos a mi lista...

Antoine Dufour - 30 Minutes in London
[youtube=425,350]http://www.youtube.com/watch?v=oCJL3Buw0l0[/youtube]

Andy McKee - Art of Motion
[youtube=425,350]http://www.youtube.com/watch?v=GRAiUzrmkMk[/youtube]

Jimmy Page - I Can't Quit You  
[youtube=425,350]http://www.youtube.com/watch?v=wfcW7kibU-U[/youtube]

Y aca dejo algunos de mi patria ( Argentina )

Pappo - Juntos a la par
[youtube=425,350]http://www.youtube.com/watch?v=8ylGmIBSK78[/youtube]

Claudio Marciello - De pie ("el tano" guitarrista de Almafuerte)
[youtube=425,350]http://www.youtube.com/watch?v=xrIPF23pJzA[/youtube]

Cita de: Eternal Idol en  1 Julio 2010, 13:44 PMPD. Giardino no existe  :P

;-)

Salu10.
#117
Cita de: el-brujo en  1 Julio 2010, 10:21 AM
se deja como antes:

.NET subforo de Programación General.

Muchas gracias el-brujo ;)

Salu10.
#118
Cita de: czealt en  1 Julio 2010, 21:28 PM
Citar
... si te fijas bien en el codigo no seria lo mismo hacer un while que un do-while ya que con este ultimo estarias ejecutando 3 sentencias totalmente innecesarias.

Bueno, eso solo sucederia cuando uno de los números dados como entrada es cero lo cual no es una entrada válida para el programa. Si se ha de verificar por la entrada válida, ¿porqué no tambien verificar por la entrada de números negativos?

czealt, porque pensas que se tendria que verificar por la entrada de numeros negativos?

CitarEl máximo común divisor (abreviado mcd o m.c.d.) de dos o más números enteros es el mayor número que los divide sin dejar resto. - Wikipedia

Que se ingrese como entrada el valor 0, no quiere decir que este sea una entrada invalida para el programa, ya que por definicion seria correcto. Yo lo que te queria decir con respecto del do-while es que ejecutarias 3 sentencias totalmente innecesarias que no aportan ningun valor al objetivo del programa. Por eso es mejor usar el while y evitar ejecutar ese bloque de codigo.

Salu10.
#119
Cita de: czealt en  1 Julio 2010, 19:31 PM
nicolas_cof, tienes razón en que la variable resultado no es necesaria. En lo del bucle (en tu version del  programa)..., da lo mismo si es while o do..while. Como  quitaste la linea resultado=dividendo/divisor; ya no existe la posibilidad de una división por 0.

czealt, si te fijas bien en el codigo no seria lo mismo hacer un while que un do-while ya que con este ultimo estarias ejecutando 3 sentencias totalmente innecesarias.

Salu10.
#120
Cita de: sirdarckcat en  1 Julio 2010, 08:01 AM
no creo que se cambie de nuevo

En fin, es una lastima porque se presta para muchas confusiones, por lo expuesto anteriormente tanto por mi como por lo que puso Littlehorse.

Igual gracias a todos por contestar! ;)

Salu10.