Ver Mensaje Individual
  #19  
Antiguo 05-03-2015
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 11
aguml Va por buen camino
Y este para crear la piramide divertida pero de divisiones:
Código PHP:
#include <stdio.h>
#include <stdlib.h>

#define MAXCOUNTBUCLES 10

int ObtenerPosibles(doubleResultadoint posToShow);
void ObtenerNivelDosdoublepResultadodouble cocientedouble divisor);
int ObtenerNivelTres(doublepResultadodouble valor6);
int ObtenerNivelCuatro(doublepResultadodouble valor9);

int main()
{
   
double Resultado[10]={0.0};
   
int posibles=0posToShow;
   
int salir=0;
   
char caracter;

   do{
      
//Pido el valor del pico de la piramide
      
printf("Introduce el valor de la cima de la piramide: ");
      
scanf("%lf",&Resultado[0]);

      
posibles ObtenerPosibles(Resultado,-1);
      
printf("\nSe obtuvieron %i posibles soluciones para un contador maximo para los bucles de %i.\n"posiblesMAXCOUNTBUCLES);

      if(
posibles 0){
         
printf("Introduce el indice de la piramide que deseas mostrar ('0' para mostrar todas): ");
         
scanf("%i",&posToShow);

         
posibles ObtenerPosibles(Resultado,posToShow);
      }

      
//Pido que el usuario decida si repetir o salir
      
do{
         
fflush(stdin);
         
printf("\nPresiona 'S' para salir o 'R' para repetir: ");
         
caracter getchar();
      }while(
caracter != 'S' && caracter != 's' && caracter != 'R' && caracter != 'r');

      if(
caracter == 'S' || caracter == 's')
         
salir 1;
      else
         
system("CLS");
   }while(
salir != 1);

   return 
0;
}
//---------------------------------------------------------------------------

int ObtenerPosibles(doubleResultadoint posToShow)
{
   
int ixnretvalposibles=0;

   for(
i=1;i<MAXCOUNTBUCLES;i++)
   {
      
ObtenerNivelDos(ResultadoResultado[0], i);

      for(
x=1;x<MAXCOUNTBUCLES;x++)
      {
         
retval ObtenerNivelTres(Resultadox);

         if(
retval == 0){
            for(
n=1;n<MAXCOUNTBUCLES;n++)
            {
               
retval ObtenerNivelCuatro(Resultadon);

               if(
retval == 0){
                  
posibles++;
                  if(
posToShow == posibles || posToShow == 0){
                     
//Muestro la pirámide
                     
printf("\n---------------------------------\n");
                     
printf("         %.0lf\n"Resultado[0]);
                     
printf("      %.0lf     %.0lf\n"Resultado[1], Resultado[2]);
                     
printf("   %.0lf     %.0lf     %.0lf\n"Resultado[3], Resultado[4], Resultado[5]);
                     
printf("%.0lf     %.0lf     %.0lf     %.0lf\n"Resultado[6], Resultado[7], Resultado[8], Resultado[9]);
                  }
               }
            }
         }
      }
   }
   if(
posToShow != -1)
      
printf("\n---------------------------------\n");
   return 
posibles;
}
//---------------------------------------------------------------------------

void ObtenerNivelDosdoublepResultadodouble cocientedouble divisor)
{
   *(
pResultado+1) = cociente divisor;
   *(
pResultado+2) = divisor;
}
//---------------------------------------------------------------------------

int ObtenerNivelTres(doublepResultadodouble valor6)
{
   
int retval=-1;

   *(
pResultado+5) = valor6;
   *(
pResultado+4) = *(pResultado+5) * *(pResultado+2);
   if(*(
pResultado+4) <= *(pResultado+1)){
      *(
pResultado+3) = *(pResultado+1) * *(pResultado+4);
      
retval 0;
   }
   return 
retval;
}
//---------------------------------------------------------------------------

int ObtenerNivelCuatro(doublepResultadodouble valor9)
{
   
int retval=-1;

   *(
pResultado+9) = valor9;
   *(
pResultado+8) = *(pResultado+9) * *(pResultado+5);
   if(*(
pResultado+8) <= *(pResultado+4)){
      *(
pResultado+7) = *(pResultado+4) * *(pResultado+8);
      if(*(
pResultado+7) <= *(pResultado+3)){
         *(
pResultado+6) = *(pResultado+3) * *(pResultado+7);
         
retval 0;
      }
   }
   return 
retval;
}
//--------------------------------------------------------------------------- 
¿que os parece? La verdad es que no soy programador profesional, todo lo que se lo he aprendido por libre porque siempre me ha apasionado la programacion y para mi plantearme hacer un codigo es como para otros hacer un sudoku, me divierte y me entretiene y hay veces (muchas) que tengo que pedir ayuda porque me atasco .
Responder Con Cita