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 - K-YreX

#391
Ya llevas varios mensajes en el foro por lo que deberías empezar a aplicar las normas básicas como poner tu código entre etiquetas de Código GeSHi y aplicar unos mínimos de orden como no poner un código con más líneas en blanco entre medias que las que tienen algo de código. Si sigues sin hacer caso, llegará un día que nadie te ayude...

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

int main (){
   int Suma;
   int Resta;
   int Multiplicacion;
   int Division;
   
   //valores de la suma
   int a;
   int b;
 
   int valoressum = a + b;
   
   //valores de la resta
   
   int c;
   int d;
   
   int valoresresta = c - d;
   
   cout<<"Menu"<<endl<<"Que operacion desea realizar?"<<endl<<"1. Suma"<<endl<<"2. Resta"<<endl<<"3. Multiplicacion"<<endl<<"4. Division"<<endl;
   
   
   //suma
 
   cin>>Suma;
   
   if (Suma = 1){   
      cout<<"Digite 2 valores"<<endl;
         cin>>a;
         cin>>b;
   }
   
   if (valoressum = a + b)
   {
      cout<<"El resultado es"<<endl<<valoressum<<endl;
   }
   
   //resta

   cin>>Resta;
   
   if (Resta = 2){
      cout<<"Digite 2 valores"<<endl;
         cin>>a;
         cin>>b;
   }
   
   if (valoressum = c - d)
   {
      cout<<"El resultado es"<<endl<<valoresresta<<endl;
   }

   return 0;
}

Ese código es un auténtico caos... Sobran variables por todos los lados, hay operaciones que no tienen sentido, se utilizan variables que no poseen ningún valor (poseen basura), las condiciones de los <if> están mal implementadas y además no tienen ningún sentido.
Mi humilde opinión es que debes buscar un rato para dedicarle a la programación y empezar desde el principio ya que veo muchos errores de un nivel muy básico.

No sirve de nada que intentes hacer un <while()> cuando estoy viendo que el propio planteamiento del programa está mal pensado y por ende, mal implementado.

Lo que tienes que hacer en ese programa, olvidándonos del bucle, es:
  • Crear dos variables: numero1 y numero2 que serán los que almacenen los valores del usuario para los operandos.
  • Crear una variable: resultado que será la que almacene el resultado de la operación que elija el usuario.
  • Crear una variable: opcion que será la que guarde la operación a realizar (ej: 1 = suma, 2 = resta, 3 = multiplicación, etc).

    Ahora el proceso es sencillo:
  • Mostrar en un mensaje las posibles operaciones y pedir al usuario que elija una de ellas (y guardarla en la variable <opcion>).
  • Pedir al usuario que introduzca dos operandos (y guardarlos en <numero1> y <numero2>).
  • Implementar unos condicionales <if()> para comprobar la opción elegida y según la opción asignar a la variable <resultado> el resultado de realizar la operación correspondiente.
  • Mostrar el resultado.

    En pseudocódigo sería algo como esto:

    INICIO
        PEDIR "Elige una operacion: " opcion
        PEDIR "Introduce el primer operando: " numero1
        PEDIR "Introduce el segundo operando: " numero2

        SI opcion == 1 ENTONCES // suponiendo que 1 es la suma
            resultado = numero1 + numero2
        SINO SI opcion == 2 ENTONCES // suponiendo que 2 es la resta
            resultado = numero1 - numero2
        // asi con cada una de las posibles operaciones
        FIN SI

        MOSTRAR "El resultado de la operacion es: " + resultado
    FIN


    Intenta hacer eso. Si tienes algún problema en alguna parte concreta siempre puedes poner un mensaje con el código (repito: entre etiquetas de Código GeSHi) y explicando tu problema o duda para que te ayudemos. Cuando tengas eso conseguido, será más fácil ayudarte con lo del bucle. De momento, vamos con lo fácil y después vamos agregando cosas nuevas.

    PD: En C/C++ las comparaciones se realizan con ==, el operador = es el de asignación:
  • a == b -> Comprueba si a es igual a b
  • a = b -> Asigna el valor de b a la variable a
#392
Programación C/C++ / Re: Duda sobre scanf
16 Noviembre 2019, 03:27 AM
Si no estás seguro del tipo de dato que va a introducir el usuario por teclado deberías usar la función <fgets()> y almacenar la entrada en un <char[]> para después validarlo tú internamente.
#393
Para próximas consultas, coloca el código entre etiquetas de Código GeSHi.

La parte del filtro está todo bien. La única mejora que se me ocurre es guardar las condiciones en una variable de tipo <bool> para no tener que realizar las comprobaciones dos veces (una en el <if> y otra en el <while>).
Código (cpp) [Seleccionar]

int lado;
bool ladoValido;
do{
   cout << "Dame valor del numero (par entre 4 y 300): ";
   cin >> lado;

   ladoValido = (lado < 4 || lado > 300 || lado % 2 != 0);
   if(!ladoValido)
       //...
}  while(!ladoValido);


Ahora imagina que <lado> vale 4. El resultado se vería algo así:

+ + + -
+ + - *
+ - * *
- * * *

Ahora tienes que encontrar una relación entre ese dibujo y el valor de <lado>. Por ejemplo:

Fila 0: (lado - 1) veces el símbolo '+' y un '-'
Fila 1: (lado - 2) veces el símbolo '+', un '-' y un '*'
Fila 2: (lado - 3) veces el símbolo '+', un '-' y dos veces el '*'
Fila 3: (lado - 4) veces el símbolo '+', un '-' y tres veces el '*'

Ahora hay que intentar generalizarlo para poder hacer un programa que se adapte.
La parte del '+' ya la tenemos: para la fila i, (lado - i - 1) veces el símbolo '+'.
La parte del '-' también porque siempre es, un símbolo '-' cuando se completan los '+'. Es decir, para cada fila i, un '-' en la posición (lado - i).
La parte del '*' podemos verlo como desde (lado - i) hasta (lado - 1).

Entonces quedaría algo así:

INICIO
   PARA i := 0 HASTA lado - 1 HACER // para cada fila
       PARA j := 0 HASTA lado - i - 2 HACER
           MOSTRAR '+'
       FIN PARA
       MOSTRAR '-'
       PARA k := j HASTA lado - 1 HACER // al terminar el PARA anterior, j vale (lado-i)
           MOSTRAR '*'
       FIN PARA
   FIN PARA
FIN


Intenta codificar ese pseudocódigo en C++ y si tienes problemas puedes poner tu código para que te ayudemos pero recuerda, entre etiquetas de Código GeSHi.
#394
Pretendes que te den la solución en un plazo de unas horas por no haber intentado solucionarlo antes y encima... te has parado a ver tu propio mensaje?? Un código donde faltan índices que no se ven, con la mitad del texto en cursiva, la otra mitad tachado, sin etiquetas de Código GeSHi y donde es casi imposible leer nada...

Yo diría que el fallo que se puede ver a priori es que están usando dos funciones que reciben un array y una matriz de <float> y en el <main> has creado dos variables de tipo <float> sin más que son las que estás pasando a la función.

#395
En este caso se trata del cálculo de números narcisistas por lo que el número tendrá mínimo 1 dígito. Entonces la "potencia" siempre sería de exponente 1 como mínimo por lo que no hay que tener en cuenta exponentes negativos o 0.
#396
Cita de: mortimernox en 12 Noviembre 2019, 11:48 AM
El ejercicio dice asi.

calcular la nota parcial y mostrará tanto la nota final como la nota final ponderada tal y como se muestra a continuación. Pedirá el peso que tiene el parcial en la nota final, la nota sobre 100 que obtenido el estudiante y si tiene puntos extra o no. Los puntos extra se sumarán a la nota del examen hasta llegar a 100 que será el valor máximo para este concepto. Es decir, si alguien tiene una nota de 95 y 10 puntos extra, el valor que obtendrá será 100 y no 105 que sería lo que realmente le correspondería. La nota final ponderada la calculará multiplicando la nota por el peso entre 100:

lo que ido haciendo  a sido sacar esos datos por el metodo Scanner, pero luego necesito hacer unos calculos con ellos, si tienes razon no cambiado el void para que haga el return. el problema es sacar el dato del if bueno uno de ellos, poco a poco vamos..
Bueno lo que yo entiendo de esto es que te piden el porcentaje de la nota final que vale dicho examen (por ejemplo un 50%), la nota de dicho examen (que si es 100 pues la nota final sería 50 porque faltarían otros exámenes o cosas con el otro 50% de la nota y unos puntos extra que se pueden sumar al examen hasta llegar a 100.

Podrías pedir al usuario que introduza si tiene o no puntos extra y después si sí que los tiene pedirle la cantidad exacta o directamente pedir la cantidad y quien no tenga puntos extra que ponga 0.

INICIO
    PEDIR porcentaje
    PEDIR notaExamen
    PEDIR puntosExtra
    notaExamen = notaExamen + puntosExtra
   
    SI notaExamen > 100 ENTONCES
        notaExamen = 100
    FIN SI
   
    notaFinal = notaExamen * porcentaje / 100
    MOSTRAR notaFinal
FIN

Este sería el pseudocódigo si pides directamente la cantidad de puntos extra. El porcentaje se introduce en tanto por ciento (0 - 100) para dividirlo por 100 en la última línea. Si se introduce en tanto por uno (0 - 1) entonces no hay que dividir por 100.


INICIO
    PEDIR porcentaje
    PEDIR notaExamen
    PEDIR hayPuntosExtra

    SI hayPuntosExtra ENTONCES
        PEDIR puntosExtra
        notaExamen = notaExamen + puntosExtra
    FIN SI

    SI notaExamen > 100 ENTONCES
        notaExamen = 100
    FIN SI

    notaFinal = notaExamen * porcentaje / 100
    MOSTRAR notaFinal
FIN

Y este sería el pseudocódigo para la versión en la que primero preguntas si hay o no puntos extra. El condicional para corregir los números superiores a 100 lo estoy poniendo después en ambos casos por si alguien introduce como <notaExamen> un número mayor que 100, para que la corrección también se aplique.

Intenta pasar ambos pseudocódigos a Java porque así es como aprendes. Si miras códigos ya hechos no sirve de nada ya que lo entenderás según lo vayas leyendo pero el día que lo hagas tú, te aparecerán errores y no sabrás de qué son.
Y si tienes algún problema para pasar alguno de los pseudocódigos siempre puedes preguntar por aquí poniendo los códigos entre etiquetas de Código GeSHi.
#397
Bueno pues digamos que los nombres de las clases/métodos no son muy descriptivos.
Tampoco sé cómo es la fórmula que necesitas para calcular la media.
No puedes hacer un <return> a un método de tipo <void> (<void> significa justamente que no devuelve nada)
Y la línea del <else> sobra un poco (bastante) yo creo.

Y por favor, los códigos entre etiquetas de Código GeSHi
#398
Cita de: CalgaryCorpus en  7 Noviembre 2019, 22:34 PM
El enunciado no indica que los vectores que se ingresan estan ordenados, que parece ser asumido por las soluciones presentadas.
Cierto. Fue una cosa que di por supuesto sin darme cuenta.
Mi implementación necesitaría ordenar primero cada uno de los vectores y después mezclarlos en uno.
#399
Pon el código entre etiquetas de Código GeSHi (en lenguaje C).

La solución en pseudocódigo sería algo así:

lista1 : array[n]
lista2 : array[m]
listaMezcla : array[n+m]
INICIO
    PARA i := 0 hasta n-1 HACER
        PEDIR lista1[i]
    FIN PARA
    PARA i := 0 hasta m-1 HACER
        PEDIR lista2[i]
    FIN PARA
   
    i := 0
    j := 0
    k := 0
    MIENTRAS i < n && j < m HACER // Mientras ninguna de las lista llegue al final...
        SI lista1[i] < lista2[j] ENTONCES // Si el valor actual de lista1 es menor...
            listaMezcla[k++] := lista1[i] // ...guardas dicho valor e...
            i := i + 1 // ...incrementas el valor del indice que recorre la lista1
        SINO // Si el valor actual de la lista2 es menor o igual
            listaMezcla[k++] := lista2[j] // ...guardas dicho valor e...
            j := j + 1 // ...incrementas el valor del indice que recorre la lista2
        FIN SI
    FIN MIENTRAS

    MIENTRAS i < n HACER // Si lista 1 es mas larga, terminas de meterla
        listaMezcla[k++] := lista1[i]
    FIN MIENTRAS

    MIENTRAS j < n HACER // Si lista 2 es mas larga, terminas de meterla
        listaMezcla[k++] := lista2[j]
    FIN MIENTRAS
FIN
#400
Si te paras a leer tu mensaje verás que el código está modificado y se han agregado listas en las x entre corchetes [], letra cursiva en las i entre corchetes [], negritas en las b entre corchetes, etc.

Para evitar todos estos problemas mete tu código entre etiquetas de Código GeSHi seleccionando el lenguaje adecuado (C++ en tu caso). Así además se numerará cada línea de tu código para poder referirnos a una línea concreta.

Los errores los puedes poner sin etiquetas o entre etiquetas de code sin especificar ningún lenguaje.

Que quede algo así:
Código (cpp) [Seleccionar]

#include <iostream>
//...
// TU CODIGO C++



Etiqueta code sin especificar lenguaje para los errores