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

#601
No sé exactamente a qué se debe ese error, por lo que he leído puede ser un problema debido a que estés trabajando con varios ficheros y tengas un error en la orden de compilación.

Lo que sí puedo decirte es que estás guardando una cadena de <char> en unos punteros a <char> sin reservar memoria y después estás liberando esa memoria (memoria que no has reservado)... Espero que te sirva de ayuda.

Suerte :-X
#602
Programación C/C++ / Re: Dev-C++
21 Abril 2019, 20:22 PM
Lo primero coloca tu código entre etiquetas de código GeSHi (encima del cuadro de texto tienes un menú desplegable para elegir el lenguaje en el que está el código)...


A ver tienes un par de errores y unas cuántas mejoras que puedes hacer.
Vamos a ver los errores que tienes:
  • Antes de las declaraciones de las funciones <menu()>, <suma()> y <resta()> tienes un punto y coma que no debería estar ahí.
  • En la implementación de la función <menu()> te sobra el punto y coma antes del corchete. Cuando declaras prototipos las funciones terminan en punto y coma, pero cuando implementas el cuerpo de la función, no se pone punto y coma.
  • En la función <menu()> tienes escrito <Printf()> en lugar de <printf()>. En C/C++ hay distinción entre minúsculas y mayúsculas, es decir; la función <sumar()> no es la misma que la función <Sumar()> y la variable <numero> no es la misma que la variable <Numero>.
  • En C/C++ las comparaciones se hacen con dos iguales "==" y las asignaciones con un igual "=". En el <while> de <menu()> estás usando un solo igual por lo que estás asignando a respuesta el valor 1 y entonces siempre se considera la condición como verdadera (ya que se entiende 0 = false y 1 = true).
  • No haces operaciones sobre la variable <res>. Entonces el resultado siempre se muestra 0.

    Y ahora vamos a ver algunos consejos:
  • No usar la librería <conio.h>. La función <getch()> de <conio.h> se puede sustituir por <getchar()> de <stdio.h> (para C) o <cin.get()> de <iostream> para C++
  • No usar variables globales innecesarias.
  • Las funciones es mejor que retornen el resultado en vez de mostrarlo porque a veces querrás calcular muchas sumas y no querrás que todas se muestren por pantalla. Hay que darle generalidad a las funciones para poder reutilizarlas.

    Suerte :-X
#603
Como bien has comentado, lo estás interpretando mal. Lo primero que debemos tener en cuenta es un poco de teoría.
  • ¿Cómo funciona una cola?
    Una cola es un contenedor de tipo FIFO (first in, first out) o lo que es lo mismo "el primero en entrar es el primero en salir". Es decir, es como una lista en el que las inserciones se hacen por un extremo y las expulsiones, por el otro. Pongamos un ejemplo de una cola en la que queremos meter los números del 1 al 5 en orden ascendente:

    Cola1: 1
    Cola2: 2 1
    Cola3: 3 2 1
    Cola4: 4 3 2 1
    Cola5: 5 4 3 2 1

    Y ahora vamos a sacar los elementos de la cola. Como hemos dicho antes se sacan por el extremo opuesto, entonces en este caso, por la derecha:

    Expulsion1: 1    Cola: 5 4 3 2
    Expulsion2: 2    Cola: 5 4 3
    Expulsion3: 3    Cola: 5 4
    Expulsion4: 4    Cola: 5
    Expulsion5: 5    Cola: (vacia)


    Teniendo esto claro, pasamos al código que tienes:
  • El puntero <siguiente> de <ultimo> siempre debe apuntar a NULL
  • Las inserciones siempre se hacen en <primero>. Entonces para una nueva inserción se hace siguiendo los siguiente pasos:
    1. Crear nodo nuevo.
    2. <siguiente> del nodo nuevo apunta al mismo nodo que <primero>
    3. <primero> apunta al nuevo nodo.
  • Las expulsiones se hacen siempre del último nodo. Y los pasos serían los siguientes:
    1. Llegamos hasta el penúltimo elemento.
    2. Borramos la memoria del último elemento.
    3. Hacemos que <ultimo> apunte al penúltimo.
    4. Hacemos que <ultimo->siguiente> apunte a NULL.

    Creo que no me he dejado nada; si no es así, pueden decírmelo para corregir lo que sea necesario.
    Suerte :-X
