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ú

Temas - kuni2006

#1
Yo hice la siguiente funcion:


int comparar(int vector1[], int n1, int vector2[], int n2)
{
    int i;
    if (n1 == 0 && n2 != 0)
        {
        return -1;
        }
    if  (n2 == 0 && n1 != 0)
        {
        return 1;
        }
    for(i=0;i<n1||i<n2;i++)
        {
        if(vector1[i]<vector2[i])
            {
            return -1;
            }
        if(vector1[i]>vector2[i])
            {
            return 1;
            }
        if(vector1[i]==vector2[i]&&n1==n2)
            {
            return 0;
            }
        }
    return 0;
}


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 C/C++ / Ayuda con error
26 Agosto 2016, 14:06 PM
Buenas gente, me pidieron programar las siguientes funciones

#include "tp0.h"
#include <stdio.h>

void swap (int* x, int* y)
{
    int z;

    z = *x;
    *x = *y;
    *y = z;

}

int maximo(int vector[], int n)
{
    int i, mayor = 0, pos;

    if(n==1)

    for(i=0;i<n;i++)
        {
        if(vector[i]>mayor)
                {
                mayor = vector[i];
                pos = i;
                }
        }

    return pos;

}

int comparar(int vector1[], int n1, int vector2[], int n2)
{
    int i;
    for(i=0;i<n1||i<n2;i++)
        {
        if(vector1[i]<vector2[i])
            {
            return -1;
            }
        else
            {
            if(vector1[i]>vector2[i])
                {
                return 1;
                }
            else
                {
                if(vector1[i]==vector2[i]&&n1==n2)
                    {
                    return 0;
                    }
                }
            }
        }
}

void seleccion(int vector[], int n)
{
    int i, j, k = 0;
    for (i = 0; i < (n - 1); i++)
        {
        for (j = i + 1; j < n; j++)
            {
            if (vector[j] < vector[i])
                {
                k = vector[j];
                vector[j] = vector[i];
                vector[i] = k;
                }
            }
        }
}


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 C/C++ / Problema con feof
9 Agosto 2016, 20:41 PM
Hola yo tengo el siguiente codigo para escrbir en un archivo

{
       if(feof(file1)!=EOF)
       {
       rewind(file1);
       fscanf(file1, "%d", &libre);
       printf("Posicion: %d", libre);
       fseek( file, libre*sizeof(Persona), SEEK_SET );
       }
       else
       {
       fseek( file, 0, SEEK_END );
       }
       fwrite(&persona, sizeof(Persona), 1, file);
       printf("\nPersona guardada!\n");
       pausar();
       fclose(file);
       }


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 C/C++ / Funcion importar de txt
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.

void importar(char* nombreArchivo)
{
    Persona persona;
    FILE* file= fopen("nombres.txt", "rt");
    FILE* file1= fopen(nombreArchivo, "wb");

    while (EOF != fscanf(file, " %u %u %s %[^\n]s", persona.DNI, persona.fnac, persona.apellido, persona.nombres))
    {
        fprintf(file1," %d %d %s %[^\n]s ", persona.DNI, persona.fnac, persona.apellido, persona.nombres);

    }
    fclose;
}
#5
Programación C/C++ / agenda archivos binarios
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.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct
{
   unsigned long int DNI;
   unsigned long int fnac;
   char apellido[64];
   char nombres[64];
}Persona;
 
void crearArchivo(char a[],char b[]);
void menu (char* nombreArchivo, char* control);
Persona crearPersona();
void guardarPersona(Persona persona, char* nombreArchivo);
void mostrarLista(char* nombreArchivo);
void pausar();
 
int main()
{
   char nombreArchivo[20], control[20];
   int opcion1;
   printf("Ingrese el nombre del archivo(Incluya su formato): ");
   scanf("%s",&nombreArchivo);
   printf("Ingrese el nombre del archivo de control(Incluya su formato): ");
   scanf("%s",&control);
   printf("Pulse 1 si desea crear los archivos, 2 si desea proceder al menu: ");
   scanf("%d",&opcion1);
   if(opcion1==1)
   {
       fopen(nombreArchivo,"wb");
       fopen(control,"wb");
       fclose;
       menu (nombreArchivo,control);
   }
   else
   {
       menu(nombreArchivo,control);
   }
   return 0;
}
 
void menu(char* nombreArchivo, char* control)
{
   int opcion;
 
   do{
       system("cls");
       printf("1. Agregar Persona\n");
       printf("2. Consultar Lista\n");
       printf("3. Salir\n\n");
       printf("Ingresar una opcion: ");
       scanf(" %d", &opcion);
 
       if (opcion>0 && opcion<5)
           {
           system("cls");
           switch(opcion){
               case 1:
                   guardarPersona(crearPersona(), nombreArchivo);
                   break;
               case 2:
                   mostrarLista(nombreArchivo);
                   break;
               case 3:
                   printf("Fin del programa\n");
                   break;
 
           }
       }
       else
       {
           printf("\nOpcion no contemplada\n");
           pausar();
       }
   }while (opcion!=5);
}
 
Persona crearPersona()
{
   Persona persona;
 
   printf("DNI: ");
   scanf(" %d", &persona.DNI);
   printf("fnac: ");
   scanf(" %d", &persona.fnac);
   printf("Apellido: ");
   scanf(" %s", persona.apellido);
   printf("Nombres: ");
   scanf(" %s", persona.nombres);
 
   return persona;
}
 
void guardarPersona(Persona persona, char* nombreArchivo)
{
   FILE* file= fopen(nombreArchivo, "ab");
 
   if (file==NULL)
       {
       printf("Error al intentar acceder al archivo\n");
       pausar();
       }
   else
   {
       fwrite(&persona, sizeof(Persona), 1, file);
       printf("\nPersona guardada!\n");
       pausar();
       fclose(file);
   }
}
 
void mostrarLista(char* nombreArchivo)
{
   FILE* file= fopen(nombreArchivo, "rb");
 
   if (file==NULL)
       {
       printf("Error al intentar acceder al archivo\n");
       pausar();
   }
   else
   {
       Persona persona;
       printf("%-10s %-15s %-10s %s\n\n", "DNI", "FechaDeNac", "Apellido", "Nombres");
       while (fread(&persona, sizeof(Persona), 1, file))
       {
           printf("%-10d %-15d %-10s %s\n", persona.DNI, persona.fnac, persona.apellido, persona.nombres);
       }
       fclose(file);
       printf("\n\n");
       pausar();
   }
}
 
void pausar()
{
   printf("Presione ENTER para continuar");
 
   while (getchar() != '\n');
   getchar();
 
   printf("");
#6
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.

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

typedef struct
{
    unsigned long int DNI;
    unsigned long int fnac;
    char apellido[64];
    char nombres[64];
}Persona;

void crearArchivo(char a[],char b[]);
void menu (char* nombreArchivo, char* control);
Persona crearPersona();
void guardarPersona(Persona persona, char* nombreArchivo);
void mostrarLista(char* nombreArchivo);
void pausar();

int main()
{
    char nombreArchivo[20], control[20];
    int opcion1;
    printf("Ingrese el nombre del archivo(Incluya su formato): ");
    scanf("%s",&nombreArchivo);
    printf("Ingrese el nombre del archivo de control(Incluya su formato): ");
    scanf("%s",&control);
    printf("Pulse 1 si desea crear los archivos, 2 si desea proceder al menu: ");
    scanf("%d",&opcion1);
    if(opcion1==1)
    {
        fopen(nombreArchivo,"wb");
        fopen(control,"wb");
        fclose;
        menu (nombreArchivo,control);
    }
    else
    {
        menu(nombreArchivo,control);
    }
    return 0;
}

void menu(char* nombreArchivo, char* control)
{
    int opcion;

    do{
        system("cls");
        printf("1. Agregar Persona\n");
        printf("2. Consultar Lista\n");
        printf("3. Salir\n\n");
        printf("Ingresar una opcion: ");
        scanf(" %d", &opcion);

        if (opcion>0 && opcion<5)
            {
            system("cls");
            switch(opcion){
                case 1:
                    guardarPersona(crearPersona(), nombreArchivo);
                    break;
                case 2:
                    mostrarLista(nombreArchivo);
                    break;
                case 3:
                    printf("Fin del programa\n");
                    break;

            }
        }
        else
        {
            printf("\nOpcion no contemplada\n");
            pausar();
        }
    }while (opcion!=5);
}

Persona crearPersona()
{
    Persona persona;

    printf("DNI: ");
    scanf(" %d", &persona.DNI);
    printf("fnac: ");
    scanf(" %d", &persona.fnac);
    printf("Apellido: ");
    scanf(" %s", persona.apellido);
    printf("Nombres: ");
    scanf(" %s", persona.nombres);

    return persona;
}

void guardarPersona(Persona persona, char* nombreArchivo)
{
    FILE* file= fopen(nombreArchivo, "ab");

    if (file==NULL)
        {
        printf("Error al intentar acceder al archivo\n");
        pausar();
        }
    else
    {
        fwrite(&persona, sizeof(Persona), 1, file);
        printf("\nPersona guardada!\n");
        pausar();
        fclose(file);
    }
}

void mostrarLista(char* nombreArchivo)
{
    FILE* file= fopen(nombreArchivo, "rb");

    if (file==NULL)
        {
        printf("Error al intentar acceder al archivo\n");
        pausar();
    }
    else
    {
        Persona persona;
        printf("%-10s %-15s %-10s %s\n\n", "DNI", "FechaDeNac", "Apellido", "Nombres");
        while (fread(&persona, sizeof(Persona), 1, file))
        {
            printf("%-10d %-15d %-10s %s\n", persona.DNI, persona.fnac, persona.apellido, persona.nombres);
        }
        fclose(file);
        printf("\n\n");
        pausar();
    }
}

void pausar()
{
    printf("Presione ENTER para continuar");

    while (getchar() != '\n');
    getchar();

    printf("");
}
#7
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
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 C/C++ / Ayuda urgente
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 C/C++ / ejercicio fracciones
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.