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 - DickGumshoe

#411
Muchísimas gracias, ya lo he corregido.

A opcion_1 le he llamado así porque hay 11 opciones de juego (si hubiera sido la única, le hubiera llamado de otra forma).

Saludos.
#412
Programación C/C++ / Re: Comparando cadenas
22 Enero 2012, 11:45 AM
Bueno, acabo de hacer que al insertar "fin" se cierre el programa poniendo:

while((strcmp(n11, "fin")!=0));

Por otra parte, RHL, he puesto ahora

 do{
   printf("Introduce un nombre para comprobar si se encuentra entre los anteriores");
   gets(n11);
   if((strcmp(n1,n11)||
   strcmp(n2,n11)||
   strcmp(n3,n11)||
   strcmp(n4,n11)||
   strcmp(n5,n11)||
   strcmp(n6,n11)||
   strcmp(n7,n11)||
   strcmp(n8,n11)||
   strcmp(n9,n11)||
   strcmp(n10,n11))!=0) printf("El nombre se encuentra entre los anteriores\n");
   else printf("El nombre no se encuentra entre los anteriores\n");


en vez de si es igual a 0. El resultado ahora es que todo lo que inserto se encuentra entre los anteriores...

También, rir3760, creo que al final del manual que estoy siguiendo dan técnicas más avanzadas. Quizá por ahora pueda hacer algo parecido a lo que estoy haciendo, y cuando llegue a las técnicas, corregir el programa (porque con tantas funciones, me he perdido un poco...).

Bueno, muchas gracias a los dos. Voy a seguir intentando que me salga.

Saludos.


EDITO:

Para reducir el código, trato de hacer esto:

do{
    for (i=0;i<=10;i++){
    printf("Introduce un nombre");
    gets(n1[i][20]);
    }
}
    while(n1!=n1[9][20]);


Pero da errores. Así, solo tendría que meter una variable, tal y como dice rir3760.

Gracias.

Saludos.
#413
Programación C/C++ / Re: Problema con strcat
22 Enero 2012, 11:15 AM
Ah, ¡muchísimas gracias! Se me había olvidado que había también un caracter nulo...

Por cierto, en los sitios que he estado visitando para ver la función fgets; por lo que veo, hablan de ficheros (todavía no he llegado a esa parte en el manual que estoy siguiendo). Y no sé si será por haber usado gets; pero ahora el resultado del programa da bien, exceptuando que antes de mi nombre salen cuatro caracteres raros...

Gracias.

Saludos.

EDITO: Con sprintf, lo que acabo de decir, me lo ha hecho bien. Sin embargo, con strcat no...
#414
Programación C/C++ / Comparando cadenas
22 Enero 2012, 01:17 AM
Hola.

Estoy haciendo un problema que dice lo siguiente:

Un programa que pida 10 nombres y los memorice. Después deberá pedir que se teclee un nombre y dirá si se encuentra o no entre los 10 que se han tecleado antes. Volverá a pedir otro nombre y a decir si se encuentra entre ellos, y así sucesivamente hasta que se teclee "fin".

Yo tengo esto:

/*Un programa que pida 10 nombres y los memorice. Después deberá pedir que se teclee
un nombre y dirá si se encuentra o no entre los 10 que se han tecleado antes. Volverá
a pedir otro nombre y a decir si se encuentra entre ellos, y así sucesivamente hasta que
se teclee "fin".*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
   
    char n1[20], n2[20], n3[20], n4[20], n5[20], n6[20], n7[20], n8[20], n9[20], n10[20], n11[20];
    char n12[20]={"fin"};
   
    printf("Introduce un nombre");
    gets(n1);
    printf("Introduce otro nombre");
    gets(n2);
    printf("Introduce otro nombre");
    gets(n3);
    printf("Introduce otro nombre");
    gets(n4);
    printf("Introduce otro nombre");
    gets(n5);
    printf("Introduce otro nombre");
    gets(n6);
    printf("Introduce otro nombre");
    gets(n7);
    printf("Introduce otro nombre");
    gets(n8);
    printf("Introduce otro nombre");
    gets(n9);
    printf("Introduce otro nombre");
    gets(n10);
   
   
    do{
    printf("Introduce un nombre para comprobar si se encuentra entre los anteriores");
    gets(n11);
    if((strcmp(n11,n1)||
    strstr(n11,n2)||
    strstr(n3,n11)||
    strstr(n4,n11)||
    strstr(n5,n11)||
    strstr(n6,n11)||
    strstr(n7,n11)||
    strstr(n8,n11)||
    strstr(n9,n11)||
    strstr(n10,n11))==0) printf("El nombre se encuentra entre los anteriores\n");
    else printf("El nombre no se encuentra entre los anteriores\n");
   
    }
    while(n11!=n12);
   
    system("pause");
    return 0;
   
}



Lo que me hace es que me reconoce si la primera palabra introducida (n1) es igual que la última (n11), pero con las demás no hace nada.

Además, al poner "fin", no finaliza el programa.

¿Alguien podría decirme cuál es mi problema?

Muchísimas gracias.

Saludos.
#415
Programación C/C++ / Re: Problema con strcat
22 Enero 2012, 00:28 AM
Lo acabo de hacer ahora con sprintf, y tampoco. Me sale lo mismo...

Este es el código entero:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
   
    char nombre[40],aux[60];
    char dia[2],mes[2];
   
    printf("Introduce tu nombre");
    gets(nombre);
   
    printf("Introduce el dia en que naciste");
    gets(dia);
   
    printf("Introduce el mes en que naciste");
    gets(mes);
    sprintf(aux,"%s, nacido el %s/%s",nombre,dia,mes);
   
   
   
    printf("%s\n",aux);
   
    system("pause");
    return 0;
}


Gracias.
#416
Programación C/C++ / Problema con strcat
21 Enero 2012, 23:58 PM
Hola.

Estoy realizando un programa que pida por separado tu nombre, día de nacimiento, y mes, y que después lo una en una sola cadena.

Yo tengo esto:


    strcat(aux, nombre);
    strcat(aux, ", nacido el ");
    strcat(aux, dia);
    strcat(aux, "/");
    strcat(aux, mes);
   
    printf("%s\n",aux);


Y, al compilar, si pongo, por ejemplo:

Nombre: Nombre
Día: 09
Mes: 12

Sale como resultado: "Nombre, nacido el /12". Falta el 09...

¿Qué estoy haciendo mal?

Gracias.

Saludos.
#417
Programación C/C++ / Problema con funciones
21 Enero 2012, 00:02 AM
Hola.

Hace tiepo hice un programa que consistía en crear el juego de la ruleta. Ahora que he empezado a ver el tema de funciones, me gustaría hacerlo de esta forma.

Mientras antes tenía esto en la función main:

if(opcion==1){
   do{
   printf("\nIntroduce un 0 si apuestas por par o un 1 si es por impar");
   scanf("%d",&x);
   }
   while((x!=0)&&(x!=1));
   
   if((x==0)&&(dado%2==0)){
   bolsa=bolsa+2*apuesta;
   printf("\nHas acertado, es par. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
   }
   else{
     if((x==1)&&(dado%2!=0)){
     bolsa=bolsa+2*apuesta;
     printf("\nHas acertado, es impar. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
     }
     else{
       if((x==0)&&(dado%2!=0)){
       printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
       }  
       else{
         if((x==1)&&(dado%2==0)){
         printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
         }      
       }  
     }  
       
   }            
 }


Ahora pongo lo siguiente en una función:

int opcion_1 (int x){
   int dado,apuesta,bolsa;
   srand(time(NULL));
   dado= rand()%36;
   do{
   printf("\nIntroduce un 0 si apuestas por par o un 1 si es por impar");
   scanf("%d",&x);
   }
   while((x!=0)&&(x!=1));
   
   if((x==0)&&(dado%2==0)){
   bolsa=bolsa+2*apuesta;
   printf("\nHas acertado, es par. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
   }
   else{
     if((x==1)&&(dado%2!=0)){
     bolsa=bolsa+2*apuesta;
     printf("\nHas acertado, es impar. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
     }
     else{
       if((x==0)&&(dado%2!=0)){
       printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
       }  
       else{
         if((x==1)&&(dado%2==0)){
         printf("\nNo has acertado. Ha salido %d. Su bolsa es de %d fichas", dado,bolsa);                                                
         }      
       }  
     }          
   }    
       
}

 return(0);    
}


Y, después, voy a la función main, y pongo:

int main (void){
   
 int opcion_juego,apuesta,bolsa,x,dado;
 srand(time(NULL));
 dado= rand()%36;
 
 
   mostrar_ruleta();
   apostar_fichas(apuesta);
   opcion(opcion_juego);
   bolsa=bolsa-apuesta;
   opcion_1(x); //Esto es lo referente a la funcion



Por favor, ¿alguien podría explicarme cuál es mi problema?

Muchas gracias.

Saludos.

EDITO: Acabo de conseguir que la función funcione dentro de main. Pero creo que las variables se lían unas con otras, porque me dice que la bolsa es "9857437" y que el número que ha salido es "487434"...

Gracias.
#418
Yo según el tipo de programa. Si tiene muchas condiciones, primero siempre tomo notas en papel, y después lo hago. Sino, lo hago de cabeza.

Pero vamos, yo también soy principiante en C.
#419
Muchísimas gracias. Ya entiendo el programa entero.

Ahora voy a intentar hacer la opción de si hay 4 en vertical, que me parece que en su código no sale bien.

Saludos.
#420
No sé por qué, pero me da el error
" too few arguments to function `int finPartida(int (*)[8])' "
Haciendo esto:


#include<stdio.h>
#include<stdlib.h>

int finPartida(int m[8][8])
{
   
    int i, j;
    for(i = 8-1; i >= 3; i--)
        for(j = 8-1; j >= 3; j--)
            if((m[i][j] == m[i-1][j] && m[i][j] == m[i-2][j] && m[i][j] == m[i-3][j] && m[i][j] != 0) ||
               (m[i][j] == m[i][j-1] && m[i][j] == m[i][j-2] && m[i][j] == m[i][j-3] && m[i][j] != 0) ||
               (m[i][j] == m[i-1][j-1] && m[i][j] == m[i-2][j-2] && m[i][j] == m[i-3][j-3] && m[i][j] != 0))
                return 1;

    for(i = 8-1; i >= 3; i--)
        for(j = 0; j <= 8-3; j++)
            if(m[i][j] == m[i-1][j+1] && m[i][j] == m[i-2][j+2] && m[i][j] == m[i-3][j+3] && m[i][j] != 0)
                return 1;

    return 0;
}


int main (void)
{
   int M[8][8];

  int i, j, col, jugador, s, fila[8];

   for(i=0; i<8; i++){
       for(j=0; j<8; j++){
           M[i][j] = 0;
       }
       fila[i] = 7;
   }

   jugador = 1;

   do{   


   for(i=0; i<8; i++){
       for(j=0; j<8; j++){
           printf("%d  ",M[i][j]);                 
       }   
       printf("\n");                                 
   }

   printf("Introduce la columna (1-8): ");
   scanf("%d", &col);

   col = col-1;

   M[fila[col]][col] = jugador;

   fila[col]--; //
   

   do{
   printf("Introduzca un 0 si abandona o un 1 si quiere seguir jugando: ");
   scanf("%d", &s);
   jugador = 3-jugador;
   }
   while((s<0)||(s>1));
   }
   while(s==1);
   
   finPartida();
   



system("pause");   
return 0;
}


El código en sí lo he entendido.

Gracias.