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

#11
Programación C/C++ / Re: Ayuda programa con ficheros
22 Septiembre 2012, 14:42 PM
Aqui te pongo el codigo, y te pongo los errores.
despues del main() te faltaba un punto y coma
Intentas captar un caracter y usas gets() gets es solo para cadenas, para un solo caracter tienes que usar getchar()
Un salduo

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

int main()
{
    FILE *fichero;
    char nombre_fichero[256];
    char caracter;
    char letra;

    printf ("\nescriba el nombre de un fichero para visualizar:");
    gets (nombre_fichero);
    fichero = fopen (nombre_fichero, "r+");

    if (fichero == NULL)
    {
        printf("no se ha encontrado el fichero");
    }
    else
    {
      caracter = fgetc (fichero);
      while (feof (fichero) ==0)
      {
          printf ("%c", caracter);
          caracter = fgetc (fichero);
      }
      fclose (fichero);
    }

    printf ("\nQuiere visualizar otro fichero (S/N)");
    letra=getchar();
    getchar();//Para que no se acumule en el buffer el intro pulsado

    if ((letra == 's') || (letra == 'S'))
    {
        main();
    }
    else
    {
       fflush (stdin);
       printf ("\n\nPulse intro para finalizar...");
       getchar();
       return 0;
    }
}
#12
Programación C/C++ / Re: ordenar 3 numeros en C
22 Septiembre 2012, 14:33 PM
Aqui tienes el codigo de la forma que lo quieres ordenar tu.
Pero es mas facil usando un array que nombres genericos, aunque igual aun no aprendiste a usar los array
Un saludo

#include <stdio.h>

int main ()
{

float x1,x2,x3,menor,mayor,intermedio;

printf ("Ingre los valores :");
scanf ("%f %f %f",&x1,&x2,&x3);

menor = x1;


if ( x2 < menor ){
    menor=x2;
    if(x3 < menor){
        mayor=x1;
        menor=x3;
        intermedio=x2;
    }
    else{
        if(x3<x1){
            intermedio=x3;
            mayor=x1;
        }
        else{
            intermedio=x1;
            mayor=x3;
        }
    }
}
else{
    if(x3 < menor){
        menor=x3;
        intermedio=x1;
        mayor=x2;
    }
    else{
        if(x2<x3){
            intermedio=x2;
            mayor=x3;
        }
        else{
            intermedio=x3;
            mayor=x2;
        }
    }
}

printf ("El orden de menor a mayor : %f %f %f\n",menor,intermedio,mayor);


return (0);

}
#13
Programación C/C++ / Re: Usos fwrite, fread
13 Septiembre 2012, 21:42 PM
Ponia el fgetc por las dimensiones de la cadena, ya que si guardaba todos los valores se me iba de rango, ya que no dejaba hueco para el \0 que cierra la cadena. La verdad que si se me acorto bastante el codigo. Gracias a todos por las respuestas

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

struct fecha{//Estructura que almacena una fecha en dia, mes año
    int dia, mes, año;
};

struct datos{//Estructura que almacena todos los datos
    char nombre[21], direccion[41], email[41];
    int telefono;
    struct fecha nacimiento;
}agenda[100];//Limite de 100, cambiar el numero para ampliarlo

void imprimir_menu(void);
int seleccionar_opcion(void);

int main(){
    int opcion;//Almacena la opcion elegida en el menu
    int i=0;//Contador del stuct para saber los datos leidos y escritos
    int j,k; //Variables auxiliares para los bucles
    int tipo_busqueda;
    char cadena_temporal[9], nombre_buscar[20]; //Cadenas auxiliares para leer numeros con gets()
    FILE* fichero;

    //Leemos los datos existentes
    fichero=fopen("agenda.dat", "rb");

    if(fichero==NULL){//Si no existe el fichero damos aviso de que lo vamos a crear
        printf("El fichero aun no existe, asi que se creara\n\n");
    }
    else{
        printf("Lectura correcta del fichero\n\n");
        while(! feof(fichero)){//Leemos los datos del fichero y los almacenamos en el struct
            fread(&agenda[i],1,sizeof(struct datos),fichero);
            i++;
        }
    }


    fclose(fichero);


    //Interactuamos con el usuario
    do{

    imprimir_menu();
    opcion=seleccionar_opcion();

        if(opcion==1 && i>99){//Si la agenda esta llena no tomara mas datos
            printf("La agenda ya esta llena\n\n");

        }
        else{//Cuando la agenda no esta llena aun

            //Creamos un switch con las opciones
            switch(opcion){
                case 1://Añadimos un nuevo dato al struct
                    printf("Introduce el nombre: ");
                    gets(agenda[i].nombre);
                    printf("Introduce la direccion: ");
                    gets(agenda[i].direccion);
                    printf("Introduce el telefono: ");
                    gets(cadena_temporal);
                    sscanf(cadena_temporal,"%9d", &agenda[i].telefono);
                    printf("Introduce el e-mail: ");
                    gets(agenda[i].email);
                    printf("Introduce la fecha de nacimiento\n");
                    printf("\tdia: ");
                    gets(cadena_temporal);
                    sscanf(cadena_temporal,"%2d", &agenda[i].nacimiento.dia);
                    printf("\tmes: ");
                    gets(cadena_temporal);
                    sscanf(cadena_temporal, "%2d", &agenda[i].nacimiento.mes);
                    printf("\tanio: ");
                    gets(cadena_temporal);
                    sscanf(cadena_temporal, "%4d", &agenda[i].nacimiento.año);
                    i++;
                    break;
                case 2://Mostrar por pantalla los nombres registrados
                    for(j=0; j<i; j++){
                        puts(agenda[j].nombre);
                    }
                    printf("\n");
                    break;
                case 3://Mostrar todos los datos de alguna persona

                    do{//Busqueda parcial o busqueda completa
                        printf("Busqueda completa(0) o busqueda parcial(1): ");
                        gets(cadena_temporal);
                        sscanf(cadena_temporal, "%1d", &tipo_busqueda);
                        if(tipo_busqueda!=0 && tipo_busqueda!=1)
                            printf("La opcion introducida no es correcta\n");
                    }while(tipo_busqueda!=0 && tipo_busqueda!=1);

                    printf("Nombre a buscar: ");
                    gets(nombre_buscar);
                    printf("\n");

                    switch(tipo_busqueda){
                        case 0://Busqueda completa
                            for(j=0; j<i; j++){
                                if(strcmp(nombre_buscar,agenda[j].nombre)==0){
                                    printf("Nombre: %s, direccion: %s, Telefono %d\ne-mail: %s, Fecha nacimiento: %d/%d/%d\n\n",
                                        agenda[j].nombre, agenda[j].direccion, agenda[j].telefono, agenda[j].email,
                                        agenda[j].nacimiento.dia, agenda[j].nacimiento.mes, agenda[j].nacimiento.año);
                                }

                            }
                            break;
                        case 1://Busqueda parcial
                            for(j=0; j<i; j++){
                                if(strstr(agenda[j].nombre,nombre_buscar)!=NULL){
                                    printf("Nombre: %s, direccion: %s, Telefono %d\ne-mail: %s, Fecha nacimiento: %d/%d/%d\n\n",
                                        agenda[j].nombre, agenda[j].direccion, agenda[j].telefono, agenda[j].email,
                                        agenda[j].nacimiento.dia, agenda[j].nacimiento.mes, agenda[j].nacimiento.año);
                                }
                            }
                            break;
                        default:;
                    }
                    break;
                case 4://Opcion de salir
                    break;
                default: printf("La opcion elegida no es correcta\n");
            }
        }
        printf("\n");


    }while(opcion!=4);


    //Guardamos los datos existentes en el fichero de agenda
    fichero=fopen("agenda.dat", "wb");
    for(j=0; j<i-1; j++){
        fwrite(&agenda[j],sizeof(struct datos),1,fichero);
    }

    fclose(fichero);

    return 0;
}

void imprimir_menu(void){
    //Imprimimos el menu de opciones
    printf("1. Anadir nuevo dato\n");
    printf("2. Visualizar los nombres registrados\n");
    printf("3. Mostrar todos los datos de alguien\n");
    printf("4. Salir\n");
}

int seleccionar_opcion(void){
    int opcion;
    char cadena_temporal[2];

    printf("Opcion: ");
    gets(cadena_temporal);
    sscanf(cadena_temporal,"%1d", &opcion);

    if(opcion!=1 && opcion!=2 && opcion!=3 && opcion!=4){
        printf("La opcion elegida no es correcta\n\n");
        seleccionar_opcion();
    }

    printf("\n");
    return opcion;
}
#14
Programación C/C++ / Usos fwrite, fread
11 Septiembre 2012, 17:09 PM
Hola a todos, estoy siguiendo un manual de programación, y ando con el manejo de ficheros, el problema es que me mandan mejorar un programa que ya he creado y no entiendo las mejoras.

En el programa leo los datos del fichero con fgets y fscanf para almacenarlos en el struct, y me mandan leerlos mediante fread y escribirlos con fwrite en lugar de con fprintf, pero no entiendo porque mejora eso el programa

A ver si alguien me orienta un poco, pongo el código que tengo hasta ahora, aunque no quiero que nadie implemente el uso de fwrite y fread, solo quiero una explicación

Un saludo


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

struct fecha{
    int dia, mes, año;
};

struct{
    char nombre[21], direccion[41], email[41];
    int telefono;
    struct fecha nacimiento;
}agenda[100];

int main(){
    int opcion;//Almacena la opcion elegida en el menu
    int i=0;//Contador del stuct para saber los datos leidos y escritos
    int j,k; //Variables auxiliares para los bucles
    int tipo_busqueda;
    char cadena_temporal[9], nombre_buscar[20]; //Cadenas auxiliares para leer numeros con gets()
    FILE* fichero;

    //Leemos los datos existentes
    fichero=fopen("agenda.dat", "rt");

    if(fichero==NULL){//Si no existe el fichero damos aviso de que lo vamos a crear
        printf("El fichero aun no existe, asi que se creara\n\n");
    }
    else{
        printf("Lectura correcta del fichero\n\n");
        while(! feof(fichero)){//Leemos los datos del fichero y los almacenamos en el struct
            fgetc(fichero);
            fgets(agenda[i].nombre,20,fichero);
            //Quitamos los espacios que hay antes de la cadena
            for(k=0; k<21;k++){
                if(agenda[i].nombre[k]!=' '){
                    j=0;
                    for(;k<21;k++){
                        agenda[i].nombre[j]=agenda[i].nombre[k];
                        j++;
                    }
                }
            }
            fgetc(fichero);
            fgets(agenda[i].direccion,40,fichero);
            //Quitamos los espacios que hay antes de la cadena
            for(k=0; k<41;k++){
                if(agenda[i].direccion[k]!=' '){
                    j=0;
                    for(;k<41;k++){
                        agenda[i].direccion[j]=agenda[i].direccion[k];
                        j++;
                    }
                }
            }
            fscanf(fichero,"%9d", &agenda[i].telefono);
            fgetc(fichero);
            fgets(agenda[i].email,40,fichero);
            //Quitamos los espacios que hay antes de la cadena
            for(k=0; k<41;k++){
                if(agenda[i].email[k]!=' '){
                    j=0;
                    for(;k<41;k++){
                        agenda[i].email[j]=agenda[i].email[k];
                        j++;
                    }
                }
            }
            fscanf(fichero,"%d%d%d", &agenda[i].nacimiento.dia, &agenda[i].nacimiento.mes,
                   &agenda[i].nacimiento.año);
            fgetc(fichero);
            i++;
        }
    }


    fclose(fichero);


    //Interactuamos con el usuario
    do{
        //Imprimimos el menu de opciones
        printf("1. Anadir nuevo dato\n");
        printf("2. Visualizar los nombres registrados\n");
        printf("3. Mostrar todos los datos de alguien\n");
        printf("4. Salir\n");
        printf("Opcion: ");
        gets(cadena_temporal);
        sscanf(cadena_temporal,"%1d", &opcion);
        printf("\n");

        if(opcion==1 && i>99){//Si la agenda esta llena no tomara mas datos
            printf("La agenda ya esta llena\n\n");

        }
        else{//Cuando la agenda no esta llena aun

            //Creamos un switch con las opciones
            switch(opcion){
                case 1://Añadimos un nuevo dato al struct
                    printf("Introduce el nombre: ");
                    gets(agenda[i].nombre);
                    printf("Introduce la direccion: ");
                    gets(agenda[i].direccion);
                    printf("Introduce el telefono: ");
                    gets(cadena_temporal);
                    sscanf(cadena_temporal,"%9d", &agenda[i].telefono);
                    printf("Introduce el e-mail: ");
                    gets(agenda[i].email);
                    printf("Introduce la fecha de nacimiento\n");
                    printf("\tdia: ");
                    gets(cadena_temporal);
                    sscanf(cadena_temporal,"%2d", &agenda[i].nacimiento.dia);
                    printf("\tmes: ");
                    gets(cadena_temporal);
                    sscanf(cadena_temporal, "%2d", &agenda[i].nacimiento.mes);
                    printf("\tanio: ");
                    gets(cadena_temporal);
                    sscanf(cadena_temporal, "%4d", &agenda[i].nacimiento.año);
                    i++;
                    break;
                case 2://Mostrar por pantalla los nombres registrados
                    for(j=0; j<i; j++){
                        puts(agenda[j].nombre);
                    }
                    printf("\n");
                    break;
                case 3://Mostrar todos los datos de alguna persona

                    do{//Busqueda parcial o busqueda completa
                        printf("Busqueda completa(0) o busqueda parcial(1): ");
                        gets(cadena_temporal);
                        sscanf(cadena_temporal, "%1d", &tipo_busqueda);
                        if(tipo_busqueda!=0 && tipo_busqueda!=1)
                            printf("La opcion introducida no es correcta\n");
                    }while(tipo_busqueda!=0 && tipo_busqueda!=1);

                    printf("Nombre a buscar: ");
                    gets(nombre_buscar);
                    printf("\n");

                    switch(tipo_busqueda){
                        case 0://Busqueda completa
                            for(j=0; j<i; j++){
                                if(strcmp(nombre_buscar,agenda[j].nombre)==0){
                                    printf("Nombre: %s, direccion: %s, Telefono %d\ne-mail: %s, Fecha nacimiento: %d/%d/%d\n\n",
                                        agenda[j].nombre, agenda[j].direccion, agenda[j].telefono, agenda[j].email,
                                        agenda[j].nacimiento.dia, agenda[j].nacimiento.mes, agenda[j].nacimiento.año);
                                }

                            }
                            break;
                        case 1://Busqueda parcial
                            for(j=0; j<i; j++){
                                if(strstr(agenda[j].nombre,nombre_buscar)!=NULL){
                                    printf("Nombre: %s, direccion: %s, Telefono %d\ne-mail: %s, Fecha nacimiento: %d/%d/%d\n\n",
                                        agenda[j].nombre, agenda[j].direccion, agenda[j].telefono, agenda[j].email,
                                        agenda[j].nacimiento.dia, agenda[j].nacimiento.mes, agenda[j].nacimiento.año);
                                }
                            }
                            break;
                        default:;
                    }
                    break;
                case 4://Opcion de salir
                    break;
                default: printf("La opcion elegida no es correcta\n");
            }
        }
        printf("\n");


    }while(opcion!=4);


    //Guardamos los datos existentes en el fichero de agenda
    fichero=fopen("agenda.dat", "wt");
    for(j=0; j<i; j++){
        if(j!=i-1){
            fprintf(fichero, "%20s%40s%9d%40s%2d %2d %4d\n", agenda[j].nombre, agenda[j].direccion, agenda[j].telefono,
                    agenda[j].email, agenda[j].nacimiento.dia, agenda[j].nacimiento.mes, agenda[j].nacimiento.año);
        }
        else
            fprintf(fichero, "%20s%40s%9d%40s%2d %2d %4d", agenda[j].nombre, agenda[j].direccion, agenda[j].telefono,
                    agenda[j].email, agenda[j].nacimiento.dia, agenda[j].nacimiento.mes, agenda[j].nacimiento.año);
    }

    fclose(fichero);

    return 0;
}
#15
Hardware / Re: Ati 3650 con fuente de 250W?
24 Agosto 2012, 18:20 PM
La gráfica esta integrada en la placa base, por lo que probé con la otra que tengo, y ninguna de las 2 iba
Los condensadores si los había mirado, y parecen estar todos en buen estado
Probé también conectando solo el hdd 1 modulo de ram y gráfica y seguía todo igual
Supongo que me tocara llevarlo a un tecnico, ya contare que me dice xD
muchas gracias por la ayuda
Un saludo
#16
Hardware / Re: Ati 3650 con fuente de 250W?
24 Agosto 2012, 18:02 PM
He probado a quitar la pila de la bios, y nada cambio

Ya he probado a quitar una a una las rams y cambiarlas de slot y nada mejora, cuando las quito todas el ordenador pita sin parar

He quitado todos los elementos exceptuando un modulo de ram, y el disco duro, y de nuevo la misma inactividad, asi que supongo que esto reduce el problema a la fuente de alimentacion, la placa base o el procesador, no?
No tengo ningun componente extra de ninguno para hacer pruebas, alguna idea?
Gracias de nuevo
#17
Hardware / Re: Ati 3650 con fuente de 250W?
24 Agosto 2012, 17:43 PM
Escribi sin pensar  :D
ya estoy siguiendo los post que me pusiste, ya quite la pila de la bios y de momento sigue sin cambiar, lo que me estoy dando cuenta es que el ventilador del procesador gira muy rapido, y tienes razon en que no suena el pitido nada mas encender el ordenador
Gracias por la ayuda
#18
Hardware / Re: Ati 3650 con fuente de 250W?
24 Agosto 2012, 17:31 PM
Si el cable lo comprobé, y el monitor también, que mas opciones pueden ser?
#19
Hardware / Re: Ati 3650 con fuente de 250W?
24 Agosto 2012, 17:22 PM
nono, todo el pc enciende perfecto, sin pitidos ni nada pero la pantalla no se ve, por eso supuse que sera tema de la gráfica
#20
Hardware / Ati 3650 con fuente de 250W?
24 Agosto 2012, 17:04 PM
Puedo conectar esta tarjeta grafica si tengo una fuente de solo 250W? es solo para hacer la prueba de si lo que falla en mi ordenador es la grafica
Un saludo