#604
No entiendo muy bien la pregunta, pero imagino que quieres controlar que no se introduzcan otros caracteres que no sean números. Para ello debes usar un filtro <do while>.
Por ejemplo un filtro para controlar que se introduzca un número entre [0,9] sería:
Código (cpp) [Seleccionar]

do{
    cout << "Introduce un numero [0,9]: ";
    cin >> respuesta;
}   while(respuesta < 0 || respuesta > 9);


PD: Coloca tu código entre etiquetas de código GeSHi (hay un desplegable encima del cuadro de texto para elegir el lenguaje deseado). :-X
#605
No se hacen tareas. Si quieres saber cómo quedaría el código, intenta hacerlo tú y cuándo no consigas avanzar, muestra tu código para que podamos ayudarte a seguir.
#606
Como te han dicho, tanto la variable <nombrecliente> de <pedido> como <direccion> de <servicio> deberían ser arrays unidimensionales ya que solo vas a guardar una cadena de caracteres en cada uno de ellos.

Además dentro de <servicio> estás declarando dos <pedido> cuando creo que sólo quieres declarar uno. Un objeto de tipo <pedido> lleva internamente dos variables: el nombre del cliente <nombrecliente> y el número del pédido <numpedido>. No tiene sentido que vuelvas a crear dos objetos <pedido> en <servicio>. Y si era eso lo que querías hacer y en cada <servicio> guardar dos <pedidos>, te recomiendo cambiarles el nombre porque no se corresponden con la realidad.

Aparte de un par de <fflush(stdin)> que no se recomiendan ya que la función <fflush()> se ha diseñado para limpiar el buffer de salida <stdout>. El comportamiento con el buffer de entrada <stdin> no está definido por lo que puede ser indeterminado.

PD: Coloca tu código entre etiquetas de código GeSHi (hay un menú desplegable encima del cuadro de texto para seleccionar el lenguaje apropiado, C++ en este caso) para recibir más ayuda. Ya que la falta de etiquetas provoca una mala interpretación del código además de que es más complicado de ver y corregir.

Suerte :-X
#607
Programación C/C++ / Re: Programación C
7 Abril 2019, 03:19 AM
Existan las que existan <printf()> toma cada parámetros como lo que es:

int power = 2;
int power(){return 5;};
printf("%d - %d", power, power()); // Salida: 2 - 5


int power = 2;
printf("%d", power()); // ERROR printf() espera una funcion llamada power() que no existe


int power(){return 5;}
printf("%d", power); // ERROR printf() espera una variable power que no existe


No sé si con esto ya queda más claro
#608
Programación C/C++ / Re: Programación C
7 Abril 2019, 03:09 AM
Porque así se ha traducido en la compilación del programa. He editado mi mensaje anterior con otra explicación un poco más concreta pero sin entrar demasiado en materia.
#609
Programación C/C++ / Re: Programación C
7 Abril 2019, 03:04 AM
Al estar escrito con unos paréntesis, el compilador sabe que es una función.

int power; // variable power de tipo entero
int power(); // funcion power que retorna un entero


Más que el compilador, el ensamblador, cuando traduce el programa de C a ensamblador ya traduce las instrucciones correspondientes para llamar a la función correspondiente. Eso puedes verlo si te adentras un poco más en las fases de compilación que sufre un código fuente y los ficheros que se generan en cada fase.
#610
A lo que me refiero es que qué función de las que ya existen o que método hay para asignar un valor a un <WINDOW *> ya que desconozco su uso, entonces no puedo ayudarte más específicamente.