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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Ayuda urgente error en valgrind en: 26 Agosto 2016, 19:13 pm
Yo hice la siguiente funcion:

Código
  1. int comparar(int vector1[], int n1, int vector2[], int n2)
  2. {
  3.    int i;
  4.    if (n1 == 0 && n2 != 0)
  5.        {
  6.        return -1;
  7.        }
  8.    if  (n2 == 0 && n1 != 0)
  9.        {
  10.        return 1;
  11.        }
  12.    for(i=0;i<n1||i<n2;i++)
  13.        {
  14.        if(vector1[i]<vector2[i])
  15.            {
  16.            return -1;
  17.            }
  18.        if(vector1[i]>vector2[i])
  19.            {
  20.            return 1;
  21.            }
  22.        if(vector1[i]==vector2[i]&&n1==n2)
  23.            {
  24.            return 0;
  25.            }
  26.        }
  27.    return 0;
  28. }

y me devuelve el siguiente error varias veces:

==22== Conditional jump or move depends on uninitialised value(s)
==22==    at 0x400738: comparar (tp0.c:67)
==22==    by 0x400DEB: prueba_comparar (tp0_pruebas.c:80)
==22==    by 0x400558: main (tp0_pruebas.c:147)
==22==  Uninitialised value was created by a stack allocation
==22==    at 0x400B20: prueba_comparar (tp0_pruebas.c:48

Si alguien me pudiera dar una mano, estaria muy agradecido.
2  Programación / Programación C/C++ / Ayuda con error en: 26 Agosto 2016, 14:06 pm
Buenas gente, me pidieron programar las siguientes funciones

Código
  1. #include "tp0.h"
  2. #include <stdio.h>
  3.  
  4. void swap (int* x, int* y)
  5. {
  6.    int z;
  7.  
  8.    z = *x;
  9.    *x = *y;
  10.    *y = z;
  11.  
  12. }
  13.  
  14. int maximo(int vector[], int n)
  15. {
  16.    int i, mayor = 0, pos;
  17.  
  18.    if(n==1)
  19.  
  20.    for(i=0;i<n;i++)
  21.        {
  22.        if(vector[i]>mayor)
  23.                {
  24.                mayor = vector[i];
  25.                pos = i;
  26.                }
  27.        }
  28.  
  29.    return pos;
  30.  
  31. }
  32.  
  33. int comparar(int vector1[], int n1, int vector2[], int n2)
  34. {
  35.    int i;
  36.    for(i=0;i<n1||i<n2;i++)
  37.        {
  38.        if(vector1[i]<vector2[i])
  39.            {
  40.            return -1;
  41.            }
  42.        else
  43.            {
  44.            if(vector1[i]>vector2[i])
  45.                {
  46.                return 1;
  47.                }
  48.            else
  49.                {
  50.                if(vector1[i]==vector2[i]&&n1==n2)
  51.                    {
  52.                    return 0;
  53.                    }
  54.                }
  55.            }
  56.        }
  57. }
  58.  
  59. void seleccion(int vector[], int n)
  60. {
  61.    int i, j, k = 0;
  62.    for (i = 0; i < (n - 1); i++)
  63.        {
  64.        for (j = i + 1; j < n; j++)
  65.            {
  66.            if (vector[j] < vector[i])
  67.                {
  68.                k = vector[j];
  69.                vector[j] = vector[i];
  70.                vector[i] = k;
  71.                }
  72.            }
  73.        }
  74. }
  75.  

Pero al compilar me tira el siguiente error:

/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
Compilation failed.

3  Programación / Programación C/C++ / Problema con feof en: 9 Agosto 2016, 20:41 pm
Hola yo tengo el siguiente codigo para escrbir en un archivo

Código
  1. {
  2.        if(feof(file1)!=EOF)
  3.        {
  4.        rewind(file1);
  5.        fscanf(file1, "%d", &libre);
  6.        printf("Posicion: %d", libre);
  7.        fseek( file, libre*sizeof(Persona), SEEK_SET );
  8.        }
  9.        else
  10.        {
  11.        fseek( file, 0, SEEK_END );
  12.        }
  13.        fwrite(&persona, sizeof(Persona), 1, file);
  14.        printf("\nPersona guardada!\n");
  15.        pausar();
  16.        fclose(file);
  17.        }

Hasta donde entiendo, si el archivo esta vacio tiene que ir al else pero no lo hace, alguien me puede dar una mano? desde ya gracias
4  Programación / Programación C/C++ / Funcion importar de txt en: 5 Agosto 2016, 20:46 pm
Estoy trabanjo en una funcion que me permita pasar registro de un txt al archivo binario que utiliza mi programa, esto es lo que se me ocurrio hasta ahora pero no parece funcionar, si alguien me pudiera dar una mano, lo apreciaria mucho.

Código
  1. void importar(char* nombreArchivo)
  2. {
  3.    Persona persona;
  4.    FILE* file= fopen("nombres.txt", "rt");
  5.    FILE* file1= fopen(nombreArchivo, "wb");
  6.  
  7.    while (EOF != fscanf(file, " %u %u %s %[^\n]s", persona.DNI, persona.fnac, persona.apellido, persona.nombres))
  8.    {
  9.        fprintf(file1," %d %d %s %[^\n]s ", persona.DNI, persona.fnac, persona.apellido, persona.nombres);
  10.  
  11.    }
  12.    fclose;
  13. }
5  Programación / Programación C/C++ / agenda archivos binarios en: 2 Agosto 2016, 23:38 pm
Esta es la agenda que hice pero me hace falta una función que me permita actualizar los registros. Tengo algunas ideas de como hacerlo pero ninguna dio resultado, quería saber si alguno de ustedes me podía ayudar, gracias y saludos.


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct
  6. {
  7.    unsigned long int DNI;
  8.    unsigned long int fnac;
  9.    char apellido[64];
  10.    char nombres[64];
  11. }Persona;
  12.  
  13. void crearArchivo(char a[],char b[]);
  14. void menu (char* nombreArchivo, char* control);
  15. Persona crearPersona();
  16. void guardarPersona(Persona persona, char* nombreArchivo);
  17. void mostrarLista(char* nombreArchivo);
  18. void pausar();
  19.  
  20. int main()
  21. {
  22.    char nombreArchivo[20], control[20];
  23.    int opcion1;
  24.    printf("Ingrese el nombre del archivo(Incluya su formato): ");
  25.    scanf("%s",&nombreArchivo);
  26.    printf("Ingrese el nombre del archivo de control(Incluya su formato): ");
  27.    scanf("%s",&control);
  28.    printf("Pulse 1 si desea crear los archivos, 2 si desea proceder al menu: ");
  29.    scanf("%d",&opcion1);
  30.    if(opcion1==1)
  31.    {
  32.        fopen(nombreArchivo,"wb");
  33.        fopen(control,"wb");
  34.        fclose;
  35.        menu (nombreArchivo,control);
  36.    }
  37.    else
  38.    {
  39.        menu(nombreArchivo,control);
  40.    }
  41.    return 0;
  42. }
  43.  
  44. void menu(char* nombreArchivo, char* control)
  45. {
  46.    int opcion;
  47.  
  48.    do{
  49.        system("cls");
  50.        printf("1. Agregar Persona\n");
  51.        printf("2. Consultar Lista\n");
  52.        printf("3. Salir\n\n");
  53.        printf("Ingresar una opcion: ");
  54.        scanf(" %d", &opcion);
  55.  
  56.        if (opcion>0 && opcion<5)
  57.            {
  58.            system("cls");
  59.            switch(opcion){
  60.                case 1:
  61.                    guardarPersona(crearPersona(), nombreArchivo);
  62.                    break;
  63.                case 2:
  64.                    mostrarLista(nombreArchivo);
  65.                    break;
  66.                case 3:
  67.                    printf("Fin del programa\n");
  68.                    break;
  69.  
  70.            }
  71.        }
  72.        else
  73.        {
  74.            printf("\nOpcion no contemplada\n");
  75.            pausar();
  76.        }
  77.    }while (opcion!=5);
  78. }
  79.  
  80. Persona crearPersona()
  81. {
  82.    Persona persona;
  83.  
  84.    printf("DNI: ");
  85.    scanf(" %d", &persona.DNI);
  86.    printf("fnac: ");
  87.    scanf(" %d", &persona.fnac);
  88.    printf("Apellido: ");
  89.    scanf(" %s", persona.apellido);
  90.    printf("Nombres: ");
  91.    scanf(" %s", persona.nombres);
  92.  
  93.    return persona;
  94. }
  95.  
  96. void guardarPersona(Persona persona, char* nombreArchivo)
  97. {
  98.    FILE* file= fopen(nombreArchivo, "ab");
  99.  
  100.    if (file==NULL)
  101.        {
  102.        printf("Error al intentar acceder al archivo\n");
  103.        pausar();
  104.        }
  105.    else
  106.    {
  107.        fwrite(&persona, sizeof(Persona), 1, file);
  108.        printf("\nPersona guardada!\n");
  109.        pausar();
  110.        fclose(file);
  111.    }
  112. }
  113.  
  114. void mostrarLista(char* nombreArchivo)
  115. {
  116.    FILE* file= fopen(nombreArchivo, "rb");
  117.  
  118.    if (file==NULL)
  119.        {
  120.        printf("Error al intentar acceder al archivo\n");
  121.        pausar();
  122.    }
  123.    else
  124.    {
  125.        Persona persona;
  126.        printf("%-10s %-15s %-10s %s\n\n", "DNI", "FechaDeNac", "Apellido", "Nombres");
  127.        while (fread(&persona, sizeof(Persona), 1, file))
  128.        {
  129.            printf("%-10d %-15d %-10s %s\n", persona.DNI, persona.fnac, persona.apellido, persona.nombres);
  130.        }
  131.        fclose(file);
  132.        printf("\n\n");
  133.        pausar();
  134.    }
  135. }
  136.  
  137. void pausar()
  138. {
  139.    printf("Presione ENTER para continuar");
  140.  
  141.    while (getchar() != '\n');
  142.    getchar();
  143.  
  144.    printf("");
6  Programación / Programación C/C++ / Agenda - ayuda con actualizacion en: 2 Agosto 2016, 21:22 pm
Esta es la agenda que hice, queria saber si me podian ayudar con una funcion que  permita actualizar los datos(ej:nombre, apellido, etc) desde ya muchas gracias.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct
  6. {
  7.    unsigned long int DNI;
  8.    unsigned long int fnac;
  9.    char apellido[64];
  10.    char nombres[64];
  11. }Persona;
  12.  
  13. void crearArchivo(char a[],char b[]);
  14. void menu (char* nombreArchivo, char* control);
  15. Persona crearPersona();
  16. void guardarPersona(Persona persona, char* nombreArchivo);
  17. void mostrarLista(char* nombreArchivo);
  18. void pausar();
  19.  
  20. int main()
  21. {
  22.    char nombreArchivo[20], control[20];
  23.    int opcion1;
  24.    printf("Ingrese el nombre del archivo(Incluya su formato): ");
  25.    scanf("%s",&nombreArchivo);
  26.    printf("Ingrese el nombre del archivo de control(Incluya su formato): ");
  27.    scanf("%s",&control);
  28.    printf("Pulse 1 si desea crear los archivos, 2 si desea proceder al menu: ");
  29.    scanf("%d",&opcion1);
  30.    if(opcion1==1)
  31.    {
  32.        fopen(nombreArchivo,"wb");
  33.        fopen(control,"wb");
  34.        fclose;
  35.        menu (nombreArchivo,control);
  36.    }
  37.    else
  38.    {
  39.        menu(nombreArchivo,control);
  40.    }
  41.    return 0;
  42. }
  43.  
  44. void menu(char* nombreArchivo, char* control)
  45. {
  46.    int opcion;
  47.  
  48.    do{
  49.        system("cls");
  50.        printf("1. Agregar Persona\n");
  51.        printf("2. Consultar Lista\n");
  52.        printf("3. Salir\n\n");
  53.        printf("Ingresar una opcion: ");
  54.        scanf(" %d", &opcion);
  55.  
  56.        if (opcion>0 && opcion<5)
  57.            {
  58.            system("cls");
  59.            switch(opcion){
  60.                case 1:
  61.                    guardarPersona(crearPersona(), nombreArchivo);
  62.                    break;
  63.                case 2:
  64.                    mostrarLista(nombreArchivo);
  65.                    break;
  66.                case 3:
  67.                    printf("Fin del programa\n");
  68.                    break;
  69.  
  70.            }
  71.        }
  72.        else
  73.        {
  74.            printf("\nOpcion no contemplada\n");
  75.            pausar();
  76.        }
  77.    }while (opcion!=5);
  78. }
  79.  
  80. Persona crearPersona()
  81. {
  82.    Persona persona;
  83.  
  84.    printf("DNI: ");
  85.    scanf(" %d", &persona.DNI);
  86.    printf("fnac: ");
  87.    scanf(" %d", &persona.fnac);
  88.    printf("Apellido: ");
  89.    scanf(" %s", persona.apellido);
  90.    printf("Nombres: ");
  91.    scanf(" %s", persona.nombres);
  92.  
  93.    return persona;
  94. }
  95.  
  96. void guardarPersona(Persona persona, char* nombreArchivo)
  97. {
  98.    FILE* file= fopen(nombreArchivo, "ab");
  99.  
  100.    if (file==NULL)
  101.        {
  102.        printf("Error al intentar acceder al archivo\n");
  103.        pausar();
  104.        }
  105.    else
  106.    {
  107.        fwrite(&persona, sizeof(Persona), 1, file);
  108.        printf("\nPersona guardada!\n");
  109.        pausar();
  110.        fclose(file);
  111.    }
  112. }
  113.  
  114. void mostrarLista(char* nombreArchivo)
  115. {
  116.    FILE* file= fopen(nombreArchivo, "rb");
  117.  
  118.    if (file==NULL)
  119.        {
  120.        printf("Error al intentar acceder al archivo\n");
  121.        pausar();
  122.    }
  123.    else
  124.    {
  125.        Persona persona;
  126.        printf("%-10s %-15s %-10s %s\n\n", "DNI", "FechaDeNac", "Apellido", "Nombres");
  127.        while (fread(&persona, sizeof(Persona), 1, file))
  128.        {
  129.            printf("%-10d %-15d %-10s %s\n", persona.DNI, persona.fnac, persona.apellido, persona.nombres);
  130.        }
  131.        fclose(file);
  132.        printf("\n\n");
  133.        pausar();
  134.    }
  135. }
  136.  
  137. void pausar()
  138. {
  139.    printf("Presione ENTER para continuar");
  140.  
  141.    while (getchar() != '\n');
  142.    getchar();
  143.  
  144.    printf("");
  145. }
7  Programación / Programación C/C++ / Duda con una funcion de archivos en: 1 Agosto 2016, 23:59 pm
Tengo una duda, estoy trabajando en un programa de archivos binarios y necesitaba una función que solicite nombre del archivo de texto con los registros a agregar y que agregue los registros sin buscar espacio libre ni verificar unicidad de los registros. No si alguien me podia guiar para como poder hacer que agregue los registros al archivo de datos principal, desde ya muchas gracias.
8  Programación / Programación C/C++ / URGENTE Archivos Binarios en: 31 Julio 2016, 20:05 pm
Ayuda por favor, necesito resolver uno de los tres ejercicios a continuación, desde ya muchas gracias

Desarrollar una biblioteca de funciones de disposición (crear, cargar desde archivo de texto y cerrar), actualización (insertar, eliminar y actualizar un registro) y recuperación (leer siguiente registro, buscar un registro dado su identificador y reportar todos los registros en un archivo de texto) para los archivos binarios con registros desordenados que se especifican, y desarrollar los programas correspondientes para manipularlos. Los prototipos de las funciones deben ser idénticos para todos los archivos.
Un programa tipo para la manipulación de un archivo debe consistir de una solicitud del nombre del archivo en la carpeta actual, que a continuación presente un menú con opciones para:  Crear el archivo: lo crea junto con el archivo de control que corresponda abriéndolos en modo “wb” e inmediatamente los cierra vacíos.  Agregar registros editados en un archivo de texto (append): solicita nombre del archivo de texto con los registros a agregar, abre al archivo de datos y a su archivo de control en modo “ab+” y al de texto en modo “rt”, y agrega los registros sin buscar espacio libre ni verificar unicidad de los registros.  Abrir el archivo para actualizar o recuperar registros: abre al archivo de datos y a su archivo de control en modo “rb+”, presenta un menú de operación con todas las opciones de actualización (sólo en caso de que el archivo sea actualizable) y recuperación más una para regresar al menú inicial (que cierra a los archivos antes de volver al menú principal).  Terminar el programa.

Los archivos para los cuales deben desarrollarse una biblioteca y un programa son:
1. Persona((dni)i, (fnac) ?, apellidos, nombres)
Con registros de longitud fija actualizables. Los registros se pueden insertar con fecha de nacimiento nula, y se pueden actualizar para registrar una fecha de nacimiento válida o para corregir errores en nombres o apellidos. La fecha de nacimiento debe ser un entero largo sin signo con formato aaaammdd para fechas válidas, o 0 para fecha nula.
Persona (dni: EL, fnac: EL, apellidos: C(64), nombres: C(64))
2. Factura ((número) i, fecha, descuento, componente ((código de Producto) ie, cantidad, precio de venta unitario) +20)
Con registros de longitud variable no actualizables:
Factura (numFac: EL, fecha: EL, dto: F, cantComp: EC, comp (codProd: EL, cant: EC, pvu: F) +)
3. Producto((código) i, nombre, marca, presentación (descripción, existencia, precio de venta unitario) *)
Con registros de longitud variable organizados en bloques y actualizables:
Producto ((codProd: EL, nomProd: CV, marca: CV, cantPres: EC, present (descrip: CV, existencia: E, pvu: F) *) *
9  Programación / Programación C/C++ / Ayuda urgente en: 30 Julio 2016, 21:11 pm
Hola, queria saber si alguien me puede ayudarme con la siguiente consigna

El archivo para el cual debe desarrollarse una biblioteca y un programa son:

Factura ((número) i, fecha, descuento, componente ((código de Producto) ie, cantidad, precio de venta
unitario) +20)

Con registros de longitud variable no actualizables:

Factura (numFac: EL, fecha: EL, dto: F, cantComp: EC, comp (codProd: EL, cant: EC, pvu: F) +)

Desde ya mucha gracias
10  Programación / Programación C/C++ / ejercicio fracciones en: 21 Mayo 2016, 19:52 pm
por favor me podrian ayudar con este:

Codifica un progrma que utilize la funcion
void fraccion(fraccion v[],int N,fraccion *resultado)
donde el usuario ingrese N numero de fracciones cargadas en v, y que devuelva la suma irreductible de las fracciones.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines