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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [91] 92 93 94 95 96 97 98 99 100 101 102
901  Programación / Programación C/C++ / Re: modificar lectura de cadenas en: 7 Diciembre 2018, 02:42 am
Intentaré darte un par de ideas por si quieres aplicar alguna:
- En primer lugar yo en C++ prefiero usar <string> en lugar de cadenas de caracteres C ya que creo que facilitan algunas tareas. Y para coger los datos uso <cin> de <iostream> en vez de <gets()> de <cstdio>.
- Si por lo que sea prefieres seguir usando cadenas de caracteres, cambiaría los <gets()> por <fgets()>.
- Para evitar los <fflush(stdin)> hay un par de temas en el foro que creo que ya has visto. Tienes la opción de usar <fseek()> para ponerte al final del buffer si hay más caracteres de los admitidos o si te quedan saltos de línea puedes capturarlos con un <getchar()> hasta que no quede ninguno. Eso ya depende de lo que necesite tu programa.
Suerte. :-X
902  Programación / Programación C/C++ / Re: do while (strcmp(una cadena, ("-----"||"-----"))!=0) no compila en: 6 Diciembre 2018, 22:55 pm
<"corriente" || "ahorro"> es una expresión booleana, no es una cadena de caracteres <char*>. Tienes que comparar con una y después con la otra por separado. Suerte.
903  Programación / Programación C/C++ / Re: Alguien sabe que falla en este programa?? --> Funcion malloc en: 6 Diciembre 2018, 22:33 pm
Para copiar por ejemplo los caracteres útiles de <nombre> en <p_nombre> puedes usar la función <strncpy()> que te permite introducir cuántos caracteres se van a copiar. Ya que el problema que tú estabas teniendo es que en ningún momento asignas un valor a <p_nombre>. No es lo mismo reservar espacio que asignar, primero haces hueco para meter algo, pero luego tienes que meter ese algo. Y recuerda al trabajar con memoria dinámica liberarla al terminar el programa. Suerte.
904  Programación / Programación C/C++ / Re: El programa no entra en este "if" en: 6 Diciembre 2018, 18:03 pm
No entiendo esto:
Código
  1. int menu1();

Este trozo de código creo que no tiene ni pies ni cabeza. Si <i> vale uno menos que <n>, incrementas <i> (ahora <i  == n>) y asignas el valor de <i> a <j> y mientras <j> sea menor que <n> (cosa que ya no es ya que <j == n>)... da igual lo que haga después ya que no se va a hacer.
Código
  1. else if(x=true&&i==n-1){
  2.                    i++;
  3.                    cout<<"Este DNI no existe en nuestros datos"<<endl;
  4.                for(int j=i;j<n;j++){
  5.                    variosClientes.Clientes[j] = variosClientes.Clientes[j+1];

Además de eso tienes algunos errores de asignación y comparación. Un igual "=" para asignar un valor <x = false>. Dos iguales "==" para comparar un valor <x == false>. En algunos trozos del programa los usas al revés.

Aparte de eso tener un <while(x == true)> equivale a tener <while(x)> y tener un <while(x == false)> equivale a tener <while(!x)>. Así es más fácil de ver.

También es recomendable en programas con muchas variables sobre todo usar nombres que te ayuden a ver qué hace esa variable ya que yo veo de repente una "t" o una "p" y tengo que ir arriba para ver que era eso.

Tampoco sé cómo has implementado las funciones de lectura que aparecen por ahí entonces no soy capaz de ver cuál es el error. Ya que tampoco sé exactamente cuál es el error, si quieres puedes probar a meter un par de <cout> con las variables que estás comparando en el <if> y así ver cuánto valen y poder encontrar el error.
905  Programación / Programación C/C++ / Re: Alguien sabe que falla en este programa?? --> Funcion malloc en: 6 Diciembre 2018, 16:25 pm
Has creado un puntero a <char>. Como su nombre indica un puntero apunta y el tuyo no apunta a ningún sitio. Lo que haces con <malloc> es reservar espacio en ese puntero pero en este caso ya tienes una cadena C que es <nombre> entonces con hacer que <p_nombre> apunte a <nombre> ya está.
Código
  1. int main(){
  2. printf("Introduzca su nombre: ");
  3. char nombre[20],*p_nombre;
  4. fgets(nombre, 20, stdin);
  5. p_nombre = nombre;
  6. printf("%s",p_nombre);
  7. }

Además de eso te he modificado la función <gets()> ya que es mejor usar <fgets()> y así especificar el número de caracteres que va a coger la función. De todos modos si lo dejas así e introduces 19 o 20 caracteres se te va a quedar el último o los dos últimos en el buffer ya que tienes capacidad para 20 caracteres pero tienes que contar el salto de línea "\n" cuando pulsas enter y el "\0" que indica el final de cadena.
906  Programación / Programación C/C++ / Re: Ayuda con programa en: 6 Diciembre 2018, 16:10 pm
Según tu código la carta que robas la guardas en <aux> en cada una de las funciones <modoA()> y <modoB()>. Entonces para ver la carta sólo tendrías que hacer un <cout> de <aux>.

Un par de consejos:
- Si no recuerdo mal lo de generar el número aleatorio tenías que hacerlo con una función, no en el <main>.
- En vez de usar <if> anidados para cada opción del menú, es mejor usar el <switch>.
- En el <modoBHumano()> si la variable <continuar> le asignas <true> al empezar, luego no le asignes <true> otra vez cada vez que el usuario quiere otra carta. Sólo asígnale <false> cuando no quiera más cartas, hasta entonces ya vale <true>.
- La variable <continuar> de <modoBMaquina()> más de lo mismo.
- En la función <determinaGanador()> en caso de empate siempre gana el humano por lo que te he comentado antes de los números aleatorios. Estás haciendo <rand() % 1> y eso siempre es 0, por lo que HUMANO + 0 = HUMANO.

Aparte de esas cosillas, como el archivo se lee en orden, siempre van a salir los <numeroAleatorio>-primeros números del archivo.
907  Programación / Programación C/C++ / Re: Ayuda con programa en: 6 Diciembre 2018, 15:13 pm
Tu código para generar números aleatorios genera números entre [3,5). Fíjate que el límite superior tiene el intervalo abierto, por lo que los posibles resultados son {3,4}.
Para generar números entre [3,5] el código es: <3 + rand() % 5-3+1>. Si entiendes lo que hace el operador módulo <%> está claro, este te devuelve el resto de dividir <rand()> entre 2 en tu caso. Ese resto siempre va a ser {0,1}. Entonces 3+{0,1}={3,4}. En cambio si haces módulo 3, te queda 3 + {0,1,2} = {3,4,5}. Suerte.

Edit: Además la carta que robas no es <numeroAleatorio>, <numeroAleatorio> es el número de cartas que robas.
908  Programación / Programación C/C++ / Re: Función que diga si dos columnas/filas de una matriz son iguales. en: 5 Diciembre 2018, 19:44 pm
Parece que la logica original hay que modifcarla un poco, pues si existen 2 coliumnas iguales, pero justo las ultimas 2 que se comparan no son iguales, la funcion va a retornar 0.

Es lo que se quiere?

Es cierto, faltaría meterle la condición de que no sean iguales a uno de los <for> para que en cuanto haya dos iguales salga del todo. Fallo mío :-X Con estas correcciones ya debería funcionar. :silbar:
Edit: Ya está modificado el código original (creo que no tiene más fallos, si alguien encuentra alguno que me lo comente). Y Hackersanfe, te recomiendo que lo pienses por ti mismo, el reto está en conseguir hacerlo funcionar sin mirar la solución, mirándola es muy fácil.
909  Programación / Programación C/C++ / Re: Función que diga si dos columnas/filas de una matriz son iguales. en: 5 Diciembre 2018, 19:19 pm
Tienes que ver qué índice representa a las filas y qué índice a las columnas. No vale eso de coger un código cambiarle el nombre y que haga otra cosa.
Edit: Además mira a ver cuál debería ser el tamaño de tu array auxiliar... Suerte.
910  Programación / Programación C/C++ / Re: Ayuda con programa en: 4 Diciembre 2018, 21:28 pm
El nombre del archivo tiene que ir con la ruta en donde esté. Quiero decir si tu archivo se llama "baraja.txt" y está en el mismo directorio donde estás ejecutando el programa entonces su nombre es "baraja.txt".
En cambio si está en otro sitio tienes que especificar la ruta, por ejemplo si estás compilando en GNU/Linux y tienes el ejecutable y al mismo nivel una carpeta "docs/" donde está el fichero "baraja.txt" entonces el nombre del archivo sería "./docs/baraja.txt".

Edit: Prueba a hacer un programa que sólo abra un fichero y muestre su contenido así puedes ver donde está el error más fácil.
Páginas: 1 ... 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 [91] 92 93 94 95 96 97 98 99 100 101 102
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines