elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con bucles if y while.[C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con bucles if y while.[C]  (Leído 2,253 veces)
telecocabreado21

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Problema con bucles if y while.[C]
« en: 5 Febrero 2016, 23:13 pm »

Soy nuevo en esto de programar asi que es posible que sea una estupidez, pero no la veo. Asi que si sabeis cual es el problema por favor decidmelo.
El ejercicio es el siguiente:
tengo que escribir un programa que llame a una funcion MCD que realice el maximo comun divisor, el codigo que he escrito es el siguiente:

#include <stdio.h>
#include <stdlib.h>
int MCD(Numero1,Numero2)
{
    int PosDivi=1,MaxCD=0,PosDivj;
    while(PosDivi<=Numero1)
    {
        if((Numero1%PosDivi)==0)
        {
            PosDivj=1;
            while(PosDivj<=Numero2)
            {
                if(((Numero2%PosDivj)==0)&&(PosDivi==PosDivj))
                {
                    MaxCD=PosDivi;
                }
                PosDivj++;
                printf("a");
            }
            printf("b");
        }
        PosDivi++;
    }
    return MaxCD;
}

int main()
{
    int Divisor1, Divisor2;
    printf("introduce los divisores\n");
    scanf("%d,%d",&Divisor1,&Divisor2);
    printf("MCD=%d",MCD(Divisor1,Divisor2));
    return 0;
}

Intento que compare cada uno de los divisores de un numero con todos los divisores del otro, los 'printf' con a y b son para ver si el programa pasaba por los bucles y con ellos he descubierto que no lee el bucle while en el que se calculan los divisores de 'Numero2' asi que supongo que el problema estara ahi.
Un saludo y gracias de antemano ;D ;D

PD: En el build log me aparece el siguente mensaje:

-------------- Run: Debug in d (compiler: GNU GCC Compiler)---------------

Checking for existence: C:\Users\PEDRO\Desktop\d\bin\Debug\d.exe
Executing: "C:\Program Files\CodeBlocks/cb_console_runner.exe" "C:\Users\PEDRO\Desktop\d\bin\Debug\d.exe"  (in C:\Users\PEDRO\Desktop\d\.)
Process terminated with status 0 (0 minute(s), 7 second(s))


« Última modificación: 6 Febrero 2016, 11:51 am por telecocabreado21 » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema con bucles if y while.[C]
« Respuesta #1 en: 5 Febrero 2016, 23:35 pm »

Los incrementos sin asignación:
Código
  1. PosDivj++;
  2. PosDivi++;
  3.  

El compilador te debe haber avisado de que
Código:
c.c:16:24: warning: operation on ‘PosDivj’ may be undefined [-Wsequence-point]
                 PosDivj=PosDivj++;

c.c:19:16: warning: operation on ‘PosDivi’ may be undefined [-Wsequence-point]
         PosDivi=PosDivi++;

La función debe ser algo así
Código
  1. int MCD(Numero1, Numero2) {
  2.    int PosDivi = 1;
  3.    int PosDivj;
  4.    int MaxCD = 0;
  5.  
  6.    while(PosDivi<=Numero1) {
  7.        if((Numero1 % PosDivi) == 0) {
  8.            PosDivj = 1;
  9.            while(PosDivj <= Numero2) {
  10.                if(((Numero2 % PosDivj) == 0) && (PosDivi == PosDivj)) {
  11.                    MaxCD = PosDivi;
  12.                }
  13.                PosDivj++;
  14.            }
  15.        }
  16.        PosDivi++;
  17.    }
  18.    return MaxCD;
  19. }


En línea

telecocabreado21

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Problema con bucles if y while.[C]
« Respuesta #2 en: 5 Febrero 2016, 23:59 pm »

Muchas gracias!! Es cierto que me daba esos avisos, y se han solucionado quitando las asignaciones, tambien he cambiado la delaracion de PosDivj y la he puesto junto con las otras dos variables declaradas, pero todavia debe de quedar algun fallo mas porque sigue sin entrar en el bucle while, si sirve, te adjunto al tema los mensajes que me da ahora el compilador y cambio el tema para borrar los errores ya resueltos.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema con bucles if y while.[C]
« Respuesta #3 en: 6 Febrero 2016, 11:09 am »

En tu nueva versión hay un fallo de lógica que en la anterior estaba bien:
Código
  1. if(((Numero2 % PosDivj) == 0) && (PosDivi == PosDivj))

La versión que ahora tienes no cumple su trabajo:
Código
  1. if((Numero2%PosDivj)==0)
En línea

telecocabreado21

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Problema con bucles if y while.[C]
« Respuesta #4 en: 6 Febrero 2016, 11:48 am »

Es cierto estaba haciendo pruebas y se me olvido añadirlo de nuevo, aun asi cuando lo pongo sigue sin darme la solucion porque sigue sin entrar en el bucle aunque ya no me da       ningun mensaje de error el compilador, estoy ya desesperado :-( jajaja. Muchas gracias de nuevo MAFUS, como ya dije antes soy novato y todavia tengo muchos fallos de este estilo, corrijo de nuevo el codigo.
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema con bucles if y while.[C]
« Respuesta #5 en: 6 Febrero 2016, 12:41 pm »

Podrías probar de usar el algoritmo de Euclides que dice algo así:
1. Si el resto de la división entre el mayor y el menor es 0, el MCD es el menor.
2. Sino, realizar de nuevo la división entre el menor y el resto de la división anterior.
3. Repetir todo hasta que el punto 1 se cumpla.
En línea

DMG87

Desconectado Desconectado

Mensajes: 1



Ver Perfil
Re: Problema con bucles if y while.[C]
« Respuesta #6 en: 7 Febrero 2016, 01:08 am »

Código:
int mcd(int a, int b){
  int c;
  while (a != b){

    if (a > b)
      a = a - b;
    else
      b = b - a;

  }
  c = a;
  return c;
}
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con Bucles
Programación Visual Basic
Krnl64 2 1,485 Último mensaje 1 Junio 2006, 00:46 am
por Krnl64
Bucles.
Programación Visual Basic
mdg 4 2,598 Último mensaje 28 Agosto 2007, 15:54 pm
por elmaro
[Problema] Combinando Fopen con bucles for. ¿Donde están las variables?
PHP
‭lipman 4 2,215 Último mensaje 7 Agosto 2008, 01:09 am
por ‭lipman
Problema al imprimir 2 vectores, con 2 bucles « 1 2 »
Java
Dem0ny 10 8,601 Último mensaje 10 Marzo 2009, 17:10 pm
por Amerikano|Cls
Problema con bucles (Ayuda)
Programación C/C++
orakelove 1 1,578 Último mensaje 16 Octubre 2018, 00:38 am
por Beginner Web
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines