ayuda

Iniciado por rafa011, 2 Marzo 2014, 23:23 PM

0 Miembros y 3 Visitantes están viendo este tema.

leosansan

Cita de: eferion en  3 Marzo 2014, 11:17 AM
Podías haberle puesto alguna macro de por medio... jejejeje

¡¡¡Lo tendré en cuenta para la próxima!!!.

¡¡¡¡ Saluditos! ..... !!!!



eferion

#11
una propuesta rápida... con algo más de tiempo se puede currar más


#include <stdio.h>

#define _ 369+35
#define M (100-(_
#define A *i)/24-i)*75
#define C +99*(_*i
#define R )/24+40*i==7869
#define O && (100-(_*i)/24-i>=1)

int main()
{
 int i=0;
 for(i=0;i<98;i++){
   if (M A C R O ){
     printf ("\nhombres=%d   mujeres=%d   ni\xA4os=%d\n",100-(_*i)/24-i,(_*i)/24,i);
   }
 }
 return 0;
}


segunda versión...


#include <stdio.h>

#define _ 369 H 35 X i
#define A U Y Y F Z X J X V W >=1 Z
#define B Y _ Z /24
#define C ;
#define D = 0 C
#define E } }
#define F 100 I B I G
#define G i
#define H +
#define I -
#define J 75 H 99
#define K printf
#define L B H 40 X G
#define M Z { K Y "\nhombres=%d   mujeres=%d   ni\xA4os=%d\n" ,F,B,G Z
#define N if
#define O for(
#define P int G
#define Q C G++ Z {
#define R D
#define S return 0
#define T C
#define U G < 98 Q N
#define V L == 7869 &&
#define W Y F
#define X *
#define Y (
#define Z )


int main()
{
 P R O G R A M
 T E S T
}

Gh057

exacto leosansan! es un sistemas de ecuaciones indeterminado.

por cierto, exquisitas las soluciones de eferion; solo me imagino la cara del profe cuando le muestren el código y le diga "lo hice así, está bien?" jajajajaaaa
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...

engel lex

lo que pasa es que en la solucion de leosansan el solicitante puede entender por desconocimiento que esa es la ecuacion final y llevarlo a fallar la nota del trabajo por (obviamente flojo y no saber que dice ahí)

rayos! estoy oxidado en mate! nada más vi una ecuacion XD no habia notado la segunda

eferion
int main()
{
  P R O G R A M
  T E S T
}

solo te puedo decir que te fumaste algo raro y ya vencido! D:
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Gh057

jajaaja ese main es un delirioooo  :laugh:
4 d0nd3 1r4 3l gh057? l4 r3d 3s 74n v4s74 3 1nf1n1t4...

eferion

Cita de: engelx en  3 Marzo 2014, 18:51 PM
lo que pasa es que en la solucion de leosansan el solicitante puede entender por desconocimiento que esa es la ecuacion final y llevarlo a fallar la nota del trabajo por (obviamente flojo y no saber que dice ahí)

rayos! estoy oxidado en mate! nada más vi una ecuacion XD no habia notado la segunda

eferion
int main()
{
  P R O G R A M
  T E S T
}

solo te puedo decir que te fumaste algo raro y ya vencido! D:

Jajajajajaja... la idea es ofuscar con cierto estilo... la verdad es que solo me llevó unos 10 minutos conseguir ese código, tampoco es que me esmerase en exceso. Se puede conseguir código bastante más complicado de leer XDDDD

Yoel Alejandro

Saludos a todos. Como profesor de matemáticas me permito hacer algunos comentarios. Es básicamente un problema lógico de combinatoria. Pero quiero decir que el planteamiento de suponer un máximo de 100 asistentes hombres no es técnicamente correcto (empezando porque es un completamente arbitrario). Además, hay que tener en cuenta que elegido un valor para la cantidad de hombres, aún existen muchos pares de combinaciones de mujer-niño. O sea, se tienen tres variables i, j, k y no una.

En síntesis, el problema consiste en encontrar todas las tripletas de valores i, j, k que satisfagan:

A*i + B*j + C*k = T

siendo A, B, C la cantidad de monedas aportadas por cada hombre, mujer o niño respectivamente, T el total de monedas, y siendo i, j, k enteros positivos.
Y efectivamente hay infinitas soluciones, por tratarse de más incógnitas que ecuaciones!!!

Yo voy a suponer (no se si esto se halle efectivamente entre las condiciones del ejercicio) que hubo por lo menos uno hombre, por lo menos una mujer y por lo menos un niño, así que i, j, k deben ser mayores o iguales a 1.

Ahora, ¿cuáles son los mayores valores posibles de i, de j  y de k? Pues, el máximo de i viene dado cuando j  y k tienen los valores mínimos: j = k = 1 (una sola mujer y un solo niño). Ello produce:

i_MAX = (T - 1*B - 1*C)/A;

(redondeando i_MAX al entero más cercano por debajo). Similarmente se obtienen el máximo de j y el máximo de k:

j_MAX = (T - 1*A - 1*C)/B;
k_MAX = (T - 1*A - 1*B)/C;


Sacando las cuentas se obtiene un máximo de:

103 hombres
78 mujeres
192 niños

Luego debemos probar todas las combinaciones para 1 <= i <= i_MAX, 1 <= j <= j_MAX, 1 <= k <= k_MAX, y seleccionar aquéllas donde  A*i + B*j + C*k == T. Ahora sabiendo todo esto,el código del programa resulta bien sencillo, pero les cuento que se hallan 106 soluciones, jeje. La que se propuso H = 33, M = 46, N = 21 es una de ellas pero hay otras por ejemplo:

H = 25, M = 46, N = 36
H = 26, M = 21, N = 96
H = 27, M = 36, N = 57

y muchas más.

El programa aquí:
Código (cpp) [Seleccionar]

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

/* Nota: Sean
*
*  A la cantidad de monedas que aporta cada hombre
*  B la cantidad de monedas que aporta cada mujer
*  C la cantidad de monedas que aporta cada nino
*  T el total de monedas
*
* entones tenemos:
*/
#define A 75
#define B 99
#define C 40
#define T 7869
/* por otra parte, siendo i la cantidad de hombres, j la cantidad
* de mujeres y k la cantidad de ninos, la condicion buscada es que

*  A*i + B*j + C*k = T
*
* siendo i, j, k numeros enteros y positivos. La solucion la buscaremos
* por tanteo (fuerza bruta) mostrando todas las combinaciones posibles.
*/

int main () {

int i, j, k, count;
int i_MAX, j_MAX, k_MAX;

printf( "********************************************\n"
    "Programa de calculo de combinaciones\n"
    "********************************************\n\n" );

printf( "Condiciones:\n"
" cada hombre aporta %d monedas\n"
" cada mujer aporta  %d monedas\n"
" cada nino aporta   %d monedas\n"
" Total:             %d monedas.\n\n",
A, B, C, T );

/* El maximo valor posible de i sera el cociente entero de
* (T - 1*B - 1*C) entre A, es decir, el valor entero de i que satisface
* la ecuacion:
*
*  A*i + B*j + C*k = T
*
* con los valores minimos de j = 1, k = 1. De modo similar se calculan
* los valores maximos posibles de j y k.
*/
i_MAX = (T - 1*B - 1*C)/A;
j_MAX = (T - 1*A - 1*C)/B;
k_MAX = (T - 1*A - 1*B)/C;

printf("%d, %d, %d, %d\n", i_MAX, j_MAX, k_MAX, i_MAX*j_MAX*k_MAX);

count = 0;
for ( i = 1; i <= i_MAX; i++ )
for ( j = 1; j <= j_MAX; j++ )
for ( k = 1; k <= k_MAX; k++ )
if ( A*i + B*j + C*k == T ) {
printf( "Se encontro la combinacion H = %d, M = %d, N = %d\n",
i, j, k);
count ++;
}
printf( "%d resultados. -- FIN DEL PROGRAMA --\n", count);
}


y el resultado que arroja (larguísimo):

********************************************
Programa de calculo de combinaciones
********************************************

Condiciones:
cada hombre aporta 75 monedas
cada mujer aporta  99 monedas
cada nino aporta   40 monedas
Total:             7869 monedas.

Se encontro la combinacion H = 1, M = 6, N = 180
Se encontro la combinacion H = 1, M = 46, N = 81
Se encontro la combinacion H = 2, M = 21, N = 141
Se encontro la combinacion H = 2, M = 61, N = 42
Se encontro la combinacion H = 3, M = 36, N = 102
Se encontro la combinacion H = 3, M = 76, N = 3
Se encontro la combinacion H = 4, M = 11, N = 162
Se encontro la combinacion H = 4, M = 51, N = 63
Se encontro la combinacion H = 5, M = 26, N = 123
Se encontro la combinacion H = 5, M = 66, N = 24
Se encontro la combinacion H = 6, M = 1, N = 183
Se encontro la combinacion H = 6, M = 41, N = 84
Se encontro la combinacion H = 7, M = 16, N = 144
Se encontro la combinacion H = 7, M = 56, N = 45
Se encontro la combinacion H = 8, M = 31, N = 105
Se encontro la combinacion H = 8, M = 71, N = 6
Se encontro la combinacion H = 9, M = 6, N = 165
Se encontro la combinacion H = 9, M = 46, N = 66
Se encontro la combinacion H = 10, M = 21, N = 126
Se encontro la combinacion H = 10, M = 61, N = 27
Se encontro la combinacion H = 11, M = 36, N = 87
Se encontro la combinacion H = 12, M = 11, N = 147
Se encontro la combinacion H = 12, M = 51, N = 48
Se encontro la combinacion H = 13, M = 26, N = 108
Se encontro la combinacion H = 13, M = 66, N = 9
Se encontro la combinacion H = 14, M = 1, N = 168
Se encontro la combinacion H = 14, M = 41, N = 69
Se encontro la combinacion H = 15, M = 16, N = 129
Se encontro la combinacion H = 15, M = 56, N = 30
Se encontro la combinacion H = 16, M = 31, N = 90
Se encontro la combinacion H = 17, M = 6, N = 150
Se encontro la combinacion H = 17, M = 46, N = 51
Se encontro la combinacion H = 18, M = 21, N = 111
Se encontro la combinacion H = 18, M = 61, N = 12
Se encontro la combinacion H = 19, M = 36, N = 72
Se encontro la combinacion H = 20, M = 11, N = 132
Se encontro la combinacion H = 20, M = 51, N = 33
Se encontro la combinacion H = 21, M = 26, N = 93
Se encontro la combinacion H = 22, M = 1, N = 153
Se encontro la combinacion H = 22, M = 41, N = 54
Se encontro la combinacion H = 23, M = 16, N = 114
Se encontro la combinacion H = 23, M = 56, N = 15
Se encontro la combinacion H = 24, M = 31, N = 75
Se encontro la combinacion H = 25, M = 6, N = 135
Se encontro la combinacion H = 25, M = 46, N = 36
Se encontro la combinacion H = 26, M = 21, N = 96
Se encontro la combinacion H = 27, M = 36, N = 57
Se encontro la combinacion H = 28, M = 11, N = 117
Se encontro la combinacion H = 28, M = 51, N = 18
Se encontro la combinacion H = 29, M = 26, N = 78
Se encontro la combinacion H = 30, M = 1, N = 138
Se encontro la combinacion H = 30, M = 41, N = 39
Se encontro la combinacion H = 31, M = 16, N = 99
Se encontro la combinacion H = 32, M = 31, N = 60
Se encontro la combinacion H = 33, M = 6, N = 120
Se encontro la combinacion H = 33, M = 46, N = 21
Se encontro la combinacion H = 34, M = 21, N = 81
Se encontro la combinacion H = 35, M = 36, N = 42
Se encontro la combinacion H = 36, M = 11, N = 102
Se encontro la combinacion H = 36, M = 51, N = 3
Se encontro la combinacion H = 37, M = 26, N = 63
Se encontro la combinacion H = 38, M = 1, N = 123
Se encontro la combinacion H = 38, M = 41, N = 24
Se encontro la combinacion H = 39, M = 16, N = 84
Se encontro la combinacion H = 40, M = 31, N = 45
Se encontro la combinacion H = 41, M = 6, N = 105
Se encontro la combinacion H = 41, M = 46, N = 6
Se encontro la combinacion H = 42, M = 21, N = 66
Se encontro la combinacion H = 43, M = 36, N = 27
Se encontro la combinacion H = 44, M = 11, N = 87
Se encontro la combinacion H = 45, M = 26, N = 48
Se encontro la combinacion H = 46, M = 1, N = 108
Se encontro la combinacion H = 46, M = 41, N = 9
Se encontro la combinacion H = 47, M = 16, N = 69
Se encontro la combinacion H = 48, M = 31, N = 30
Se encontro la combinacion H = 49, M = 6, N = 90
Se encontro la combinacion H = 50, M = 21, N = 51
Se encontro la combinacion H = 51, M = 36, N = 12
Se encontro la combinacion H = 52, M = 11, N = 72
Se encontro la combinacion H = 53, M = 26, N = 33
Se encontro la combinacion H = 54, M = 1, N = 93
Se encontro la combinacion H = 55, M = 16, N = 54
Se encontro la combinacion H = 56, M = 31, N = 15
Se encontro la combinacion H = 57, M = 6, N = 75
Se encontro la combinacion H = 58, M = 21, N = 36
Se encontro la combinacion H = 60, M = 11, N = 57
Se encontro la combinacion H = 61, M = 26, N = 18
Se encontro la combinacion H = 62, M = 1, N = 78
Se encontro la combinacion H = 63, M = 16, N = 39
Se encontro la combinacion H = 65, M = 6, N = 60
Se encontro la combinacion H = 66, M = 21, N = 21
Se encontro la combinacion H = 68, M = 11, N = 42
Se encontro la combinacion H = 69, M = 26, N = 3
Se encontro la combinacion H = 70, M = 1, N = 63
Se encontro la combinacion H = 71, M = 16, N = 24
Se encontro la combinacion H = 73, M = 6, N = 45
Se encontro la combinacion H = 74, M = 21, N = 6
Se encontro la combinacion H = 76, M = 11, N = 27
Se encontro la combinacion H = 78, M = 1, N = 48
Se encontro la combinacion H = 79, M = 16, N = 9
Se encontro la combinacion H = 81, M = 6, N = 30
Se encontro la combinacion H = 84, M = 11, N = 12
Se encontro la combinacion H = 86, M = 1, N = 33
Se encontro la combinacion H = 89, M = 6, N = 15
Se encontro la combinacion H = 94, M = 1, N = 18
Se encontro la combinacion H = 102, M = 1, N = 3
106 resultados. -- FIN DEL PROGRAMA --

:laugh:
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)

leosansan

#17
Cita de: yoel_alejandro en  4 Marzo 2014, 17:28 PM

Saludos a todos. Como profesor de matemáticas me permito hacer algunos comentarios. .........................


Y yo como Ingeniero también aporto mis comentarios.

Lamento corregirte querido yoel_alejandro pero mantengo lo que propuse: la indeterminación del sistema es de uno ya que existen DOS ecuaciones y TRES incógnitas con lo que dos de ellas se obtendrán de la tercera, o sea una sola variable independiente.

Cita de: rafa011 en  2 Marzo 2014, 23:23 PM

Un centenar de mujeres, hombres y niños .......................


Al parecer no has leído correctamente el enunciado: un centenar, o sea 100, no un centenar y pico. Esa es una de las condiciones que se ha de cumplir y que tú obvias, quedando un sistema de dos ecuaciones y tres incógnitas. Claro que tu puedes interpretar centenar como más te guste.

Y para que quede constancia, esta es la solución que da tu código con esa condición:



Curiosamente coincide con mi solución .

Y tu código con la condición del centenar:

Cita de: yoel_alejandro en  4 Marzo 2014, 17:28 PM
..............................................
En síntesis, el problema consiste en encontrar todas las tripletas de valores i, j, k que satisfagan:

A*i + B*j + C*k = T

       Y

i+j+k=100


Código (cpp) [Seleccionar]

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

/* Nota: Sean
*
*  A la cantidad de monedas que aporta cada hombre
*  B la cantidad de monedas que aporta cada mujer
*  C la cantidad de monedas que aporta cada nino
*  T el total de monedas
*
* entones tenemos:
*/
#define A 75
#define B 99
#define C 40
#define T 7869
/* por otra parte, siendo i la cantidad de hombres, j la cantidad
* de mujeres y k la cantidad de ninos, la condicion buscada es que
*
*  A*i + B*j + C*k = T
*
* siendo i, j, k numeros enteros y positivos. La solucion la buscaremos
* por tanteo (fuerza bruta) mostrando todas las combinaciones posibles.
*/

int main () {

int i, j, k, count;
int i_MAX, j_MAX, k_MAX;

printf( "********************************************\n"
   "Programa de calculo de combinaciones\n"
   "********************************************\n\n" );

printf( "Condiciones:\n"
" cada hombre aporta %d monedas\n"
" cada mujer aporta  %d monedas\n"
" cada nino aporta   %d monedas\n"
" Total:             %d monedas.\n\n",
A, B, C, T );

/* El maximo valor posible de i sera el cociente entero de
* (T - 1*B - 1*C) entre A, es decir, el valor entero de i que satisface
* la ecuacion:
*
*  A*i + B*j + C*k = T
*
* con los valores minimos de j = 1, k = 1. De modo similar se calculan
* los valores maximos posibles de j y k.
*/
i_MAX = (T - 1*B - 1*C)/A;
j_MAX = (T - 1*A - 1*C)/B;
k_MAX = (T - 1*A - 1*B)/C;

printf("%d, %d, %d, %d\n", i_MAX, j_MAX, k_MAX, i_MAX*j_MAX*k_MAX);

count = 0;
for ( i = 1; i <= i_MAX; i++ )
for ( j = 1; j <= j_MAX; j++ )
for ( k = 1; k <= k_MAX; k++ )
if ( A*i + B*j + C*k == T  && i+j+k==100) {/** AQUI EL CENTENAR **/
printf( "\n\nSe encontro la combinacion H = %d, M = %d, N = %d\n\n",
i, j, k);
count ++;
}
printf( "%d resultados. -- FIN DEL PROGRAMA --\n", count);
}



Demasiado código para un problema tan nimio, al menos a mí me lo parece.

¡¡¡¡ Saluditos! ..... !!!!



engel lex

apoyo a leosansan...

empiezas el tema de una manera un poco prepotente...
Citar
Saludos a todos. Como profesor de matemáticas me permito hacer algunos comentarios.

segundo ignoras datos del ejercicio
CitarUn centenar de mujeres, hombres y niños

tu dices
CitarYo voy a suponer (no se si esto se halle efectivamente entre las condiciones del ejercicio)
si se haya ya que la condición que los separa es un "y" no un "o"

CitarSacando las cuentas se obtiene un máximo de:

103 hombres
78 mujeres
192 niños
el máximo es mayor a la sumatoria?

CitarY efectivamente hay infinitas soluciones, por tratarse de más incógnitas que ecuaciones!!!
absolutamente falso... tienes un sistema de variables basadas en números naturales en una suma con un resultado conocido... es lo mas lejos de infinito que se puede definir...

los detalles del ejercicio eran claros inequívocos y fácilmente comprensibles, a ver si nos ponemos a entenderlo mejor antes de empezar con "Como profesor de matemáticas" y meter la pata catastróficamente no solo en la interpretación del ejercicio, sino también en detalles como los aclarados aquí y por leosansan
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

leosansan

#19
Gracias engel lex por tu punto de vista que considero neutral y totalmente objetivo.

No suelo hacer alarde de mi profesión  ... "a no ser que me los toquen". Siento haberlo hecho. Sorry!  :-X

Y conste que considero que yoel_alejandro me da mil vueltas en este mundillo de la programación, creo, pero otra cosa muy diferente es tratar de intervenir en todos los temas, a veces a costa de no aportar nada nuevo.

Porque el código que aporta es para mí la expresión en código de lo que tu, engelx, expusiste en un post anterior de este hilo, ni más ni menos. Y se trataba de responder sin responder al que inició este hilo sin ninguna aportación, más allá del enunciado de un simple problema de ecuaciones.

Pero por mi parte el máximo respeto a  yoel_alejandro .... pero cuando no se tiene razón, no se tiene y no pasa nada.... aunque siempre se agradece una aclaración más que una disculpa ya que creo que el "tonito" de la respuesta de yoel_alejandro lo merece. Pero en fin ........


¡¡¡¡ Saluditos! ..... !!!!