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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [42] 43 44 45
411  Programación / Programación C/C++ / Re: (Consulta) Definición del operador << para streams en: 29 Noviembre 2015, 02:13 am
Jajaja. Un error lo tiene cualquiera :D Pero no he llegado a entender tu explicación D: No digo que esté mal explicada, solo digo que no sé como resuelve mi duda!
412  Programación / Programación C/C++ / Re: (Consulta) Definición del operador << para streams en: 29 Noviembre 2015, 02:02 am
He entendido por qué se debe retornar el objeto de flujo, pero no entiendo como tu respuesta resuelve mi duda :S Aun así, gracias por tu rápida respuesta :D

Por cierto, a lo mejor es que no entiendo/sé suficiente C++, pero ¿y esta estructura?

Código
  1. istream& >>(istream &in, UnaClase objeto)

Parece la estructura de sobrecarga de un operador, pero no tiene la keyword 'operator'. ¿Significa otra cosa?
413  Programación / Programación C/C++ / (Consulta) Definición del operador << para streams en: 29 Noviembre 2015, 01:04 am
Hola, muy buenas. En mi rato libre, quise mirar un poco el standard de C++. Una cosa de las que he mirado es los operadores definidos para los streams definidos en este (lo he mirado tanto en cplusplus como en el propio archivo de mi compilador MinGW.

Un ejemplo de lo que encontré en el archivo "ostream" es el siguiente:
Código
  1. __ostream_type& operator<<(long __n);

La duda es: ¿No necesita una clase o estructura en los parámetros del operador para ser correcto?

Bueno. Para intentar no tener que preguntar, he hecho el siguiente ejemplo:

Código
  1. #include <cstdio>
  2.  
  3. struct stream {
  4.    int null;
  5. };
  6.  
  7. stream& operator<< (int val);
  8.  
  9. int main() {
  10.    stream ostream = {0};
  11.  
  12.    ostream << 123 << 5;
  13.  
  14.    return 0;
  15. }
  16.  
  17.  
  18. stream& operator<< (int val) {
  19.    printf("%i", val);
  20. }

Pero en las definiciones del operador he tenido que poner esto, porque si no me daba error:

Código
  1. stream& operator<< (stream& ostream, int val);

Esto no esclarece nada :S Gracias por su ayuda!
414  Programación / Programación C/C++ / Re: struct en c en: 28 Noviembre 2015, 01:12 am
Creo que el algoritmo sería:

Determinas en que posición debe ir la cadena (según tus criterios o los del ejercicio)
Buscas esa posición entre los nodos
Intercalas un nuevo nodo en esa posición
415  Programación / Programación C/C++ / Re: struct en c en: 28 Noviembre 2015, 01:09 am
Qué tienes que ordenar de forma ascendente o descendente... Las cadenas no se pueden ordenar de esta forma (al menos de la forma en la que entendemos ordenar...). Tienes que establecer un criterio para ver que cadenas van primero y cuál va última
416  Programación / Programación C/C++ / Re: struct en c en: 27 Noviembre 2015, 14:38 pm
Problemas que he detectado en la función mostrar_lista:
1º Utilizas un while sin sentido. Tienes que usar un if si no quieres un ciclo infinito XD
2º Si tu objetivo era la recursividad, se te ha olvidado el elemento más importante: llamar a la función recursivamente (véase en el código de abajo)

Código
  1. void mostrar_lista(nodo_t* p) {
  2.    if(p!=NULL) {
  3.        printf(". %s\n",p->filename);
  4.        //p=p->sig; Aquí está el error
  5.        mostrar_lista(p->sig); // Esta es la solución
  6.    }
  7. }

En la función borrar_todas_lista comentes errores similares. Así quedaría:

Código
  1. void borrar_todas_lista(nodo_t* p) {
  2.    nodo_t* borrar=NULL;
  3.  
  4.    if(p!=NULL) {
  5.        borrar = p->sig;
  6.        free(p->filename);
  7.        free(p);
  8.        borrar_todas_lista(borrar);
  9.    }
  10. }

Por cierto, date cuenta de que también tienes que liberar de la memoria la cadena de caracteres que has generado con malloc en la función agregar_nodo.

En la función main, declaras un array de un solo elemento (es decir, no cabe el elemento NULL que indica el final de la cadena). La cadena de caracteres tiene que tener como mínimo dos elementos disponibles. También tienes que pedir una cadena de caracteres con la función scanf (sustituye %c por %s)
417  Programación / Programación C/C++ / Re: struct en c en: 27 Noviembre 2015, 08:02 am
He probado el código y va perfectamente. El único problema que veo es que cuando imprimes la cadena de caracteres, lo haces con un %c. %c es para caracteres. Para imprimir una cadena tendrías que usar %s:

Código
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4.  
  5. typedef struct Nodo {
  6.    char* filename;
  7.    struct Nodo* sig;
  8. } nodo_t;
  9.  
  10. void agregar_nodo(nodo_t**p, char* ruta) {
  11.    nodo_t* nuevo;
  12.    nodo_t* aux;
  13.  
  14.    nuevo = (nodo_t*)malloc(sizeof(nodo_t));
  15.    nuevo->filename = ruta;
  16.    nuevo->sig = NULL;
  17.  
  18.    if(*p == NULL) {
  19.        *p = nuevo;
  20.    } else {
  21.        aux = *p;
  22.  
  23.        while(aux->sig != NULL)
  24.            aux = aux->sig;
  25.  
  26.        aux->sig = nuevo;
  27.    }
  28. }
  29.  
  30. int main() {
  31.    nodo_t* nodo = NULL;
  32.    nodo_t* aux = NULL;
  33.  
  34.    agregar_nodo(&nodo, "Hola x1");
  35.    agregar_nodo(&nodo, "Hola x2");
  36.    agregar_nodo(&nodo, "Hola x3");
  37.  
  38.    printf(nodo->filename);
  39.    aux = nodo->sig;
  40.    while(aux != NULL) {
  41.        printf("\n%s", aux->filename);
  42.        aux = aux->sig;
  43.    }
  44.  
  45.    return 0;
  46. }

También tienes que tener cuidado con lo siguiente: Cuando le envias una cadena de caracteres a agregar_nodo, le tienes que enviar una diferente. Por ejemplo, el siguiente código no haría lo esperado:

Código
  1. int main() {
  2.    char cadena[16] = "Codigo";
  3.    nodo_t* nodo = NULL;
  4.    nodo_t* aux = NULL;
  5.  
  6.    agregar_nodo(&nodo, cadena);
  7.    cadena[0] = 'c'; // Ahora cadena vale "codigo"
  8.    agregar_nodo(&nodo, cadena);
  9.    cadena[6] = 's';
  10.    cadena[7] = '\0'; // Ahora cadena vale "codigos"
  11.    agregar_nodo(&nodo, cadena);
  12.  
  13.    printf(nodo->filename);
  14.    aux = nodo->sig;
  15.    while(aux != NULL) {
  16.        printf("\n%s", aux->filename);
  17.        aux = aux->sig;
  18.    }
  19.  
  20.    return 0;
  21. }

El resultado que uno podría esperar es:
Código:
Codigo
codigo
codigos

Pero en realidad el resultado obtenido es:
Código:
codigos
codigos
codigos
418  Programación / Programación C/C++ / Re: programa en c para modificar ancho cmd.exe en: 26 Noviembre 2015, 14:23 pm
Lo que pides es dependiente del sistema operativo. Dado que usas Dev-Cpp, asumiré que usas Windows. Para hacer esto en Windows, puedes usar el comando mode, cuya estructura es "mode ancho" donde "ancho" es el número de caracteres de ancho de la consola. Por ejemplo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h> // system
  3.  
  4. int main() {
  5.        system("mode 124");
  6.  
  7.        printf("Ahora caben 124 caracteres de ancho!");
  8.  
  9.        fgetc(stdin);
  10.        return 0;
  11. }

No sé si hay algún comando para GNU/Linux que haga la misma función.
419  Programación / Programación C/C++ / Re: [C] ¿Qué hace este while de una sola linea? en: 25 Noviembre 2015, 07:37 am
Curioso. Nunca había oído hablar de la notación polaca inversa. Cada día se aprende algo :D

Una cosilla. No he analizado tu código, pero ¿no sería mejor usar
Código
  1. scanf("%d %d %c", &operando1, &operando2, &operador);
?

Ya te digo que no he analizado tu código
420  Programación / Programación C/C++ / Re: [C] ¿Qué hace este while de una sola linea? en: 25 Noviembre 2015, 06:15 am
Si, está bien :D
Páginas: 1 ... 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 [42] 43 44 45
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines