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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6
1  Programación / Programación C/C++ / Re: necesito ayuda con este programa en: 21 Junio 2022, 11:08 am
Es cierto desde principio ya mezclas comandos de dos lenguajes. Te aconsejo que si necesitas resolverlo, este u otros, aplica el procedimiento correcto para hacer un programa y no vallas directo al codigo.

Saludos.
2  Programación / Programación C/C++ / Re: necesito ayuda con este programa en: 21 Junio 2022, 07:04 am
Hola, un problema es que en la linea 70 es g_total la segunda vez, no seria guion medio sino guion bajo.

Igual g_total entiendo que que es la suma de los totales de cada 'factura', por ende no deberia ser una variable dentro de la estructura. si lo que quieres es solo mostrarlo puedes crear en main() (o en un pequeño procedimiento nuevo) una variable de tipo float; es ese caso seria asi:

Código:
int main{
system("cls");
int n;
float g_total=0;   ///agregar esto
-----------
for(int i=0;i<n; i++){
ver(&productos[i]);
    }
for(int i=0;i<n; i++){      ///agregar esto hasta terminar
g_total=g_total+productos[i].total);
    }
cout<<"el gran total es: "<<g_total<<endl;


Tu programa si pones bien la primer sugerencia total y g_total de cada factura son iguales.

*Ahora que vuelvo a ver tu programa y creo que lo que queres hacer es por ejemplo si dos facturas son del mismo productos sumar el total de las dos. Si ese es el caso ese dato no tiene sentido que lo guarde porque los podes obtener sumando los totales cuando quieras sino podria haber incongruencia en los datos, es decir que cada vez que agreges una factura tienes que actualizar g_total en cada factura con ese producto. Ademas aunque en caso de que controles que no suceda alguna incongruencia en los datos, no tiene ninguna funcionalidad tenerlo asi, por eso lo que puse seria una manera de hacerlo.

Saludos!  :) :)
3  Programación / Programación C/C++ / Re: Agregar 5 opciones porfavor: en: 21 Junio 2022, 06:32 am
Hola, se que todo el proyecto parece largo y algo tedioso pero es un trabajo tuyo y lo que pides, poco o mucho, es hacerlo. Por mi parte deberias proponer alguna idea de algoritmo o analisis en cada caso para ayudarte si la necesitas.

Saludos!
4  Programación / Programación C/C++ / Re: Ayuda en: 21 Junio 2022, 04:00 am
Hola:
- Esto puede ser el problema que queres decir que solo traduce una palabra y no mas; despues que hace la opcion de añadir o traducir la variable "op" vale 1 o 2, y aunque decidas traducir otra palabara poniendo "s", op va a valer 1 o 2 y como no cumple la condicion de la linea 32 no entra en ese bucle nunca mas. Tenes que reiniciar "op" en 0 por ejemplo en la linea 42.

- En el procedimiento traducir() no tiene sentido un 'switch' porque elija traducir de una manera u otra hace lo mismo (llama al mismo metodo con el mismo parametro.
En vez de:
Código:
switch (op) {
  case 1:
   tradu(op);
  break;
  case 2:
      tradu(op);
  break;
 }

pone solo esto

Código:
tradu(op)

- Nunca traduce una 'oracion' porque lo hiciste para solo traducir por palabras. Tendria que hacer alguna manera de que ingrese una oracion y que compares palabra por palabra. Puede que hallas agregado una 'oracion' y busques esa exactamente (todas las letras, espacios o cualquier caracter coincida); ahi si funcionaria pero no es para nada practico y no es coherente. *

- Por el tema de la repeticion de palabras es pedir que palabra queres introducir y en que idioma esta, entonces busca en la correspondiente variable de la estructura. Si esta no la agregas, y si no esta como ya sabes la palabra en un idioma lo agregas y pedis que ingrese en el otro idioma esa palabra.

Y cuando busques una palabra para traducir deberias fijarte si hay mas palabras en el "diccionario", para eso deberia usarse la variable lleno; o no seria necesario que exista esa variable porque preguntas por alguna cadena (eng o esp) si es nulo (creo que todos las cadenas son nulas por defecto sino usarias "lleno" solamente) termina de recorrer el diccionario. En este caso para hacer eso, cuando recorres en la condicion del 'for' agregas la condicion trad[n].eng==NULL. **

Un consejo: no te obsesiones con usar condiciones; pensa si fueras a un ATM y te pregunte cada vez que ingrese a una opcion si desea seguir.
Es solo un consejo  ;)

*Si lo que quieres es traducir oraciones, seria algo bastante mas complejo, porque pensa que quieras traducir diferentes oraciones con las mismas palabras, tienen diferentes significados por ende las combinaciones posibles serias muchisimas y ademas traducidas. Si lo que quieres es hacer una programa realmente funcional, es un trabajo mucho mas dificil

**Aclaracion: viendo que usas la variable lleno en otro procedimiento quedaria mejor usar eso y no lo de NULL, pero tendrias un costo minimo de momoria inceseario.


Saludo!
5  Programación / Programación C/C++ / Re: Modificar busqueda binaria en: 2 Junio 2022, 21:27 pm
Ésta, -si fuese correcta, que depende de los valores iniciales de alto y bajo- no es efficiente como la búsqueda binaria, sino que degrada a busqueda lineal O(n)...

Si tienes razon! Me olvide de acotar que esa solucion no es eficiente por eso. No pude modificarla asi que muy bien aclarado, igual no es necesario ya.
Gracias dijsktra!

Este es el algoritmo referido:

Código:
hacer mientras (bajo <= alto)
    centro = (bajo + alto) / 2
    si (clave = array[centro])
        hacer mientras (centro < size)
            si (clave < array[centro])
                devolver centro
            centro = centro + 1
        Repetir
        devolver -1
    o si (clave < array[centro])
        alto = centro
    sino
        bajo = centro + 1
repetir

Saludos!

6  Programación / Programación C/C++ / Re: Modificar busqueda binaria en: 2 Junio 2022, 04:22 am
while (V[h]!= elem || (elem!=N-1 && V[h]==V[h+1]))  // <= B: Changes.

La solucion que planteaste seria la correcta ya que cumple el sentido de busqueda binaria exactamente.
Solo en la comparacion para verificar si estas en la ultima posicion, es "h" en vez de "elem". Si no hay valores mayores, "h" termina siendo igual a "N-1" cuando termina el ciclo y despues devuelve "h+1", que es igual al tamaño del arrreglo.

Saludos.


7  Programación / Programación C/C++ / Re: Modificar busqueda binaria en: 26 Mayo 2022, 19:30 pm
Esta seria otra manera

Código:
Hacer mientras (bajo < alto) //(cuando bajo=alto la busqueda llega al final)
    centro = (bajo + alto) / 2
    si(clave < array[centro])
        alto = centro //(no es -1 ya que se incluye a centro porque puede ser la soulcion tambien)
    sino
        bajo = centro + 1    
    fin si
si (clave<array[bajo]) //(al ser bajo=alto se puede usar cualquiera y es verdadero cuando existe solucion)
    devolver bajo
sino
    devolver -1; //(este caso solo sucede cuando bajo=size-1 y clave>=array[bajo], o sea cuando no existe solucion)

Este pseudocodigo esta generalizado para buscar el primer valor mayor a cualquier numero que utilices como dato de entrada. Es decir que no es necesario que ese numero este en el arreglo.

Si tenes como premisa que el dato de entrada es un numero que se encuentra en el arreglo, que creo que es este el caso que planteaste, seria asi

Código:
hacer mientras (bajo <= alto)
    centro = (bajo + alto) / 2
    si (clave = array[centro])
        hacer mientras (centro < size)
            si (clave < array[centro])
                devolver centro
            centro = centro + 1
        Repetir
        devolver -1
    o si (clave < array[centro])
        alto = centro
    sino
        bajo = centro + 1
repetir

La primera solucion de Serapis devuelve el indice donde esta la clave y no el siguiente mayor.
8  Programación / Programación General / Re: Problema del viajante de comercio - Branch and Bound en: 24 Mayo 2022, 18:37 pm
Mi malentendido fue que utilizas heurística y por ende no siempre necesariamente puede dar el resultado optimo.

Como corrección a la cantidad de ciudades que recorre en el caso de las 20 ciudades son 100 millones, 10^8 (2500000 por segundo aproximadamente).
Usando Code Blocks y con 4 núcleos de 3.0 GHz.
Usa la fuerza bruta para hacer cortocircuito, por eso visita bastante menos ciudades.

Como use programación lineal puedo comprobar que, sea cual sea el caso, obtiene el resultado optimo.
Aunque para determinar O(n) dependeria de los casos, por ende necesitaria probar con casos representativos para obtenerlo.
Sea cual sea O(n) al ser obtenido por casos representativos no seria exacto, por ende no define la relacion entre P y NP
9  Programación / Programación General / Re: Problema del viajante de comercio - Branch and Bound en: 21 Abril 2022, 16:31 pm
hola, hace tiempo que no me conecto por eso respondo ahora.

Tu que sigues el esquema de programación dimámica ya te habrá quedado claro que si para algo como 20 nodos empleas (pongamos por ejemplo), 1-4Gb. de RAM, para uno de 30 nodos, seguramente te subas a 15 o 30Gb. y probablemente no puedas asumir problemas con más de 50 nodos sin sacrificar por algún lado, porque la RAM precisa será inasumible....

Mi algoritmo no sigue el esquema de programacion dinamica, uso el esquema de programacion lineal. por ende es practicamente nulo el uso de RAM.
10  Programación / Programación General / Re: Problema de la mochila en: 22 Enero 2022, 00:16 am
Hola, si alguien quiere proponer una caso de tamaño hasta 100.

Cuando lo resuelva les paso los datos del resultado y tiempo.

Pueden ser los valores de entradas de magnitud similar a los que puse.

Si lo resuelven estaría bueno comparar resultados.
Páginas: [1] 2 3 4 5 6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines