C/Visual C - Que falla?? C compiler: GNU GCC Compiler

 
Vista:
sin imagen de perfil

Que falla?? C compiler: GNU GCC Compiler

Publicado por Alberto (12 intervenciones) el 21/11/2017 21:02:30
Tengo que hacer una funcion en c que calcule el minimo comun multiplo de dos numeros. He probado esto, pero al meter primero 72 y luego 50 el valor que me devuelve es 72. ¿Es culpa del do while? Me suena que al hacer && solo evalua una condicion. Si es así, ¿como puedo apañarlo para que salga bien?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
 
int mcm (int a, int b){
 
    int restoA, restoB, i;
    i = a;
 
    do {
        restoA = i%a;
        restoB = i%b;
        i++;
    }
    while (restoA !=0 && restoB !=0);
 
    i--;
    return i;
}
 
int main(){
 
    int N1, N2, MCM;
 
    printf("\nIntroduzca el primer numero: ");
    scanf("%d", &N1);
    printf("\nIntroduzca el segundo numero: ");
    scanf("%d", &N2);
 
    MCM = mcm(N1, N2);
 
    printf ("\n\n%d\n\n",MCM);
 
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Que falla?? C compiler: GNU GCC Compiler

Publicado por Rigoberto (12 intervenciones) el 21/11/2017 22:37:21
Hay que hacerlo con el or (||) y no con el and (&&)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
 
int mcm (int a, int b){
 
    int restoA, restoB, i;
    i = a;
 
    do {
        restoA = i%a;
        restoB = i%b;
        i++;
    }
    while (restoA !=0 || restoB !=0);
 
    i--;
    return i;
}
 
int main(){
 
    int N1, N2, MCM;
 
    printf("\nIntroduzca el primer numero: ");
    scanf("%d", &N1);
    printf("\nIntroduzca el segundo numero: ");
    scanf("%d", &N2);
 
    MCM = mcm(N1, N2);
 
    printf ("\n\n%d\n\n",MCM);
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Que falla?? C compiler: GNU GCC Compiler

Publicado por Capitn Kirk (97 intervenciones) el 22/11/2017 13:14:47
Además, las condiciones deben ir entre paréntesis:

1
while ( (restoA != 0) || (restoB !=0) );
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar