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 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 46 47 48 49
401  Programación / Programación C/C++ / Re: [C++ Linux] Explicación de codigo [Principiante] en: 28 Enero 2012, 17:15 pm
Cito la parte donde tienes problemas:

Código
  1. srand(time(NULL));
  2.    int n, i, num[f];
  3.    for(i = 0; i < f; i++)
  4.    {
  5.       do  // porque este do acá?
  6.        n = 1 + rand() % 10;  //especificamente qué hace el simbolo % acá?
  7.        while(checkrep(n, num)); // tenia entendido que luego de while se abrian llaves, por qué acá no hay?

Ese do va con el while de debajo (es un bucle do-while). Entonces, hace
 n = 1 + rand() % 10;

mientras (checkrep(n, num));

El % va ahí porque forma parte de la función rand en ese caso. Si pusieras
n=rand(), te calcularía cualquier número aleatoriamente. Poniendo detrás de rand() un signo de % y posteriormente un número, el ordenador piensa un número  desde el 0 hasta el número que has introducido.

En el while no van las llaves, porque, como dije antes, es un bucle do-while. Si fuera un bucle while, sí sería con llaves (Ojo, que el bucle do-while también puede llevar llaves, pero en este caso, como no tiene que ejecutar muchas sentencias, no hacen falta).

Espero haberte ayudado.

Saludos.

402  Programación / Programación C/C++ / Re: Control input...¿Enter? en: 28 Enero 2012, 14:40 pm
¿Me podrías pasar tu código? Si es así, intentaré ver cuál es el error y eso.

Saludos.

EDITO:

Comparando el dato que mete con ("") sí sale. Mira:

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.    char dato[20];
  7.    do{
  8.  
  9.    printf("<<<");
  10.    gets(dato);
  11.    }
  12.    while(strcmp(dato,"")==0);
  13.  
  14.    system("pause");
  15.    return 0;
  16. }
  17.  
  18.  

Espero haberte ayudado.

Saludos!
403  Programación / Programación C/C++ / Re: Control input...¿Enter? en: 28 Enero 2012, 13:49 pm
No estoy seguro, pero si el bucle se repite cuando el usuario no mete ningún dato, puedes probar a que se repita cuando el usuario introduce
Código
  1. ("")

Pero repito, soy novato, y no sé si es así realmente.

Saludos.
404  Programación / Programación C/C++ / Re: Comparando cadenas en: 25 Enero 2012, 17:56 pm
Ahora tengo esto:

Código
  1. /*Un programa que pida 10 nombres y los memorice. Después deberá pedir que se teclee
  2. un nombre y dirá si se encuentra o no entre los 10 que se han tecleado antes. Volverá
  3. a pedir otro nombre y a decir si se encuentra entre ellos, y así sucesivamente hasta que
  4. se teclee “fin”.*/
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10. int main(){
  11.  
  12.    char nombre[10][20], aux[20];
  13. int i;
  14.    //aux es el nombre que comprobaremos si esta en la lista o no
  15.  
  16.    //damos un valor a 10 nombres
  17.  
  18.    for (i=0;i<10;i++){
  19.    printf("Introduce un nombre");
  20.    gets(nombre[i]);
  21.    }
  22.  
  23.  
  24.  
  25.    //ERROR, todo lo que comparo sale como que se encuentra entre los anteriores
  26.    do{
  27.    printf("Introduce un nombre para comprobar si se encuentra entre los anteriores");
  28.    gets(aux);
  29.    for (i=0;i<10;i++){
  30.    if((strcmp(nombre[i],aux)==0)){
  31.                                    printf("El nombre se encuentra entre los anteriores\n");
  32.                                    break;
  33. }    
  34.    else printf("El nombre no se encuentra entre los anteriores\n");
  35.    break;
  36. }
  37.    }
  38.    while((strcmp(aux, "fin")!=0));
  39.  
  40.    system("pause");
  41.    return 0;
  42.  
  43. }
  44.  

Lo que he editado ha sido el bucle for del final, y ahora, introduzco diez nombres. Cuando pongo el que quiero comprobar:

- Si es el que he metido primero (el que equivale a nombre[0]), sale como que lo he introducido --> Correcto
- Todos los demás salen como que no los había introducido...

Gracias.

Saludos.
405  Programación / Programación C/C++ / Re: Comparando cadenas en: 24 Enero 2012, 23:38 pm
El código es:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.  
  7.    char nombre[10][20], aux[20];
  8. int i;
  9.    //aux es el nombre que comprobaremos si esta en la lista o no
  10.  
  11.    //damos un valor a 10 nombres --> ERROR
  12.  
  13.    for (i=0;i<10;i++){
  14.    printf("Introduce un nombre");
  15.    gets(nombre[i]);
  16.    }
  17.  
  18.  
  19.  
  20.    //ERROR, todo lo que comparo sale como que se encuentra entre los anteriores
  21.    do{
  22.    printf("Introduce un nombre para comprobar si se encuentra entre los anteriores");
  23.    gets(aux);
  24.    if((strcmp(nombre[0],aux)||
  25.    strcmp(nombre[1],aux)||
  26.    strcmp(nombre[2],aux)||
  27.    strcmp(nombre[3],aux)||
  28.    strcmp(nombre[4],aux)||
  29.    strcmp(nombre[5],aux)||
  30.    strcmp(nombre[6],aux)||
  31.    strcmp(nombre[7],aux)||
  32.    strcmp(nombre[8],aux)||
  33.    strcmp(nombre[9],aux))!=0) printf("El nombre se encuentra entre los anteriores\n");
  34.    else printf("El nombre no se encuentra entre los anteriores\n");
  35.  
  36.    }
  37.    while((strcmp(aux, "fin")!=0));
  38.  
  39.    system("pause");
  40.    return 0;
  41.  
  42. }
  43.  

Y ya no tengo ese problema. Ahora siempre dice que el nombre se ha encontrado entre los 10 primeros...

Gracias
406  Programación / Programación C/C++ / Re: Comparando cadenas en: 24 Enero 2012, 22:36 pm
Muchas gracias a todos.

Ahora me compila, pero al introducir los 10 nombres, dice: 10nombre.exe dejó de funcionar. Windows está buscando una solución al problema...

Gracias.

Saludos.
407  Programación / Programación C/C++ / Re: Comparando cadenas en: 23 Enero 2012, 22:40 pm
Incluso quitando el [20] del final, me da errores.

Ahora tengo este código:

Código
  1. int main(){
  2.  
  3.    char nombre[10][20], i, aux;
  4.    //aux es el nombre que comprobaremos si esta en la lista o no
  5.  
  6.    //damos un valor a 10 nombres --> ERROR
  7.  
  8.    for (i=0;i<=10;i++){
  9.    printf("Introduce un nombre");
  10.    gets(nombre[i]);
  11.    }
  12.  
  13.  
  14.  
  15.  
  16.    //ERROR, todo lo que comparo sale como que se encuentra entre los anteriores
  17.    do{
  18.    printf("Introduce un nombre para comprobar si se encuentra entre los anteriores");
  19.    gets(aux);
  20.    if((strcmp(nombre[0],aux)||
  21.    strcmp(nombre[1],aux)||
  22.    strcmp(nombre[2],aux)||
  23.    strcmp(nombre[3],aux)||
  24.    strcmp(nombre[4],aux)||
  25.    strcmp(nombre[5],aux)||
  26.    strcmp(nombre[6],aux)||
  27.    strcmp(nombre[7],aux)||
  28.    strcmp(nombre[8],aux)||
  29.    strcmp(nombre[9],aux))!=0) printf("El nombre se encuentra entre los anteriores\n");
  30.    else printf("El nombre no se encuentra entre los anteriores\n");
  31.  
  32.    }
  33.    while((strcmp(n11, "fin")!=0));
  34.  
  35.    system("pause");
  36.    return 0;
  37.  
  38. }
  39.  

Los errores que me da el compilador están todos en el do-while.

Son:

Código:
27 invalid conversion from `char' to `char*' 

27  initializing argument 1 of `char* gets(char*)'

28 invalid conversion from `char' to `const char*'

28 initializing argument 2 of `int strcmp(const char*, const char*)'

Hay más, pero son exactamente iguales (para cada comparación me da esos errores que acabo de poner).

Muchas gracias.

Saludos.

408  Programación / Programación C/C++ / Re: Problema con strcat en: 23 Enero 2012, 22:28 pm
Muchas gracias a todos por responder. Me habéis aclarado las dudas muy bien.

Saludos.
409  Programación / Programación C/C++ / Re: Comparando cadenas en: 22 Enero 2012, 18:01 pm
Bueno, he editado mi código fuente con nombres más descriptivos y con comentarios.

Código
  1. /*Un programa que pida 10 nombres y los memorice. Después deberá pedir que se teclee
  2. un nombre y dirá si se encuentra o no entre los 10 que se han tecleado antes. Volverá
  3. a pedir otro nombre y a decir si se encuentra entre ellos, y así sucesivamente hasta que
  4. se teclee “fin”.*/
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10. int main(){
  11.  
  12.    char nombre[10][20], i, aux;
  13.    //aux es el nombre que comprobaremos si esta en la lista o no
  14.  
  15.    //damos un valor a 10 nombres --> ERROR
  16.    do{
  17.    for (i=0;i<=10;i++){
  18.    printf("Introduce un nombre");
  19.    gets(nombre[i][20]);
  20.    }
  21.    }
  22.    while(nombre!=nombre[9][20]);
  23.  
  24.  
  25.    //ERROR, todo lo que comparo sale como que se encuentra entre los anteriores
  26.    do{
  27.    printf("Introduce un nombre para comprobar si se encuentra entre los anteriores");
  28.    gets(aux);
  29.    if((strcmp(nombre[0][20],aux)||
  30.    strcmp(nombre[1][20],aux)||
  31.    strcmp(nombre[2][20],aux)||
  32.    strcmp(nombre[3][20],aux)||
  33.    strcmp(nombre[4][20],aux)||
  34.    strcmp(nombre[5][20],aux)||
  35.    strcmp(nombre[6][20],aux)||
  36.    strcmp(nombre[7][20],aux)||
  37.    strcmp(nombre[8][20],aux)||
  38.    strcmp(nombre[9][20],aux))!=0) printf("El nombre se encuentra entre los anteriores\n");
  39.    else printf("El nombre no se encuentra entre los anteriores\n");
  40.  
  41.    }
  42.    while((strcmp(n11, "fin")!=0));
  43.  
  44.    system("pause");
  45.    return 0;
  46.  
  47. }
  48.  


Por lo que parece, el error está en que en gets no puedo poner
Código
  1. gets(nombre[i][20]);
Aunque no estoy seguro.

Muchísimas gracias.

Saludos.
410  Programación / Programación C/C++ / Re: Problema con strcat en: 22 Enero 2012, 17:46 pm
Ah, vale, se me había olvidado ponerlo.

Con sprintf, que queda bien el resultado, tengo esto:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.  
  7.    char nombre[40],aux[60];
  8.    char dia[3],mes[3];
  9.  
  10.    printf("Introduce tu nombre");
  11.    gets(nombre);
  12.  
  13.    printf("Introduce el dia en que naciste");
  14.    gets(dia);
  15.  
  16.    printf("Introduce el mes en que naciste");
  17.    gets(mes);
  18.    sprintf(aux,"%s, nacido el %s/%s",nombre,dia,mes);
  19.  
  20.  
  21.  
  22.    printf("%s\n",aux);
  23.  
  24.    system("pause");
  25.    return 0;
  26. }

Pero, con strcat, me salen caracteres extraños antes del nombre:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6.  
  7.    char nombre[40],aux[60];
  8.    char dia[3],mes[3];
  9.  
  10.    printf("Introduce tu nombre");
  11.    gets(nombre);
  12.  
  13.    printf("Introduce el dia en que naciste");
  14.    gets(dia);
  15.  
  16.    printf("Introduce el mes en que naciste");
  17.    gets(mes);
  18.  
  19.    strcat(aux, nombre);
  20.    strcat(aux, ", nacido el ");
  21.    strcat(aux, dia);
  22.    strcat(aux, "/");
  23.    strcat(aux, mes);
  24.  
  25.    printf("%s\n",aux);
  26.  
  27.    system("pause");
  28.    return 0;
  29. }
  30.  

EDITO: Estaba intentándolo, y al declarar la variable aux, he puesto esto:

Código
  1. aux[60]={};

Y ahora me sale bien. ¿Será porque no le di antes un valor a aux?

Gracias.

Saludos.

Páginas: 1 ... 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [41] 42 43 44 45 46 47 48 49
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines