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

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 40
171  Programación / Programación C/C++ / desbordamiento de arreglos en: 24 Noviembre 2013, 01:41 am
Saludos, si tengo una matriz en C, en la cual tengo que posicionarme en alguna de las casillas( le pido la fila y la columna al usuario), y despues a apartir de esa casilla quiero moverme x numero de celdas en el eje de las filas y x numero de celdas en el eje de las columnas, ¿Cual es a manera correcta de validar que la nueva posicion en la que me encuentro es una celda valida para que no se desborde el arreglo???,podria ser algo como esto?

Código
  1. void verificarCelda(char **arreglo,int filaInicial,int columnaInicial)
  2. {
  3.    if(arreglo[filaInicial + 2][columnaInicial - 1] != -1)
  4.       printf("Celda valida");
  5. }
  6.  
172  Programación / Programación C/C++ / Re: matrices y memoria dinamica en: 23 Noviembre 2013, 06:32 am
muchas gracias rir3760, con respecto a sizeof(char), o sizeof(int) o el tipo que sea, me he fijado que cuando le asignan dinamicamente memoria en algunos casos lo ponen como:

Código
  1. int main()
  2. {
  3.    char **tablero;
  4.    tablero = (char**)malloc(n*sizeof(char*));
  5.    return 0;
  6. }
  7.  
indicando que es un puntero a char en el sizeof, y en otros casos lo ponen as,(suponiendo que ahora la variable es de tipo int):

variable = (int**) malloc(n*sizeof(int));

por que en algunas ocasiones lo ponen como puntero y en otras no
173  Programación / Programación C/C++ / matrices y memoria dinamica en: 22 Noviembre 2013, 23:13 pm
Saludos

si tengo  una matriz n x n, a la que quiero asignarle memoria dinamicamente porque su tamaño solo se puede saber en tiempo de ejecucion, cual es la manera correcta de hacerlo?

Código
  1. char **tablero;
  2.      tablero = (char**)malloc(tamanio*sizeof(char*);

o esta otra:

Código
  1. char **tablero;
  2. tablero = (char**)malloc(n*sizeof(char));
  3.    for(i = 0;i < n;i++)
  4.       tablero[i] = (char*)malloc(n*sizeof(char));

otra duda, estaba leyendo un manual sobre memoria dinamica y me decia que si hacia algo como esto me iba a dar error de compilacion que porque el compilador requiere que el tamaño del array o de la matriz sea constante:

Código
  1. int main()
  2. {
  3.  
  4.    int num_estudiantes,i;
  5.    printf("Dame numero de estudiantes: ");
  6.    scanf("%d",&num_estudiantes);
  7.    int asignatura[num_estudiantes];
  8.    for(i = 0;i < num_estudiantes;i++)
  9.    {
  10.        printf("Dame un numero \n");
  11.        scanf("%d",&asignatura[i]);
  12.    }
pero ya lo probe y me compila correctamente, a que se debe esto??

gracias
174  Programación / Programación C/C++ / copiar vectores de enteros en: 21 Noviembre 2013, 22:14 pm
Saludos

Tengo un arreglo de enteros y quiero copiarlo a otro arreglo, pense que lo podia hacer con la funcion strcpy(), pero despues me di cuenta que esta solo se usa para cadenas. Entonces que otra manera hay de hacer esto??

gracias
175  Programación / Programación C/C++ / Lista doblemente ligada en: 14 Noviembre 2013, 23:54 pm
Saludos tengo una lista doblemente ligada que me inserta por la cabeza, por el final, despues y antes de un elemento que se le pide al usuario, todavia no esta terminado pero el problema que tengo es con el caso de insertar antes de un elemento dado, que me truena el programa y no entiendo por que, creo que el problema es que una vez que le pido al usuario el numero antes del que quiero ingresar mando llamar a la funcion anterior

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define INSERTAR_CABEZA 1
  4. #define INSERTAR_ANTES 2
  5. #define INSERTAR_DESPUES 3
  6. #define INSERTAR_FINAL 4
  7. #define SALIR 5
  8.  
  9. typedef struct nodo
  10. {
  11.    int elemento;
  12.    struct nodo *sig;
  13.    struct nodo *ant;
  14. }Nodo;
  15.  
  16. Nodo *crearNodo(int insertable);
  17. void insertarCabeza(int insertable,Nodo **cabeza);
  18. void insertar_antes(Nodo *anterior,int insertable);
  19. void insertar_despues(Nodo *posterior,int insertable);
  20. void insertarFinal(Nodo *ultimo,int insertable);
  21. Nodo *buscarElemento(int elementoBuscado,Nodo *cabeza);
  22. void imprimirLista(Nodo *cabeza);
  23. Nodo *ultimoElemento(Nodo *cabeza);
  24. Nodo *Anterior(Nodo *p);
  25.  
  26. int main()
  27. {
  28.    Nodo *cabeza,*anterior,*posterior,*p,*ultimo;
  29.    cabeza = NULL;
  30.    int continuar = 1,opcion,numElementos,insertable,elementoBuscado,i;
  31.    printf("Lista Doblemente Enlazada!\n\n");
  32.    do
  33.    {
  34.        printf("\nMenu\n");
  35.        printf("1) Insertar cabeza de Lista\n");
  36.        printf("2) Insertar antes de elementento\n");
  37.        printf("3) Insertar despues de elemento\n");
  38.        printf("4) Insertar final de Lista\n");
  39.        printf("5) Salir\n");
  40.        scanf("%d",&opcion);
  41.        switch(opcion)
  42.        {
  43.            case INSERTAR_CABEZA:
  44.               printf("Dame el numero de elementos de la lista: ");
  45.               scanf("%d",&numElementos);
  46.               for(i=0;i < numElementos;i++)
  47.               {
  48.                   printf("Dame el elemento a insertar: ");
  49.                   scanf("%d",&insertable);
  50.                   insertarCabeza(insertable,&cabeza);
  51.                   system("cls");
  52.               }
  53.               imprimirLista(cabeza);
  54.               break;
  55.            case INSERTAR_ANTES:
  56.               printf("Antes de que elemento se quiere insertar: ");
  57.               scanf("%d",&elementoBuscado);
  58.               if((p = buscarElemento(elementoBuscado,cabeza))!=NULL)
  59.               {
  60.                   printf("Dame el elemento a insertar: ");
  61.                   scanf("%d",&insertable);
  62.                   anterior = Anterior(p);
  63.                   insertar_antes(anterior,insertable);
  64.               }
  65.               else
  66.                  printf("No se encontro elemento!\n");
  67.               imprimirLista(cabeza);
  68.               break;
  69.            case INSERTAR_DESPUES:
  70.               printf("Despues de que elemento deseas insertar: ");
  71.               scanf("%d",&elementoBuscado);
  72.               if((posterior = buscarElemento(elementoBuscado,cabeza))!=NULL)
  73.               {
  74.                   printf("Dame el elemento a insertar: ");
  75.                   scanf("%d",&insertable);
  76.                   insertar_despues(posterior,insertable);
  77.               }
  78.               else
  79.                  printf("No se encontro elemento!\n");
  80.               imprimirLista(cabeza);
  81.               break;
  82.            case INSERTAR_FINAL:
  83.               printf("Dame el numero de elementos de la lista: ");
  84.               scanf("%d",&numElementos);
  85.               if(estaVacia(cabeza))
  86.               {
  87.                   printf("Dame el elemento a insertar: ");
  88.                   scanf("%d",&insertable);
  89.                   cabeza = crearNodo(insertable);
  90.                   numElementos--;
  91.               }
  92.               for(i = 0;i < numElementos;i++)
  93.               {
  94.                   ultimo = ultimoElemento(cabeza);
  95.                   printf("Dame el elemento a insertar: ");
  96.                   scanf("%d",&insertable);
  97.                   insertarFinal(ultimo,insertable);
  98.               }
  99.               imprimirLista(cabeza);
  100.               break;
  101.            case SALIR:
  102.               continuar = 0;
  103.               break;
  104.        }
  105.        if(continuar)
  106.            system("pause");
  107.    }while(continuar);
  108.    return 0;
  109. }
  110.  
  111. Nodo *crearNodo(int insertable)
  112. {
  113.    Nodo *p;
  114.    p = (Nodo*)malloc(sizeof(Nodo));
  115.    p->elemento = insertable;
  116.    p->sig = NULL;
  117.    p->ant = NULL;
  118.    return p;
  119. }
  120.  
  121. void insertarCabeza(int insertable,Nodo **cabeza)
  122. {
  123.    Nodo *nuevo;
  124.    nuevo = crearNodo(insertable);
  125.    nuevo->sig = *cabeza;
  126.    nuevo->ant = NULL;
  127.    *cabeza = nuevo;
  128. }
  129.  
  130. void insertar_antes(Nodo *anterior,int insertable)
  131. {
  132.    Nodo *nuevo;
  133.    nuevo = crearNodo(insertable);
  134.    anterior->sig->ant = nuevo;
  135.    nuevo->ant = anterior;
  136.    nuevo->sig = anterior->sig;
  137.    anterior->sig = nuevo;
  138. }
  139.  
  140. void insertar_despues(Nodo *posterior,int insertable)
  141. {
  142.    Nodo *nuevo;
  143.    nuevo = crearNodo(insertable);
  144.    posterior->sig->ant = nuevo;
  145.    nuevo->ant = posterior;
  146.    nuevo->sig = posterior->sig;
  147.    posterior->sig = nuevo;
  148. }
  149.  
  150. void insertarFinal(Nodo *ultimo,int insertable)
  151. {
  152.    ultimo->sig = crearNodo(insertable);
  153.    ultimo->sig->sig = NULL;
  154.    ultimo->sig->ant = ultimo;
  155. }
  156.  
  157. void imprimirLista(Nodo *cabeza)
  158. {
  159.    Nodo *ptr;
  160.    for(ptr = cabeza;ptr!=NULL;ptr = ptr->sig)
  161.       printf("%d\t",ptr->elemento);
  162. }
  163.  
  164. Nodo *buscarElemento(int elementoBuscado,Nodo *cabeza)
  165. {
  166.    Nodo *ptr;
  167.    for(ptr = cabeza;ptr!=NULL;ptr = ptr->sig)
  168.    {
  169.        if(ptr->elemento == elementoBuscado)
  170.           return ptr;
  171.    }
  172.    return NULL;
  173. }
  174.  
  175. Nodo *ultimoElemento(Nodo *cabeza)
  176. {
  177.    Nodo *ptr;
  178.    ptr = cabeza;
  179.    while(ptr->sig!=NULL)
  180.       ptr = ptr->sig;
  181.    return ptr;
  182. }
  183.  
  184. int estaVacia(Nodo *cabeza)
  185. {
  186.    if(cabeza == NULL)
  187.       return 1;
  188.    else
  189.       return 0;
  190. }
  191.  
  192. Nodo *Anterior(Nodo *p)
  193. {
  194.    return p->ant;
  195. }
  196.  

gracias
176  Programación / Programación C/C++ / Re: programa tarjetas en: 11 Noviembre 2013, 00:31 am
muchas gracias rir3760 por tu respuesta, estuve leyendo el enlace que pusiste y ahi dice que se puede resolver el problema utilizando solamente arrays y busqueda binaria, pero que la busqueda binaria no es solo para los array ordenados?? o sea que tengo antes que nada ordenar el vector y despues realizar la busqueda binaria del elemento menor del arreglo?? el parrafo dice:

procesa la secuencia de elementos en orden, manteniendo la subsecuencia de incrementos mas larga obtenida hasta ahora. Aqui no se a que se refiere con subsecuencia obtenida, obtenida cuando?? si hasta ahora solo se ha ordenado el arreglo

de nuevo gracias
177  Programación / Programación C/C++ / programa tarjetas en: 9 Noviembre 2013, 06:02 am
Saludos

Tengo el siguiente programa que dice:

Tengo n tarjetas numeradas en cierto orden(al azar), y hay que eliminar algunas de esas tarjetas, de tal forma que las que queden esten ordenadas ascendentemente,  y cuyos valores esten entre el rango 1 <= valores <= 100,000, esto ya lo codifique pero el problema que tengo es que me pide encontrar el menor numero de tarjetas que se pueden eliminar y es lo que no entiendo como hacerlo, o sea que tengo que buscar todas las posibilidades y despues verificar cual es la que puede eliminar el menor numero de tarjetas?? el codigo es el siguiente:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define VALORES 100000
  5.  
  6. typedef struct nodo
  7. {
  8.    int dato;
  9.    struct nodo *sig;
  10. }Nodo;
  11.  
  12. void agregarTarjetas(int x,Nodo **cabeza);
  13. void imprimirTarjetas(Nodo *cabeza);
  14. void eliminarTarjetas(Nodo *cabeza);
  15. Nodo *crearNodo(int x);
  16.  
  17.  
  18. int main()
  19. {
  20.    int numeroTarjetas,i,x;
  21.    Nodo *cabeza;
  22.    cabeza = NULL;
  23.    srand(time(NULL));
  24.    do
  25.    {
  26.        printf("Dame numero de tarjetas: ");
  27.        scanf("%d",&numeroTarjetas);
  28.        system("cls");
  29.    }while((numeroTarjetas < 1)||(numeroTarjetas > 100));
  30.    for(i = 0;i < numeroTarjetas;i++)
  31.    {
  32.        x = rand()% VALORES+1;
  33.        agregarTarjetas(x,&cabeza);
  34.    }
  35.    printf("Archivo original\n");
  36.    imprimirTarjetas(cabeza);
  37.    eliminarTarjetas(cabeza);
  38.    printf("despues\n");
  39.    imprimirTarjetas(cabeza);
  40.    return 0;
  41. }
  42.  
  43. void agregarTarjetas(int x,Nodo **cabeza)
  44. {
  45.    Nodo *nuevo;
  46.    nuevo = crearNodo(x);
  47.    nuevo->sig = *cabeza;
  48.    *cabeza = nuevo;
  49. }
  50.  
  51. Nodo *crearNodo(int x)
  52. {
  53.    Nodo *p;
  54.    p = (Nodo*)malloc(sizeof(Nodo));
  55.    p->dato = x;
  56.    p->sig = NULL;
  57.    return p;
  58. }
  59.  
  60. void imprimirTarjetas(Nodo *cabeza)
  61. {
  62.    Nodo *ptr;
  63.    for(ptr = cabeza;ptr!=NULL;ptr = ptr->sig)
  64.       printf("[%d]",ptr->dato);
  65. }
  66.  
  67. void eliminarTarjetas(Nodo *cabeza)
  68. {
  69.    Nodo *ptr1,*ptr2;
  70.    for(ptr1 = cabeza,ptr2 = ptr1->sig;ptr2!=NULL;ptr2 = ptr2->sig)
  71.    {
  72.        if(ptr2->dato < ptr1->dato)
  73.           ptr1->sig = ptr2->sig;
  74.        else
  75.           ptr1 = ptr1->sig;
  76.    }
  77. }
  78.  

esta la hice con listas con apuntadores porque pense que seria mas facil hacer las eliminaciones, aunque tambien lo habia hecho de esta otra manera, y las dos funcionan solo que no se como hacer un algoritmo que me determine cual es el menor numero de tarjetas que se pueden eliminar

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #define VALORES 100000
  6.  
  7. int *ingresarValores(int numeroTarjetas,FILE *fd);
  8. void eliminarTarjetas(int tarjetas[],int numeroTarjetas,FILE *fd);
  9.  
  10. int main()
  11. {
  12.    FILE *fd;
  13.    int numeroTarjetas,*tarjetas;
  14.    srand(time(NULL));
  15.    if((fd = fopen("F:\\Archivo_Analisis_Algoritmos.txt","w"))!= NULL)
  16.    {
  17.        do
  18.        {
  19.            printf("Dame el numero de tarjetas: ");
  20.            scanf("%d",&numeroTarjetas);
  21.            system("cls");
  22.        }while((numeroTarjetas < 1)||(numeroTarjetas > 1000));
  23.        fprintf(fd,"Archivo de Texto:\n\n");
  24.        tarjetas = ingresarValores(numeroTarjetas,fd);
  25.        eliminarTarjetas(tarjetas,numeroTarjetas,fd);
  26.    }
  27.    else
  28.       printf("No se pudo crear archivo\n");
  29.    return 0;
  30. }
  31.  
  32. int *ingresarValores(int numeroTarjetas,FILE *fd)
  33. {
  34.    int i,*buffer;
  35.    buffer = (int*)malloc(numeroTarjetas*sizeof(int));
  36.    for(i = 0;i < numeroTarjetas;i++)
  37.    {
  38.        buffer[i] = rand()% VALORES+1;
  39.        printf("[%d]",buffer[i]);
  40.        fprintf(fd,"%d,",buffer[i]);
  41.        if((i%10==0)&&(i!=0))
  42.           fprintf(fd,"\n");
  43.    }
  44.    return buffer;
  45. }
  46.  
  47. void eliminarTarjetas(int tarjetas[],int numeroTarjetas,FILE *fd)
  48. {
  49.    int i,j;
  50.    for(i=0;i < numeroTarjetas;i++)
  51.    {
  52.        for(j=i+1;j < numeroTarjetas;j++)
  53.        {
  54.            if(tarjetas[j] < tarjetas[i])
  55.               tarjetas[i] = -1;
  56.        }
  57.    }
  58.    fprintf(fd,"\n\nTarjetas eliminadas\n");
  59.    for(i=0;i < numeroTarjetas;i++)
  60.    {
  61.        if(tarjetas[i] != -1)
  62.           fprintf(fd,"[%d]",tarjetas[i]);
  63.    }
  64.  
  65. }
  66.  

por ejemplo si tengo los numeros [11,500][22,924][13,449][21,933][13,150][1,858][11,516], se que el menor numero de eliminaciones serian 4, y quedaria asi:

[11,500][13,449][21,933], pero trate de buscarle la logica y no supe como

de antemano gracias
178  Programación / Programación C/C++ / Re: colores de texto en: 7 Noviembre 2013, 01:52 am
si lo cheque, ya habia visto ese post, pero ni asi el codigo funciona como quiero que funcione:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #define ASISTENCIA_MINIMA 80
  5. #define PORCENTAJE_TAREAS 10
  6. #define PORCENTAJE_EXAMEN 10
  7. #define PORCENTAJE_MINIPRACTICAS 18
  8. #define PORCENTAJE_SENCILLAS 12
  9. #define PORCENTAJE_INTERESANTE 5
  10. #define PRACTICAS_INTERESANTES 9
  11. #define PRACTICAS_SENCILLAS 6
  12. #define TAREAS 4
  13. #define RETARDOS 3
  14. #define MINITAREAS 5
  15. #define MINIPRACTICAS 9
  16. #define ASISTENCIAS 17
  17. #define MAXIMA 100
  18. #define MINIMA 60
  19.  
  20. int main()
  21. {
  22.    //Declaracion y definicion por defecto de variables(a usar para entrada de datos)
  23.    int i;
  24.    float total_faltas,total_retardos,total_minitareas,total_tareas,total_examen,total_minipracticas,
  25.    total_practicas_sencillas,practica_interesante,total_practica_interesante = 0;
  26.    //Declaracion de variable (para computo)
  27.    float tareas,examen,practicas,total_asistencias,porcentaje_asistencias,calificacion_final;
  28.    //Entrada de Datos
  29.    printf("Evaluador del Taller de Estructura de Datos v1.0\n\n");
  30.    printf("Cuantas faltas acumulaste? ");
  31.    scanf("%f",&total_faltas);
  32.    printf("Cuantos retardos acumulaste? ");
  33.    scanf("%f",&total_retardos);
  34.    printf("Cuantas minitareas realizaste? ");
  35.    scanf("%f",&total_minitareas);
  36.    printf("Cuantas tareas realizaste? ");
  37.    scanf("%f",&total_tareas);
  38.    printf("Cuanto obtuviste en el examen? ");
  39.    scanf("%f",&total_examen);
  40.    printf("Cuantas minipracticas realizaste? ");
  41.    scanf("%f",&total_minipracticas);
  42.    printf("Cuantas practicas sencillas realizaste? ");
  43.    scanf("%f",&total_practicas_sencillas);
  44.    for(i=0;i < PRACTICAS_INTERESANTES;i++)
  45.    {
  46.        printf("Cuanto obtuviste en la practica interesante #%d? ",i+1);
  47.        scanf("%f",&practica_interesante);
  48.        total_practica_interesante+=practica_interesante;
  49.    }
  50.    //Computo de Tareas
  51.    tareas = total_minitareas+((total_tareas*PORCENTAJE_TAREAS)/TAREAS);
  52.    //Computo de Examen
  53.    examen = (total_examen*PORCENTAJE_EXAMEN)/MAXIMA;
  54.    //Computo de Practicas
  55.    practicas = ((total_minipracticas*PORCENTAJE_MINIPRACTICAS)/MINIPRACTICAS)+
  56.                ((total_practicas_sencillas*PORCENTAJE_SENCILLAS)/PRACTICAS_SENCILLAS)+
  57.                ((total_practica_interesante*PORCENTAJE_INTERESANTE)/MAXIMA);
  58.    //Computo de Asistencias
  59.    total_asistencias = ASISTENCIAS-total_faltas-(total_retardos/RETARDOS);
  60.    porcentaje_asistencias = (total_asistencias*100)/ASISTENCIAS;
  61.    //Computo General
  62.    calificacion_final = tareas + examen + practicas;
  63.    printf("\nTareas\tExamen\tPracticas\n");
  64.    printf("%.2f\t",tareas);
  65.    printf("%.2f\t",examen);
  66.    printf("%.2f\n\n",practicas);
  67.    printf("Total de asistencias=\t\t%.2f\n",total_asistencias);
  68.    printf("Porcentaje de asistencias=\t%.2f\t",porcentaje_asistencias);
  69.    if(porcentaje_asistencias < ASISTENCIA_MINIMA)
  70.    {
  71.        system("04");
  72.        printf("No tiene derecho\n");
  73.    }
  74.    else
  75.    {
  76.        system("02");
  77.        printf("Si tiene derecho\n");
  78.    }
  79.    printf("Calificacion Final=\t\t%.2f\t",calificacion_final);
  80.    if(calificacion_final < MINIMA)
  81.       printf("Calificacion no aprobatoria\n");
  82.    else
  83.       printf("Calificacion aprobatoria\n");
  84.    return 0;
  85. }
  86.  

quiero que el texto: Si tiene derecho me lo imprima en verde y no tiene derecho lo imprima en rojo, pero no funciona y ya le agregue conio

gracias
179  Programación / Programación C/C++ / colores de texto en: 6 Noviembre 2013, 01:19 am
Saludos

Si tengo un codigo con varios printf, y quiero cambiarle el color de fuente a solo uno de esos printf, como lo haria, intente con system("color"); pero imprime todo de ese color y no solo el printf que yo quiero,tendria que agregar alguna libreria o algo asi??

gracias
180  Programación / Programación C/C++ / Re: fwrite y estructuras en: 5 Noviembre 2013, 03:11 am
gracias por sus respuestas, el programa me dice:

Crear un “struct” que almacene los siguientes datos de una persona: nombre, edad, ciudad de residencia. Pedir al usuario esos datos de una persona y guardarlos en un fichero llamado “gente.dat”, usando “fwrite”. Cerrar el fichero, volverlo a abrir para lectura y mostrar los datos que se habían guardado, que se deben leer con “fread”.

ya entendi como usar el fwrite para escribir en el archivo.dat, pero ahora el problema que tengo es con el fread() que me tiene que recibir los datos leidos del stream y almacenarlos en un buffer o una estructura, pero me aparece basura todavia

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 35
  5. #define TAM 50
  6. /*
  7.    Crear un “struct” que almacene los siguientes datos de una persona: nombre, edad, ciudad de residencia.
  8.    Pedir al usuario esos datos de una persona y guardarlos en un fichero llamado “gente.dat”, usando “fwrite”.
  9.    Cerrar el fichero, volverlo a abrir para lectura y mostrar los datos que se habían guardado,
  10.    que se deben leer con “fread”.
  11. */
  12.  
  13. typedef struct
  14. {
  15.    char nombre[MAX];
  16.    int edad;
  17.    char ciudad_residencia[MAX];
  18. }Persona;
  19.  
  20. void agregarDatos(Persona *p);
  21.  
  22. int main()
  23. {
  24.    FILE *fd,*ap;
  25.    Persona p,persona;
  26.    agregarDatos(&p);
  27.    if((fd = fopen("F:\\gente.dat","w"))!=NULL)
  28.    {
  29.        fwrite(&p,sizeof(p),1,fd);
  30.        fclose(fd);
  31.        if((ap = fopen("F:\\gente.dat","r"))!=NULL)
  32.        {
  33.            fread(&persona,sizeof(p),1,ap);
  34.            printf("%s",persona.nombre);
  35.            printf("%d",persona.edad);
  36.            printf("%s",persona.ciudad_residencia);
  37.        }
  38.    }
  39.    else
  40.       printf("No se pudo crear archivo\n");
  41.    return 0;
  42. }
  43.  
  44. void agregarDatos(Persona *p)
  45. {
  46.    char buffer[MAX];
  47.    printf("Dame nombre: ");
  48.    fgets(p->nombre,MAX,stdin);
  49.    printf("Dame edad: ");
  50.    fgets(buffer,MAX,stdin);
  51.    sscanf(buffer,"%d",&p->edad);
  52.    printf("Dame ciudad de residencia: ");
  53.    fgets(p->ciudad_residencia,MAX,stdin);
  54. }
  55.  

gracias
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 40
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines