Ayuda con mi programa de m.c.m

Iniciado por lainformaticaenc, 1 Junio 2017, 12:25 PM

0 Miembros y 1 Visitante están viendo este tema.

lainformaticaenc

Hola, necesito ayuda con mi programa. Estoy intentando hacer un programa en C que me calcule el minimo comun multiplo de los numeros que yo le diga. Introduzco de cuantos numeros quiero calcular el minimo comun multipo, y despues le digo cuales son. Despues me genera una matriz en donde cada fila representa los multiplos de uno de los numeros que yo he introducido hasta un cierto limite. El problema lo tengo despues, en ese supuesto "bucle" que me deberia encontrar en esa matriz, el m.c.m de todos los numeros que le introduzco. El m.c.m de dos numeros me lo calcula sin problemas, pero cuando pongo mas de dos, se produce un error en el programa y se cierra. Lo he intentado de varias formas pero no hay manera. A ver si ustedes me podrian ayudar. Les dejo el programa aqui debajo:


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <string.h>

void main()
{
   printf("  **  CALCULADORA DEL m.c.m  **   \n\n");
   int cantidad_numeros;
   int i, j, k=1;
   printf("  Aqui calcularemos el m.c.m de los numeros que digas hasta un maximo de 100 numeros.\n  Si lo solicita de mas de 100 numeros, el programa dara error y se cerrara.");
   printf("\n\n  Diga de cuantos numeros quiere hacer el m.c.m:  ");
   scanf(" %d", &cantidad_numeros);
   if(cantidad_numeros>100)
   {
       printf("\n\n  Ha pedido demasiados. Se lo avisamos. El programa se cierra.");
       return 0;
   }
   int vector_numeros[cantidad_numeros-1];
   printf("\n  Bien. Ahora diga de que numeros quiere que hagamos la operacion:  \n");
   for(i=0;i<cantidad_numeros;i++)
   {
       printf("  %dºnumero:  ", k);
       scanf(" %d", &j);
       vector_numeros[i] = j;
       k++;
   }
   int limit_multiplos = 250;
   int matriz_multiplos[cantidad_numeros][limit_multiplos];
   int x, y, z=1;
   for(i=0;i<cantidad_numeros;i++)
   {
        for(j=0;j<limit_multiplos;j++)
        {
            x = vector_numeros[i];
            y = x * z;
            z++;
            matriz_multiplos[i][j] = y;
        }
        z=1;
   }
   int h=0;
   int primer_multiplo = matriz_multiplos[0][h];
   for(i=1;i<cantidad_numeros;)
   {
       for(j=0;j<limit_multiplos;)
       {
           if(primer_multiplo == matriz_multiplos[i][j])
           {
               i++;
           }
           else if (primer_multiplo != matriz_multiplos[i][j])
           {
               j++;
           }
           if(j == limit_multiplos)
           {
               primer_multiplo = matriz_multiplos[0][h++];
               i=1;
               j=0;
           }
           if((h == limit_multiplos) && (j == limit_multiplos))
           {
               printf("\n\n  Lo siento, pero no hay ningun m.c.m al alcance del programa.");
               return 0;
           }
           if((i == cantidad_numeros) && (primer_multiplo == matriz_multiplos[i][j]))
           {
               printf("\n\n  El m.c.m del conjunto de tus numeros es %d", primer_multiplo);
               return 0;
           }
       }
   }
}


lainformaticaenc

Ya esta, ya he resuelto el problema. Muchas gracias igualmente