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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 ... 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 [96] 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 ... 161
951  Programación / Programación C/C++ / Re: Sumar Matriz 4x6 usando Do While en: 13 Marzo 2017, 20:20 pm
Soluciona q, como te he dicho, y el programa funcionará.
952  Programación / Programación C/C++ / Re: Sumar Matriz 4x6 usando Do While en: 13 Marzo 2017, 15:51 pm
q está mal, no tiene inizializado a 0 ninguno de sus índices antes de empezar a sumar por lo tanto siempre dará valores extraños.
953  Programación / Programación C/C++ / Re: Duda con respecto a puntero a estructura en: 9 Marzo 2017, 18:00 pm
Creo que info es un typedef de char.
954  Programación / Programación C/C++ / Re: Error en Ciclo "For" (C) en: 8 Marzo 2017, 20:20 pm
Sácalo de la función y conviértelo en global, así lo tendrás visible para todas las funciones.
955  Programación / Programación C/C++ / Re: Error en Ciclo "For" (C) en: 8 Marzo 2017, 19:00 pm
Algo así (solo se muestran las modificaciones al original):
Código
  1. typedef struct pedido{
  2.    char nombrecliente[20],domicilioentrega[20];
  3.    tfecha fechadepedido;
  4.    int esValido; // <-- inclusión
  5. }tpedido;
  6.  
  7. void inicializar_lista(tpedido lista[]) { // <-- Nueva función. Debe ser el primer código que se
  8.    int i;                                //         ejecute dentro de main(), después de la
  9.                                          //         declaración de las variables
  10.    for(i=0; i<5; ++i)
  11.        lista[i].esValido = 0;
  12. }
  13.  
  14. void cargarvectorpedidos(tpedido V[]){
  15.    int cantidad, i;
  16.    tpedido aux;
  17.  
  18.    printf("Ingrese la cantidad de encomiendas a cargar \n");
  19.    fflush(stdin);
  20.    scanf("%d", &cantidad);
  21.  
  22.    for(i=0; i<cantidad; i++){
  23.        printf("\nIngrese los datos para la encomienda %d:\n",i+1);
  24.        cargarpedido(&aux);
  25.        V[i]=aux;
  26.        V[i].esValido = 1; // <-- inclusión
  27.        system("cls");
  28.    }
  29. }
  30.  
  31. void mostrarvectorpedidos(tpedido V[]) {
  32.    int j;
  33.  
  34.    system("pause");
  35.    system("cls");
  36.    printf("\n Listado de encomiendas:\n");
  37.  
  38.    for(j=0; j<5; j++) {
  39.        if(V[j].esValido) // <-- inclusión
  40.            mostrarpedido(V[j]);
  41.        }
  42.    }
  43.  
  44.    system("pause");
  45.    system("cls");
  46. }
  47.  
  48.  
  49. int main()
  50. {
  51.    tpedido X[5];
  52.    int op;
  53.  
  54.    inicializar_lista(X); // <-- Llamada a la nueva función
  55.    while(op!=4)
  56.    // ...
  57. }
956  Programación / Programación C/C++ / Re: Error en Ciclo "For" (C) en: 8 Marzo 2017, 12:53 pm
¿Has visto listas enlazadas?
Lo que planteas es un problema que se resuelve con ellas.

Si no las has visto y solo puedes usar arrays tendrás podrías resolver el problema poniendo un campo más en tu estructura diciendo si el registro es útil. Cada vez que incluyas un registro buscas el primero que no sea útil (esté vacío) y lo incluyes allí. Para visualizar repasas toda la lista y solo muestras los marcados como útiles. Para borrar solo debes marcar el registro de interés como inútil.
También podrías hacer lo mismo sin ese campo pero creando un array paralelo, que tendrán que ser recorridos al mismo tiempo, en el que solo guardaría la información de si el registro es válido.
957  Programación / Programación C/C++ / Re: Cuando hay espacios en el ingreso del nombre el programa termina en: 8 Marzo 2017, 12:23 pm
Supongo que, al igual que scanf, cin usa los espacios en blanco como separadores de datos. Cuando encuentra uno cree que ha llegado al final de la cadena esperada.
En C++, creo que para adquirir una cadena con espacios es con
Código
  1. std::getline(std::cin, mi_cadena);
958  Programación / Programación C/C++ / Re: [c++11] ¿Como pasar n argumentos a una función? en: 8 Marzo 2017, 12:17 pm
Lo más sensato sería que representaras el sensor en tu código, así, incluso, te sería más fácil depurar.

C, y por ende C++ son lenguajes creados para hablar con la máquina pero muchas veces, sobre todo quien trabaja a más alto nivel olvida o desconoce ese potencial del lenguaje. En tu caso deberías usar los bitfields.

En tu ejemplo, para representar el registro CONFIG_0 podrías hacer así:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef enum {
  5.    DIVIDE_BY_2,
  6.    DIVIDE_BY_4,
  7.    DIVIDE_BY_8,    /* Default value */
  8.    DIVIDE_BY_16,
  9.    DIVIDE_BY_32,
  10.    DIVIDE_BY_64,
  11.    DIVIDE_BY_128,
  12.    DIVIDE_BY_256
  13. } prescaler;
  14.  
  15. struct {
  16.    unsigned TX_FREQ_DIV : 3;
  17.    unsigned NUM_TX : 5;
  18. } CONFIG_0;
  19.  
  20. /* Aquí otros registros
  21. struct {
  22.     unsigned <campo> : <tamaño en bits>;
  23.     unsigned <campo> : <tamaño en bits>;
  24.     ...
  25. } <nombre del registro>
  26.  
  27. ...
  28.  
  29. */
  30.  
  31. int main() {
  32.    CONFIG_0.TX_FREQ_DIV = DIVIDE_BY_8;
  33.    CONFIG_0.NUM_TX = 5;
  34.  
  35.    puts("CONFIG_0 register status");
  36.    puts("------------------------");
  37.    printf("TX_FREQ_DIV : %u\n", CONFIG_0.TX_FREQ_DIV);
  38.    printf("NUM_TX      : %u\n", CONFIG_0.NUM_TX);
  39. }
  40.  
959  Programación / Programación C/C++ / Re: Problema con programa en lenguaje C en: 6 Marzo 2017, 14:04 pm
Ok. La construcción está mal hecha. Intentas anidar expresiones y eso no está permitido,  hasta donde yo sé.

Después intentas hacer que scanf recoja y guarde un dato numérico cuando tratas con una cadena. El argumento [ indica a scanf que el dato va a ser una cadena. Esa d al final solo indica a scanf que en el buffer va a haber una d al final de todo que debe ser ignorada.

Usa otra técnica.

Por ejemplo recoge una cadena de X caracteres y después mira si tiene más de 1 caracter, si es así da un mensaje de error.
Después miras si ese carácter es un dígito, da un mensaje de error.
Al final tendrás el caracter para comparar con el if. O lo conviertes a un número y podrás usar un switch para facilitar futuras ampliaciones del menú.
960  Programación / Programación C/C++ / Re: Problema con programa en lenguaje C en: 6 Marzo 2017, 09:53 am
A ver, ¿qué intentaste decir con ese argumento del scanf?
Páginas: 1 ... 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 [96] 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines