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


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


  Mostrar Mensajes
Páginas: 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 ... 148
131  Programación / Programación C/C++ / Re: serie chingona en: 24 Mayo 2018, 18:23
Pero tu mismo te has respondido en parte...

Citar
Como se puede observar, los 3 primeros números tienen que sumar, los dos siguientes se empiezan a restar, luego nuevamente se suman 3 números, se restan 2 números y así sucesivamente.
Hay que tener cuenta que el denominador va aumentando de 2 en 2 hasta un cierto punto y que luego se va reduciendo.
En el numerador, los 3 primeros dígitos son el numero " 1 " , luego "2", luego "3", e ira así sucesivamente hasta el limite introducido.

Tienes  4 series... la del numerador, la del denominador, la del signo de operacion, y la de cambio del numerador.
Además se pueden simplificar ya que parece que el cambio de signo coinciden con el cambio del valor del numerador.
1, 1, 1, 2, 2,
+, +, +, -, -,

Una de las series es 3,2, 3,2, 3,2, 3,2... Si simplemente alterna entre dos valores, puedes poner sendos bucles uno tras otro limitados por dichos valores.

Código:
   bucle para A desde 1 a 3
        ...
    siguiente

    bucle para B desde 1 a 2
        ...  
    siguiente

Luego el numerador se mantiene con su valor en el bucle A, pero al salir aumenta en uno y se mantiene así en el bucle B, al salir aumenta... Además se ha constatado que el signo sigue 'el ritmo' del numerador, luego en el bucle A suma y en el bucle B resta
y ahora con todo esto actualizamos el código:

Código:
entero valor = Pedir numero ¿positivo?

entero numerador = 1
entero acumulador = 0
entero denominador = 1

    bucle para A desde 1 a 3
        acumulador  = acumulador + (numerador / x) //x porque aún no hemos determinado el valor del denominador.
    siguiente
    numerador +=1

    bucle para B desde 1 a 2
        acumulador  = acumulador - (numerador / x)
    siguiente
    numerador +=1


Ahora estudiemos el denominador... dices que empieza en 1 hasta alcanzar un tope. entiendo que el tope será aquel que luego le permita descender nuevamente hasta acabar en 1. Saber ese tope exige conocer cuantos quebrados compondrán la serie.
Entonces empezaremos por calcularlo, después de todo, necesitábamos saber esto aunque no se pidiera...cuando acaba la serie.
Veamos... el denominador aumenta 2 cada vez, empieza en 1 debe acabar en 1, en tanto que el numerador se repite 3 veces y luego dos antes de cambiar, es decir
El numerador necesita 5 quebrados para aumentar en 2 su valor. Luego podemos sumar 5 quebrados por cada 2 valores que se resten al tota...
numquebrados = ((Total -1) /2) * 5
Ahora bien, esa división de 2, implica que si total-1 no es par, dará decimales... miremos dos casos de ejemplo uno par y otro impar para ver como se comporta:
v = 7
v= 8
con v = 7 (mirando sólo el numerador) 111,22,,333,44,,555,66 = 15 quebrados
con v = 8 (mirando sólo el numerador) 111,22,,333,44,,555,66,,777 = 18 quebrados.
Es decir, la conclusión es clara, tal como se preveía... si v es impar (o v-1 es par), la fórmula se cumple (7-1)= 6; 6/2= 3; 3*5 = 15 justo lo que nos da...
en cambio si v= par, con la fórmula nos da: 8-1= 7; 7/2= 3'5; 3'5*5 = 17'5
Cono resulta exactamente, consideremos no restarle 1, para que sea para y la división sea entera: 8/2= 4; 4*5= 20, luego excede en 2... pues ya esta, cuando sea par seguimos esta otra formula:
quebrados = (((v/2) * 5) -2)

Todavía podría reqerir un ajuste a casua de denominador, pero éste requiere saber de antemano el número teórico de quebrados, luego primero calculamos el número teórico, y luego se actualizaría. Sin embargo debido a una ambigüedad, sin aclarar, no se lleva a cabo tal ajuste...
Código:
entero quebrados
    si ((v and 1) = 0 ) luego  // 'plis': v and 1, no: v modulo 2
        quebrados = (((v/2) * 5) -2)
    sino
        quebrados = (((v-1) /2) * 5)
    fin si

Una vez conocido la cantidad de quebrados, ahora ya podremos conocer el valor máximo del denominador:, pués llegará justo a la mitad de los quebrados.
demoninadorMax = (1 + (((quebrados-2)/2) *2)) ... lo abreviaremos a dMax...
+1, porque el denominador comienza en 1, quebrados -2, porque los dos quebrados de los extremos ya se consideran, entre 2, porque la serie crece, y luego decrece y por 2 porque el siguiente denomindador el el previo aumentado en 2.

Veamos si resulta acertado, para los valores ya conocidos (6, 7 y 8)
dMax(x) viene a decir valor máximo del denominador cuando el valor introducido sea x.
dMax(6) = (1 + (((12-2)/2*2)) = 11 (coincide con lo que pusiste)
dMax(7) = (1 + (((15-2)/2)*2) = 14
dMax(8) = (1 + (((18-2)/2)*2) = 17
Antes de comprobar si los últimos coinciden, queda claro que se puede, simplificar ya que /2*2 se anulan mutuamente. dividir algo entre 2 para luego inmediatamente multiplicalro por dos, es lo mismo que no hacer nada. Luego simplificado quedaría:
dMax = (1 + quebrados-2) , y como ahora son sumas, también se pueden simplificar...
dMax = (quebrados -1)
A hora la comprobación para v=7 y v=8 (con v=6, es 11, como ya colocaste en el enunciado).
La comprobación la hacemos colocando los numeradores y debajo la línea resultante denominadores (se antecede con 0, para que todos tengan dos cifras y visualmente coincidan las líneas).
para v = 7;  01 01 01 , 02 02 ,,, 03 03 03 , 04 04 ,,, 05 05 05 , 06 06 (15 quebrados)
denominaD; 01 03 05 , 07 09 ,,, 11 13 15 , 13 11 ,,, 09 07 05 , 03 01

para v = 8;  01 01 01 , 02 02 ,,, 03 03 03 , 04 04 ,,, 05 05 05 , 06 06 ,,, 07 07 07 (18 quebrados)
denominaD; 01 03 05 , 07 09 ,,, 11 13 15 , 17 17 ,,, 15 13 11 , 09 07 ,,, 05 03 01

Vemos que en realidad, a causa de valores pares o impares no se ajusta con la formulación... realmente no es complicado ajustarla, pero como decía más arriba hay una ambigüedad en tu especificación, luego no lo toco y resumo que como este resultado ofrece básicamente la misma cantidad de quebrados que los que nos daban pero sujeto también al condicionante de si v es par o impar, podemos simplificar que:
Si v = par; dMax = quebrados  (el máximo se repite 2 veces);
y Si v=impar; dMax= (quebrados-1) (no se repite) que es exactamente la misma conclusión a la que llegamos.

Entonces volvemos al código previo para completarlo:
Código:
entero quebrados, dMax
    si ((v and 1) = 0 ) luego  // v es par
        quebrados = (((v/2) * 5) -2)
        dMax = quebrados       // denominador central se repite.
    sino                               // v es impar
        quebrados = (((v-1) /2) * 5)
        dMax = (quebrados -1)  // denominador central no se repite.
    fin si

Y finalmente si montamos todo el código junto, con la lógica que une todas las partes...
Código:
entero valor = Pedir numero ¿positivo?
entero resultado

resultado = CalcularCustomSerie(valor)


entero = funcion CalcularCustomSerie(entero valor)
    entero numerador = 1
    entero acumulador = 0
    entero denominador = 1
    entero inc = 2
    entero quebrados, dMax, q //q lleva la cuenta de los quebrados.
    buleano vPar


    // calcular número de quebrados y valor máximo del denominador.
    vPar = ((valor and 1) = 0)      // 'plis': v and 1, no: v modulo 2    
    si (vPar = TRUE ) luego  
        quebrados = (((valor / 2) * 5) -2)
        dMax = quebrados            // denominador central se repite.
    sino // vPar = FALSE
        quebrados = (((valor -1) / 2) * 5)
        dMax = (quebrados -1)      // denominador central no se repite.
    fin si

    Hacer
        bucle para A desde 1 a 3
            acumulador  = acumulador + (numerador / denominador)
            q +=1
            si  (q = quebrados)  devolver acumulador
            
            si (q = dMax) luego  
                si (vPar = TRUE) luego  // denominador, se repite, no se incrementa esta vez.
                    inc = -inc   // pero si se activa que el incremento sea negativo en lo sucesivo (decremento).
                sino
                    inc = -inc                      
                    denominador += inc          
                fin si                
            sino
                denominador += inc
            fin si
        siguiente
        numerador +=1

        bucle para B desde 1 a 2
            acumulador  = acumulador - (numerador / denominador)
            q +=1
            si  (q = quebrados)  devolver acumulador
          
            si (q = dMax) luego  
                si (vPar = TRUE) luego  // denominador, se repite, no se incrementa esta vez.
                    inc = -inc   // pero si se activa que el incremento sea negativo en lo sucesivo (decremento).
                sino
                    inc = -inc                      
                    denominador += inc          
                fin si                
            sino
                denominador += inc
            fin si
        siguiente
        numerador +=1

    Repetir //mientras (q < quebrados) // este bucle es indefinido, hay salida desde cada uno de los previos bucles.

    //devolver acumulador
Fin funcion
El pseudocódigo se puede optimizar, pero ya queda a tu esfuerzo... así funciona correctamente, si la ambigüedad que se plantea a continuación sale favorable a lo que he tenido que asumir como correcto...

Y ahora toca hablar de la ambigüedad...
Hay un dato ambiguo (que has dejado al aire y que no queda claro). Si los denominadores, deben ser duplicados o no, es decir el quebrado central puede ser central para ambas partes?, Si el número de quebrados debe ser siempre par, el denominador central se repetirá dos veces, pero cuando el número de quebrados sea impar, se repetirá solo 1 (ó 3 veces...) yo asumo que solo 1, pero es arriesgado, toda vez que en la serie que tú mismo pones, al final incumples tu propia regla de 3,2 ,, 3,2 ,, 3,2, pués los dos numeradores finales se repiten: 2,2 (44,55; de 4/7, 4/5, 5/3, 5/1)...
Dicho de otro modo, con tus propias reglas, la serie que pones debería ser:
S = 1/1 + 1/3 + 1/5  - 2/7 - 2/9  + 3/11 + 3/13 + 3/11 - 4/9 - 4/7 + 5/5 + 5/3 + 5/1

Separando la serie en los numeradores y denominadores (visualmente deja más claro ver la relación entre ellos):
numeradores: 01 01 01 , 02 02 ,,, 03 03 03 , 04 04 ,,, 05 05 05
denominado.: 01 03 05 , 07 09 ,,, 11 13 11 , 09 07 ,,, 05 03 01

Dada tal ambigüedad, puede ser preciso reajustar, el pseudocódigo... y eso ya lo dejo a tu esfuerzo, toda vez que ya te lo he dejado totalmente masticado y digerido. Solo te falta ensamblar las piezas... con alguna corrección menor si procede.


Nota que los bucles internos solo cambian en dos sencillas cosas: la cuenta del bucle  y el signo, ahí te lo dejo para que pienses...
132  Programación / Programación General / Re: Contar el periodo de caracteres en un String, PROLOG en: 24 Mayo 2018, 02:29
Si obtienes varias respuestas, quédate con la que arroje el valor menor.

De todos modos si expones lo que llevas hecho, quedará más claro...
133  Programación / Java / Re: Ayuda Estudiante Java Saber si un numero es primo sin usar arreglos en: 24 Mayo 2018, 02:25
>:DQuisiera que alguien super inteligente me saque de la duda si esto es posible o no, no me den respuestas de lento pensar, haciendo comprobaciones con el listado de todos los numeros y comprobando si esta... es algo de tarea programacion 1 eh visto de todo y no encuentro nisiquiera una formula que pueda hacer sin ningun arreglo en java.
Ni en Java ni en ningún otro lenguaje.

Actualmente no existe ningún algoritmo en tiempo polinomial para resolver si un número dado es primo. Exige usar los primos menores que él.
Si no tiene divisores, es primo...
...luego, que calcules esos primos sobre la marcha o que uses una lista ya precalculada, solo sirve para acelerar la búsqueda.

La solución a ese problema pertenece al cuerpo teórico de las matemáticas.
Mi intuición me dice que sí que existe una función así, pero... de momento, es algo irresoluble.
134  Foros Generales / Noticias / Re: Facebook quiere que le envíes tus fotos íntimas para evitar el "porno vengativo" en: 24 Mayo 2018, 02:15
jajaja... que bueno.
Si temes que tu pareja (o un conocido) suba una foto sin tu consentimiento, mejor sube tu mismo las 250 que tienes (a unos desconocidos). si no confías en tu pareja, porqué vas a confiar en unos desconocidos????. Absurdo.

Lo mejor es no hacerse nunca fotos salidas de tono y listo. Y si te las hiciste, elíminalas para siempre. Tu pareja ya te tiene 'en persona' no necesita tenerte en fotos.

Otro problema es que pasa con facebook y las colisiones... yo estoy seguro que si hasheao todas la imágenes de mis discos, posiblemente no haya colisión, pero con las fotos de cientos de millones de millones de personas, me temo que colisiones se van a dar sí o sí... con alguna frecuencia. Salvo que usen dos hashes distintos para una misma imagen.
135  Programación / Programación C/C++ / Re: Tiempo en aprender en: 23 Mayo 2018, 19:08
El tiempo que se tarda en ir desde la Ciudad-A hasta la Ciudad-B, depende principlamente de dos factores:
1 - La distancia que las separa.
2 - La velocidad de recorrido.

En tu caso, ni sabemos la distancia que te separa del conocimiento de C++, ni la velocidad de tu aprendizaje, luego no hay más respuesta válida que la incertidumbre.
136  Foros Generales / Foro Libre / Re: Venezuela: Maduro echa al mayor diplomático de Estados Unidos en: 23 Mayo 2018, 02:02
Citar
"Yo repudio todas las sanciones que se pretenden contra la República Bolivariana de Venezuela, porque le hacen daño, generan sufrimiento, al pueblo de Venezuela", afirmó.
Que repudie... hasta que al final sea la gente (incluso cercana) la que le repudie a él.

La goma se puede estirar tanto como quieras, pero cuando se rompa, se acabó el juego, ya no habrá más estirarla.


...la verdad que tengo serías dudas de que nadie con sentido común haya decidido en Venezuela seguir apoyando a este tipo en las votaciones recientes, porque significa seguir pasando apuros,  innecesariamente, meramente por caprichos sobre ideales absurdos... por otro lado, es más probable que los chanchullos en las urnas estén a la orden del día, pero como no admite otro control que el suyo, pués los chanchullos se dan por ciertos, sí o sí.
137  Programación / Programación C/C++ / Re: [C] Array unidimensional en: 23 Mayo 2018, 01:34
Hola muchas gracias por responder a mis dudas fueron de mucha ayuda tus comentarios, probe lo que dijiste sobre mi problema número dos y así quedó mi programa ahora:

Ahora cuando elijo ingresar por ejemplo dos sueldos, ingreso el primer sueldo después me pregunta si quiero ingresar otro sueldo y cuando pulso s se sale del ciclo.

Código:
...
int main() {
int sueldo[100];
    char op;
    int i,j, D, arc, empleados=0;
    float promedio, suma=0;
    printf("\nCuantos sueldos desea ingresar?: ");
    scanf("%i", &D);
    if (D > 0 && D < 100) {
        do {
             ...
                
                
                printf("\nDesea introducir un sueldo? [s/n]: ");
                fflush(stdin);
                while (getchar() != '\n');
               scanf("%c", &op);
                if (op == 'n' || op == 'N') {
                    break;
                    }
                 }
            }   while (D<1||D>99);
        system("cls");
...

Pués para haber leido mi respuesta, no veo que hayas cambiado significativamente el código, especialmente lo que te remarcaba aquí, sigue estando...
... solicitar al comienzo cuantos sueldos se desean ingresar ... Pero en esete caso, sobra volver a preguntar si quiere señalar otro sueldo dentro de ese bucle... esto ya se preguntó antes.

Elige una de las  dos opciones... O preguntas al principio, cuantos (y ya nunca más), o preguntas sobre la marcha ¿otro sueldo? y en consonancia los bucles son diferentes...

nada, nada... revisando más a fondo el código, ahora veo bucles por todas partes....
Para preguntar los sueldos solo necesitas un único bucle...punto.
Luego podrás necesitar alguno más para hacer los cálculos, pero no para pedir sueldos...


Intenta entenderlo...

Si de entrada preguntas a un jefe en la oficina: Cuantos empleados tienes a sueldo? ... Si responde por ejemplo 23, tu bucle deberá ser de 23 y será exclusivamente para pedir YA, las cantidades, no se puede pedir (al jefe) más nada en ese bucle. La unica forma de salir del bucle debe ser completar el valor de los 23 sueldos... Sí o Sí... (esta es la propuesta: empezar preguntando cuantos).
Código:
Hacer
    D = Preguntar cuantos sueldos quieres tratar?
    Si D está en el rango 1-99
        bucle para i desde 0 a D-1
             sueldo(i) = Preguntar a cuanto asciende el sueldo del empleado 'i'
             // algunas operaciones de cáclulo se pueden hacer directamente dentro del propio bucle
            // por ejemplo, el total...
            total += sueldo(i)
            ...etc...
        repetir
        // y otras operaciones (como por ejemplo si se pidiera ordenar los sueldos), se deben hacer fuera dle bucle.
        // por ejemplo el promedio.
        Promedio = (Total /D)
        ...etc...
    Sino
        mensaje "error solo se permite señalar entre 1 y 99 sueldos. Vuelva a señalar un valor correcto."
    fin si
Repetir mientras ((D < 1) ó (D>99))
Hay dos bucles, pero el externo (el que aparece primero) sirve exclusivamente para asegurarse que el jefe responde un valor de empleados entre 1 y 99... una vez responde bien, ese bucle pierde su efecto, de hecho si empieza dando un valor adecuado, ese bucle se ejecuta una sola vez.

Reformulo dichos bucles para que lo veas más claro:
Código:
// primer bucle: Aqui te preguntaré hasta que me dés un valor correcto...
    // Tantas veces dé un valor incorrecto, tantas veces preguntará...
Hacer
    D = Preguntar cuantos sueldos quieres tratar (elija un valor entre 1 y 99)?
Repetir mientras ((D < 1) ó (D>99))

// segundo bucle aquí solo pregunto el valor de los sueldos y NO pregunto nada más...
    // la cantidad del bucle es ya conocida: "D veces" (pero empezando desde 0, acaba en 1 menos).
bucle para i desde 0 a D-1
    sueldo(i) = Preguntar a cuanto asciende el sueldo del empleado 'i'            
    total += sueldo(i)    
    ...etc...      
repetir
  
Promedio = (Total /D)
...etc...



En cambio imagina que no está el jefe, te encuentras en la cafetería a los empleados, tu pregunta será entonces: Hay algún empleado aqui? y si uno levanta la mano y dice "si, yo", entonces le preguntas luego (y cuál es tu sueldo?) ... en esete caso el bucle acaba cuando recibes una respuesta de 'no', ya no hay más empleados... y por tanto ya se sale del bucle... el bucle a priori desconocemos cuantas veces se ejecutará, por eso el bucle for, no se aplica en este caso. Y por supuesto con cada respuesta aquí, D aumenta en 1, inicialmente era 0, y si llegara a 99, también se sale sin preguntar a nadie más...
es más como queremos que sea mayor que 0, inicialmente no empezamos preguntando si alguien más es empleado, inicialmente preguntamos el sueldo para asegurarnos que al menos uno nos dé su sueldo, si inicialmente preguntas si hau algún empleado y te dicen que no... saldrías del bucle, pero... al salir del bucle así, tienes 0 empleados... cosa inadmisible, según los requisitos... (esta es la propuesta: preguntar sobre la marcha).

Limpiando el pseudocodigo de comentarios extras, para verlo más nítido.
Código:
   D = 0
    i = 0
    // Este bucle se repetirá mientras se indicque 'si' y no se alcance 99 empleados
    Hacer        // la condición se hace alfinal, para asegurarnos que al menos tengamos 1 sueldo.
        sueldo(i) = Preguntar a cuanto asciende el sueldo del empleado 'i'
        total += sueldo(i)
        D += 1  //sumamos un empleado que ACABA de señalar su sueldo.

        massueldos = Preguntar: quiere señalar el sueldo de otro empleado (S/N)
    repetir mientras ((D < 99) y (massueldos = "S" ó "s"))
  
    Promedio = (Total /D)
    ... etc...


Olvídate de la programación por un momento, intenta llevarlo al terreno 'personal', imagina que físicamente haces la pregunta a una o varias personas... mantén ese diálogo interno, y mira si no te resulta absurdo... lo que has escrito... ...pero intenta imaginártelo físicamente, para entenderlo. la programación no es redactar sin sentido y a ver si sale... es copia fidedigna de la realidad. Luego piensa como sucede en la vida real.
Cuando entiendas perfectamente esto, la programación será como beber cerveza, ningún misterio... aunque puedes acabar 'borracho'...  :laugh: :laugh: :laugh:

Hale, a ver si ahora lo pillas...  :rolleyes: :rolleyes:
138  Programación / Programación C/C++ / Re: [C] Array unidimensional en: 22 Mayo 2018, 16:54
Citar
1) Si por ejemplo elegí ingresar dos sueldos y solo ingreso uno, y elijo que no
quiero ingresar otro sueldo me imprime el sueldo ingresado y después números al
azar como si hubiera ingresado un segundo sueldo, como puedo arreglar eso?
A - En ciertos lenguajes, al declarar un tipo de dato, es obligado inicializarlo al valor deseado. Si no se hace e valor que tienen es lo que hubiera previamente en esa posición de memoria.
B - En otros lenguajes, al declarar un tipo de datos, se inicializa al valor por defecto (0 en caso de los números).
El lenguaje C entra en la categoría A. Así que o bien, antes de nada pones a 0 todo el array sueldos, o bien antes de solicitar que se ingrese el sueldo, lo pones a 0, o bien no importa, porque si introduce el usuario un valor, ya cambia el que hubiera previo. En este último caso, todavía tendrán valores 'sucios' los sueldos no asignados desde D hasta 99.... pero te da igual, si solo vas a contabilidar y operar con los 'D' sueldos.

Citar
2) Si por ejemplo elijo de nuevo ingresar 2 sueldos, me pide que ingrese el sueldo
del empleado 1 después me pregunta que si quiero ingresar otro sueldo elijo que
si, ingreso el sueldo del empleado 2 y despues me vuelve a preguntar si quiero
ingresar otro sueldo y no quiero que haga eso el programa quiero que imprima
directamente después de ingresar el segundo sueldo.
Esto es cosa de tu diseño.
- No es mala estrategia solicitar al comienzo cuantos sueldos se desean ingresar, si elige 15... pués se solicitan 15. Pero en esete caso, sobra volver a preguntar si quiere señalar otro sueldo dentro de ese bucle... esto ya se preguntó antes.
- La otra solución es partir de la incertidumbre e ir preguntando en el bucle... en ese caso, la pregunta previa al bucle sobra y por tanto las comprobaciones deben hacerse in situ dentro del bucle al final.

Preguntar al comienzo:
Código:
Hacer
    D = Preguntar cuantos sueldos quieres tratar?
    Si D está en el rango 1-99
        bucle para i desde 0 a D-1
             sueldo(i) = Preguntar a cuanto asciende el sueldo del empleado 'i'
             // algunas operaciones de cáclulo se pueden hacer directamente dentro del propio bucle
            // por ejemplo, el total...
            total += sueldo(i)
            ...etc...
        repetir
        // y otras operaciones (como por ejemplo si se pidiera ordenar los sueldos), se deben hacer fuera dle bucle.
        // por ejemplo el promedio.
        Promedio = (Total /D)
        ...etc...
    Sino
        mensaje "error solo se permite señalar entre 1 y 99 sueldos. Vuelva a señalar un valor correcto."
    fin si
Repetir mientras ((D < 1) ó (D>99))

Preguntar sobre la marcha:
Código:
   D = 0
    i = 0
    Hacer        
        sueldo(i) = Preguntar a cuanto asciende el sueldo del empleado 'i'
        // algunas operaciones de cáclulo se pueden hacer directamente dentro del propio bucle
        // por ejemplo, el total...
        total += sueldo(i)
        ...etc...
        D += 1  //sumamos un empleado que señala su sueldo.

        massueldos = Preguntar: quiere selar el sueldo de otro empleado (S/N)
    repetir mientras ((D < 99) y (massueldos = "S" ó "s"))
    // y otras operaciones (como por ejemplo si se pidiera ordenar los sueldos), se deben hacer fuera dle bucle.
    // por ejemplo el promedio.
    Promedio = (Total /D)
    ... etc...
Tu decies que modelo usar, pero sé consecuente con el modelo elegido... no puedes mezclar ambos.

Citar
3) Como puedo saber cuantos empleados tienen un sueldo superior al promedio?
Ya te he selado claramente que algunas operaciones pueden hacerse dentro del bucle, pero otras no.
El promedio no puede calcularse hasta que el 'último empleado' haya dejado constancia de sus sueldo, porque el promedido depende del total, y este solo se sabe al final.
Luego exige un nuevo bucle donde recorras desde 0 hasta D-1, comparando:
    
Código:
si suedlo(i) > promedio luego superior +=1
139  Foros Generales / Foro Libre / Re: Herramienta matemática para obtener gráficas en: 22 Mayo 2018, 02:03
Mathematica
...y a diferencia de Derive, sigue en activo...

En algún disco tengo una versión vieja del 2002-2003 o así... si no logras encontrar una más actual, avisa.

p.d.: Olvidaba ponerte enlace:
http://www.wolfram.com/mathematica/

Mira abajo (en la página) donde pone: Cobertura y accede al área de tu interés...

Para ver lo nuevo en la versión 11
http://www.wolfram.com/mathematica/new-in-11/
140  Programación / Programación C/C++ / Re: Problema en arboles binarios de busqueda en: 21 Mayo 2018, 15:19
Tienes varios errores.

El primordial es la sintaxis: Debes poner las llaves y los finales de sentencia donde corresponden, sin omitir ninguno, no son opcionales...

Otro error (éste semántico)...  mirando por ejemplo la función Buscar... 'p' siempre es nulo, nunca se le asigna nada, incluso aunque se encuentre la clave buscada.
Del mismo estilo es que aunque (ésta) la función devuelva algo, luego 'nadie' está allí para recoger la 'pelota' que desde aquí se envía...
En la segunda función (mostrar) pasas el nodo por referencia, pero aquí (buscar) por valor, podría por ello parecer... pero no puede ser una omisión a causa de esto, ya que declaras la función como 'no vacante' (no es void) y explícitamente 'devuelves' p.

Otro medio error, menos importante es que en la llamada inicial no se verifica si la clave recibida es nula. Asi en 'BuscarPelicula', si comprueba ese parámetro, no s epierde tiempo luego en ser revisado más adelante, ni ejecuta más acciones innecesarias si ya desde el principio resulta innecesario. Imagina que vas a una ferretería a comprar un pegamento, el tipo no vende pegamento, pero se larga al almacen a buscar, para después de media decirte que 'aquí no vendemos pegamento', acaso no hubieras preferido que empezara por ahí???.

Corrige todo lo previo y probableente los cambios, ya te lo dejen más libre de errores...

Luego donde dices: "En este caso me da el mismo error pero en "nodo->info << endl"", sintácticamente es correcto, luego si existe un error será semántico. Como por ejemplo: ¿Qué tipo de datos aloja nodo.info? o uno más prosaico: qué crees que debe mostrarse si ese nodo es nulo y no existe pero aún así se insiste en acceder a uno de sus miembros?.

Nota que no es lo mismo un nodo vacío que un nodo nulo. Un nodo vacío, es un nodo creado, pero al que (todavía) no se le han introducido datos... luego permite acceder a sus miembros y mostrar lo que tenga (por ejemplo una cadena vacía), en cambio un nodo nulo, es un nodo inexistente al momento, no se ha alogado espacio en memoria para él.
Páginas: 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 ... 148
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines