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

#61
Entonces no veo ningun inconveniente, ya que esto deberia funcionar:
Código (cpp) [Seleccionar]
for(i=0;i<10;i++)
{
   answer[i]=(char)buf[i];
                   
}


Subi el codigo q tenes..Saludos


PD: tenes la clase string
#62
Programación C/C++ / Re: Programa Loteria
19 Enero 2013, 04:05 AM
La verdad no entiendo bien cual es el problema, trata de detallar mas

Pregunta: las dos funciones abren distintos archivos??


Saludos

PD: cuando escribis codigo, arriba a la derecha hay algo que dice GeSHi, elegi donde dice C y pone el codigo dentro de [ code=c ] /* aca va codigo*/[ /code ]... El moderador te lo advirtio, si se lo toma mal por ahi te cierra el post xD
#63
Hola! answer como esta declarado???? Si answer esta declarado como:
answer[N]; // N tamaño del arreglo
hacer esto es un error:
answer=(char *)buf;


Subi mas codigo para ayudarte mejor.. y a q llamas "vacio"??

SAludos

PD: si estas en C++ existe la clase string
#64
Programación C/C++ / Re: Programa Loteria
19 Enero 2013, 00:08 AM
A pesar de que en la apertura del archivo no aclara el modo "b"(binario), lo mas probable es que este no contenga formato ya que utiliza funciones como fwrite y fread(fscanf en este caso no funcionario)



Saludos
#65
Hola! en el printf le pasas los argumentos f,c,i+1,j+1 pero solo utilizas dos formatos de conversion en "Escribe el numero del alumno %d de la asignatura %d"


CitarNecesito llenar una tabla para alumnos matriculados pero no soy capaz de acabarlo
no se a que te referis con llenar, con lo que hiciste lo estas haciendo correctamente


Saludos

#66
La funcion srand solo tenes que usarla una vez y, para evitar confuciones, al principio del programa.. AL llamar tantas veces a srand estas reiniciando la semilla, lo cual provoca que se repitan los numeros


Saludos
#67
Programación C/C++ / Re: Programa Loteria
17 Enero 2013, 20:13 PM
Citarviolación del segmento
este error se debe seguro a un mal uso de los arreglos...

CitarViendo nuestro programa nos podrías poner como harías tu el procedimiento buscar
solo modificando las cosas q te marque deberia andar:
void buscar(struct fnum elegido[TAM], char *fichero1, char *fichero2, char *fichero3) { //para buscar los numeros en fichnumeros
        struct cadenacar categoria[TAM];
        char lugar[30];
        int i, x;
        int seguir;
        int numero, serie;
        struct registro registro;
        FILE *result; /* result apunta a "result.dat"*/
        FILE *fich;   // fich apunta a "fichnumerosCompletos.dat"
        FILE *premiotxt;  // premiostxt apunta a "premios.txt"

     /* Apertura en modo lectura-escritura. */
     fich = fopen("fichnumerosCompleto.dat", "r");
     result = fopen("result.dat", "wr");
     premiotxt = fopen("premios.txt", "w");

        if (result != NULL && fich !=NULL && premiotxt !=NULL);{ /*Comprobación*/

        seguir = 1;
            do {
                fread(&registro, sizeof(struct registro), 1, fich);
                for(i =0; i<TAM; i++){
                if ((elegido[i].numero == registro.billete.numero) && (elegido[i].serie == registro.billete.serie)) {
                  //almacena lugar
                        fprintf(result, "%d\t %d\t %s\n",registro.billete.numero, registro.billete.serie,registro.lugar);
                        numero = registro.billete.numero;
                        serie  = registro.billete.serie;
                        strcpy(lugar,registro.lugar);
                        seguir = 0;
                        break; // este break es para que no continue con el for, ya que se encontro el registro
                        }
                  }
                }while (!feof(fich) && (seguir==1));
        fclose(fich);
        fclose(result);
        }
/* ...........*/

la otra mitad de buscar() te toca a vos ya que es parte de la logica del programa, ese es tu trabajo

Otra cosa fijate que en el main tambien tenes errores con los arreglos, por ejemplo en:
  for (i=0; i< TAM; i++){
     premios.numero = azar_numero(intervnum)%9999 +1;
     premios.serie = azar_serie(intervserie);


SAludos
#68
Programación C/C++ / Re: Programa Loteria
16 Enero 2013, 23:20 PM
Citar#include <ctime>
este header es para C++ no C


mortaz tu principal problema es que no sabes manejar los arreglos. Errores:

- La funcion buscar recibe como parametro struct fnum elegido[TAM] que es un arreglo de estructuras. Entonces si es un arreglo vos no podes hacer:
elegido.numero == registro.billete.numero) && (elegido.serie == registro.billete.serie
la forma correcta seria:
elegido[i].numero == registro.billete.numero) && (elegido[i].serie == registro.billete.serie

- Si la estructura fnum tiene dos campos de tipo int, porque declaras en buscar() a numero y serie como arreglos???
int numero[TAM], serie[TAM];//???????
Al declararlos como arreglos, esto es un error:
                        numero = registro.billete.numero;
                        serie  = registro.billete.serie;

solo hacia falta que numero y serie sean ENTEROS

-
Citarlugar = *registro.lugar;
esto te lo aclare antes porque es un error

- el while esta demas, con solo poner la condicion de seguir en el do-while alcanza:
do {
/*............*/
} while(!feof(fich) && (seguir==1));



Saludos
#69
Pero el 3 esta en la ultima posicion de la matriz, cual seria el movimiento que queres hacer?? despues de encontrar el 3 que posicion seria la siguiente para el recorrido??

Saludos
#70
Programación C/C++ / Re: Programa Loteria
15 Enero 2013, 18:54 PM
Te marco los errores

- para comparar variables tenes que usar el "==" y no el "="

- para copiar un arreglo a otro tenes que usar la funcion strcpy(). No podes hacer:
lugar[30] = *registro.lugar;

- En vez del while deberias usar un if


Finalmente todos eso seria mejor ponerlo en un do-while

/*........*/
else {
do {
  fread(...); /* lee un registro */
  if(....) { // compara si es el registro buscado
     strcpy(....); /* haces la copia del lugar */
     seguir=0; /* flag para salir del do-while */
  }
}while(seguir);
}



Saludos