Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Manimecker

#11
Tengo el siguiente problema. Necesito crear un programa que reciba un número del usuario, y que después pida diferentes signos para ir cambiando eventualmente el primer número. Y que al final se muestre de la siguiente manera:
Si el símbolo es -, al valor se le resta 1.
Si el símbolo es +, al valor se le agrega 1.
Si el símbolo es /, al valor se divide entre 2.
Si el símbolo es *, al valor se multiplica por 2.

(10)-(9)*(18)/(9)+(10)+(11) y así...

Tengo el siguiente código:
Código (cpp) [Seleccionar]

#include <stdio.h>

int main()
{
    int N1[50], d2=0, d=1, i=0, d3=0; char S1[50];
    for (int i3=0; i3<50; i3++)
    {
        N1[i3]=0;
        S1[i3]=' ';
    }
    printf("Inserta un numero entero: ");
    scanf("%d", &N1[0]);

    while (S1[d2] = '0')
    {
        printf("Inserta el simbolo + para que aumente su valor en 1.\n");
        printf("Inserta el simbolo - para que reduzca su valor en 1. \n");
        printf("Inserta el simbolo * para que multiplique su valor por 2.\n");
        printf("Inserta el simbolo / para que divida su valor en 2.\n");
        printf("Inserta la opcion (simbolo) deseada (0 para terminar): ");
        scanf("%c", &S1[d2]);
        if (S1[d2]=='0')
            break;
        switch (S1[d2])
        {
            case '+' : N1[d]=N1[i]+1; /*CH[d2]='+'*/; break;
            case '-' : N1[d]=N1[i]-1; /*CH[d2]='-'*/; break;
            case '*' : N1[d]=N1[i]*2; /*CH[d2]='*'*/; break;
            case '/' : N1[d]=N1[i]/2; /*CH[d2]='/'*/; break;
            default : break;
        }
        d++; i++; d2++;
    }
    for (int i2=0; i2<d2; i2++)
    {
        if (N1[i2]==0)
            break;
        else
            printf("(%d)%c\n", N1[i2], S1[i2]);
    }
}


Sin embargo, no logro descubir el error, además de que el primer bucle while se repite antes de que me deje escribir algo.

Muchas gracias de antemano.
#12
Cita de: do-while en 21 Octubre 2011, 05:35 AM
XD

        if (d==1)
        {
            May=Men=N1;
        }


Asi te aseguras que tento May com Men son valores que has introducido.

¡Saludos!

Muchas gracias, ya lo había implementado de ese modo, pero no me resultó, por eso decidí consultarte nuevamente.

Desgraciadamente, tengo otro error, el siguiente es el output en la consola:
Código (dos) [Seleccionar]

Inserta un numero: 50
Inserta un numero: 30
Inserta un numero: 5
Inserta un numero: 500
Inserta un numero: 0
El numero mayor es 0 y el menor es 0.
La media es 0.


No puedo ver cuál es el error, y he probado con diferentes maneras.

Te agradezco toda tu ayuda de antemano.

EDIT
------
Después de omitir esta parte:

            if (N1==0)
                break;


Me ejecuta y muestra valores, pero también me toma el valor de 0 como uno válido y no como el signo de salida. Lo raro es que anteriormente se ejecutaba correctamente.

EDIT 2
-----------

Lo he solucionado, el problema era la posición del break, el cual iba al principio.

Todo solucionado, el programa se ejecuta correctamente.

Muchas gracias por tu ayuda do-while :D.
#13
Cita de: do-while en 21 Octubre 2011, 04:17 AM
¡Buenas!

En el primer programa tienes un pequeño error de logica, al asignar el primer valor haces bien asignando al maximo ese primer valor, pero a minimo le das como valor 1, por lo tanto, si cualquier otro numero es mayor que uno tendras un falso valor minimo de 1, por lo tanto, tendras que hacer maximo = minimo = primer_valor_introducido.

El segundo codigo es algo horroroso sin pies ni cabeza, ya que si todos los numeros introducidos son negativos tendras a cero como falso maximo y si todos los valores son mayores que el que has estimado tu como minimo tendras un falso minimo, por lo tanto ese codigo es completamente incorrecto ya que no soluciona todos los casos que te podras encontrar.

¡Saludos!

Muchísimas gracias por tus comentarios, por lo que veo, el segundo código queda omitido.

Ahora, perdona mi ignorancia, pero no sé cómo quedaría el código arreglando el problema lógico que comentas, especialmente la siguiente parte:
maximo = minimo = primer_valor_introducido
Sinceramente no entiendo cómo implementarlo al código.

Perdona mi ignorancia, pero apenas estoy aprendiendo y se me dificulta un poco.

Muchísimas gracias de antemano.
#14
Les cuento, empezé a ver un curso de C/C++ en mi colegio y estoy teniendo problemas con un programa que me dejaron. La función del programa es que debe encontrar el mayor y el menor números de N números que el usuario introduzca, además de sacar la media de todos los números.

Empezé con este código:

#include <stdio.h>

int main()
{
   int N1=1, May, Men, d=1, Cont=0;
   while (N1 != 0)
   {
       printf("Inserta un numero: ");
       scanf("%d", &N1);
       if (d==1)
       {
           May=N1;
           Men=1;
       }
       else
       {
           if (N1==0)
               break;
           else
           {
               if (N1 > May)
               {
                   May=N1;
               }
               if (N1 < Men)
               {
                   Men=N1;
               }
           }
               d++;
               Cont=Cont+N1;
       }

   }
   printf("El numero mayor es %d y el menor es %d. \n La media es: %d.", May, Men, (Cont/d));
}


Sin embargo, me doy cuenta que sólo compara 2 valores y los demás no. Después de buscar un rato en la web, encontre una técnica para encontrar los números mayores y menores, y es inicializar los 2 valores de mayor y menor con un valor mínimo y uno más grande, respectivamente. Me explico, este es el programa con esa técnica, y funciona.


#include <stdio.h>

int main()
{
   int N1=1, May=0, Men=9999999, d=1, Cont=0;
   while (N1 != 0)
   {
       printf("Inserta un numero: ");
       scanf("%d", &N1);
       if (N1==0)
           break;
       else
       {
           if (N1 > May)
           {
               May=N1;
           }
           if (N1 < Men)
           {
               Men=N1;
           }
           d++;        
           Cont=Cont+N1;
       }
   }
   printf("El numero mayor es %d y el menor es %d. \n La media es: %d.", May, Men, (Cont/d));
}


El problema es que no entiendo por qué el primero no funciona y el segundo sí, espero que alguien me pueda orientar.

Gracias de antemano.
#15
Muchísimas gracias por tu ayuda, mira que lo he solucionado, al menos parcialmente.

El problema era en el segundo y último read(), ya que no me detectaba la pulsación o algo así, y los cambie ambos por readln() y ahora sí me lo detectan; viene otro problema, al principio, que pongo:

#
write('Duracion de la llamada (0 para terminar): ');
readln(Dur);
write('Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local : ');
read(Tipo);


En la primera parte, que si pongo 0 se debe terminar el bucle, cuando inserto el 0, en vez de pararlo automáticamente, me pregunta por la otra variable, y entonces ya para el bucle, y quisiera saber como evitar eso.

Muchas gracias.

PD: Uso FreePascal como compilador (si a eso te refieres, soy algo novato en el tema).

#16
Me encuentro realizando el siguiente ejercicio:

CitarAñadir al programa anterior lo necesario para que clasifique las llamadas en Nacionales (N), Provinciales (P) y Locales (L) y realizar los mismo cálculos que antes para cada tipo de llamada (duración y numero de llamadas Nacionales, duración y numero de llamadas Provinciales y duración y numero de llamadas Locales). El programa también debe solicitar, después de presentar los resultados, si se desea realizar de nuevo todo el proceso anterior.

El resultado debe ser similar a esto:

Introduzca la duración de la llamada en minutos (0 para terminar): 5
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p

Introduzca la duración de la llamada en minutos (0 para terminar): 15
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: n

Introduzca la duración de la llamada en minutos (0 para terminar): 20
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: l

Introduzca la duración de la llamada en minutos (0 para terminar): 40
Introduzca el tipo de llamada. N:Nacional, P:Provincial, L:Local: p

Introduzca la duración de la llamada en minutos (0 para terminar): 0



-Especificación llamadas Nacionales, Provinciales y Locales-

El numero de llamadas nacionales a sido: 1 y su duración: 15.00 minutos.
El numero de llamadas provinciales a sido: 2 y su duración: 45.00 minutos.
El numero de llamadas locales a sido: 1 y su duración: 20.00 minutos.

-Totales-

Numero de llamadas: 4
Duración total: 80.00 minutos.
Duración media: 20.00 minutos.

Desea continuar para realizar otra lista de llamadas? S/N: n

Todo lo llevo perfecto, sólo que en la última parte, que pregunta si desea continuar, si pongo n o N, se vuelve a ejecutar el bucle y nunca acaba, y no sé por qué.

Les dejo el código estructurado que llevo hasta ahora en el siguiente enlace.

http://pastebin.com/09M7Fxyc

Dejo el link ya que el código es demasiado extenso y es mejor estructurarlo en un pastebin.

Gracias de antemano.
#17
Hola, antes que nada quiero agradecer por toda la ayuda que antes me ha brindado la comunidad de elhacker.net y estoy aquí de nuevo pidiendo su ayuda para otro problema.

Mi problema es que, primero que nada, me descargué Wifiway 2.0.1 para auditar redes en mi SAMSUNG N150 NetBook con Atheros AR9285, lo instale en un USB según un tutorial que encontré en la red donde los pasos eran que había que copiar todo el contenido del USB en la memoria recién formateada, después en la carpeta boot se encontraba un archivo llamado bootinst.bat el cual hacía que se sobreescribiera el MBR del USB para que arranque Wifiway nada más; hasta aquí, todo bien, lo instalé en un USB Kingston de 1 GB para probar, inicié y todo perfecto, pude auditar, inyectar, etc. todo correcto, pero ahora me encuentro con problemas haciendo todos los mismos pasos, en este caso, con una memoria Kingston de 4 GB modelo DT101 G2 (azul), hago todos los pasos correctamente y me dispongo a iniciarlo en mi PC (la misma que anteriormente ya había arrancado) pero ahora en este caso después de que sale el BIOS me aparece un mensaje en la esquina superior izquierda diciendo "Missing Operating System" y de ahí ya no pasa nada hasta que lo apago (sólo sucede con el USB 4 GB insertado). No sé qué mas hacer puesto que ya me había funcionado perfectamente.

El USB funciona bien, no tiene problemas y es relativamente nuevo.

Si alguien sabe que más hacer, se lo agradecería mucho.

Gracias de antemano.
#18
Hola, antes que nada quiero agradecer por toda la ayuda que antes me ha brindado la comunidad de elhacker.net y estoy aquí de nuevo pidiendo su ayuda para otro problema.

Mi problema es que, primero que nada, me descargué Wifiway 2.0.1 para auditar redes en mi SAMSUNG N150 NetBook con Atheros AR9285, lo instale en un USB según un tutorial que encontré en la red donde los pasos eran que había que copiar todo el contenido del USB en la memoria recién formateada, después en la carpeta boot se encontraba un archivo llamado bootinst.bat el cual hacía que se sobreescribiera el MBR del USB para que arranque Wifiway nada más; hasta aquí, todo bien, lo instalé en un USB Kingston de 1 GB para probar, inicié y todo perfecto, pude auditar, inyectar, etc. todo correcto, pero ahora me encuentro con problemas haciendo todos los mismos pasos, en este caso, con una memoria Kingston de 4 GB modelo DT101 G2 (azul), hago todos los pasos correctamente y me dispongo a iniciarlo en mi PC (la misma que anteriormente ya había arrancado) pero ahora en este caso después de que sale el BIOS me aparece un mensaje en la esquina superior izquierda diciendo "Missing Operating System" y de ahí ya no pasa nada hasta que lo apago (sólo sucede con el USB 4 GB insertado). No sé qué mas hacer puesto que ya me había funcionado perfectamente.

El USB funciona bien, no tiene problemas y es relativamente nuevo.

Si alguien sabe que más hacer, se lo agradecería mucho.

Gracias de antemano.
#19
Juegos y Consolas / Re: Crackear Simulador
14 Marzo 2010, 04:05 AM
No se puede hacer creer al programa que esta instalado y funcionando el hardware requerido?

No soy nada experto en el tema, solo opinion.
#20
Metele un troyano y ya esta.