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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Problema con Ejecutable en: 13 Marzo 2015, 04:40 am
Gracias por responder Maestro rir3760 con esas observaciones e me hisistes  funcionar el programa y tendre encuenta tu comentario de el uso de gets  Dios te bendiga.   
2  Programación / Programación C/C++ / Problema con Ejecutable en: 13 Marzo 2015, 03:10 am
Hola  buen dia realizado un codigo en C y al momento de compilar me dice que no hay errores pero el problema que cuando abre el ejecutable muestra un error, ya descarte que sea problema del compilador  debido a que otros  codigos si me ejecuta bien...

les dejo el codigo para que medigan si acaso es alguna parte que tengo mal programada-escrito...

Código:

#include <stdio.h>
#include <stdlib.h>
#define LNOMBRE 50
#define LDIRECCION 100
   typedef struct
   {
      char nombre[LNOMBRE];          /* Nombre */
      char direccion[LDIRECCION];    /* Dirección */
      long telefono;                 /* Teléfono */
   } TipoDato;
/* Lee un dato desde el registro indicado */
   int leeDato(FILE *fichero, TipoDato *dato, int pos)
   {
      if(fseek(fichero,pos*sizeof(TipoDato),SEEK_SET))
         return 0;
      return fread(dato, sizeof(TipoDato),1,fichero)==1;
   }
/* Escribe un dato desde el registro indicado */
   int escribeDato(FILE *fichero, TipoDato *dato, int pos)
   {
      if(fseek(fichero,pos*sizeof(TipoDato),SEEK_SET))
         return 0;
      return fwrite(dato, sizeof(TipoDato),1,fichero)==1;
   }
/* Añade un dato al final del fichero */
   int anadeDato(FILE *fichero, TipoDato *dato)
   {
      if(fseek(fichero,0,SEEK_END))
         return 0;
      return fwrite(dato, sizeof(TipoDato),1,fichero)==1;
   }
/*Programa de prueba que aleatoriamente añade o modifica */
   int main()
   {
      int i,nreg,anade,res;
      FILE *f;
      TipoDato d;
      if((f=fopen("listin.bin","r+b"))== NULL)
         return 1;
   /*Muestra los datos*/
      for(i=0; ; i++)
         if(leeDato(f,&d,i))
            printf("Registro :%d\nNombre: %s\nDireccion: %s\nTelefono : %dl\n",
                  i+1,d.nombre,d.direccion, d.telefono);
         else
            break;
      anade=rand()%2;
      if(anade)
         printf("Adición de registro\n");
      else
      {
         printf("Modificación de registro\n");
         printf("Número de registro ");
         scanf("%d",&nreg);
         gets(d.nombre);  /* Se lee el final de línea que queda */
      }
      printf("Nombre ");
      gets(d.nombre);
      printf("Dirección ");
      gets(d.direccion);
      printf("Número de teléfono ");
      scanf("%dl",&d.telefono);
      if(anade)
         res=anadeDato(f,&d);
      else
         res=escribeDato(f,&d,nreg-1);
      if(!res)
         printf("Error\n");
      fclose(f);
      return 0;
}


esta es lo que me muestra el ejecutable:
http://www.subirimagenes.net/i/150313030930376587.jpg
3  Programación / Programación C/C++ / Re: Error en codigo Ayuda!!! en: 8 Marzo 2015, 09:51 am
Me respondo a mi mismo ya  arregle los errores, compila el programa pero sigo necesitando de su ayuda, ahora  compila y ejecuta pero cuando  tecleo la Opcion 1 y preciono ENTER  simplemente regresa al menu y asi con las otras Opciones

Este es el codigo corregido y "funcional" aun que con un problemita....

Código:

#include<stdio.h>
#include<iostream>
void lectura_datos(float*apun_trabajadores[10]);
void imprimir_datos(float*apun_trabajadores[10]);
void calcular_salarioTotal(float*apun_trabajadores[10]);
main()
{
float*apun_trabajadores[10];
int opc;
do
{
printf("*******MENU*******\n");
printf("1.-LECTURA DE CLAVE Y SALARIO \n");
printf("2.-APLICAR DESCUENTOS \n");
printf("3.-IMPRIMIR TABLA \n");
printf("4.-SALIR DEL PROGRAMA \n");
printf("SELECCIONE LA OPCION DESEADA \n");
scanf("%d",&opc);
switch(opc)
{
case 1:
{
void lectura_datos(float*apun_trabajadores[10]);
break;
}
case 2:
{
void calcular_salarioTotal(float*apun_trabajadores[10]);
break;
}
case 3:
{
void imprimir_datos(float*apun_trabajadores[10]);
break;
}
}
}
while(opc!=4);
}
void lectura_datos(float*apun_trabajadores[10])
{
          
int fila, columna;

for(fila=0;fila<10;fila++)
apun_trabajadores[fila]=(float*)malloc(6*sizeof(float));
for(fila=0;fila<10;fila++)
{
printf("CLAVE DEL TRABAJADOR %d= ", fila);
scanf("%f",(apun_trabajadores[fila]+0));
 printf("SALARIO DEL TRABAJADOR %d= ", fila);
scanf("%f",(apun_trabajadores[fila]+1));
}
}
void imprimir_datos(float*apun_trabajadores[10])
{
int fila,columna;
printf("LOS ELEMENTOS DEL ARREGLO SON \n");
printf("CLAVE\tSAL_B\tIMSS\tINAS\tHRS EXT\tTOTAL\t");
for(fila=0;fila<10;fila++)
{
printf("\n");
for (columna=0;columna<6;columna++)
{
printf("%.2f\t",*(apun_trabajadores[fila]+columna));

}
}
printf("\n");
}
void calcular_salarioTotal(float*apun_trabajadores[10])
{
int fila;
float s_neto,descuento_inasistencia,bono_horaextra;
for(fila=0;fila<10;fila++)
{
printf("DESCUENTO IMSS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+2));
printf("NUMERO DE FALTAS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+3));
printf("HORAS EXTRAS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+4));

printf("%.2f ",*(apun_trabajadores[fila]+1));
descuento_inasistencia=*(apun_trabajadores[fila]+1)/7* *(apun_trabajadores[fila]+3);
bono_horaextra=(*(apun_trabajadores[fila]+1)/7)/4* *(apun_trabajadores[fila]+4);
s_neto=*(apun_trabajadores[fila]+1)-*(apun_trabajadores[fila]+2)- descuento_inasistencia+bono_horaextra;
*(apun_trabajadores[fila]+5)=s_neto;
}
}




y necesito que me aclaren estas dos preguntas dudas:


   ¿Por qué el arreglo bidimensional es declarado con un solo índice (solo se especifican las filas y no las columnas)?

        float *apun_trabajadores[10];

    ¿Por qué se debe reservar espacio para las columnas? (malloc)
         for(fila=0; fila<10; fila++) apun_trabajadores[fila]=(float*) malloc(6*sizeof(float));
4  Programación / Programación C/C++ / Error en codigo Ayuda!!! en: 8 Marzo 2015, 07:22 am
Hola a me dejaron un trabajo de la escuela  crear un programa en dev c++ y pues ya  hice todo solo que tengo un pequeño problema  tengo unos errores que no logro detectar.. les dejo el codigo y espero y puedan corregirmelo que ya me canse de investigar y por eso recurro a ustedes:

Código:

#include<stdio.h>
#include<iostream.h>
void lectura_datos(float*apun_trabajadores[10]);
void imprimir_datos(float*apun_trabajadores[10]);
void calcular_salarioTotal(float*apun_trabajadores[10]);
main()
{
float*apun_trabajadores[10];
int opc;
do
{
printf("*******MENU*******\n");
printf("1.-LECTURA DE CLAVE Y SALARIO \n");
printf("2.-APLICAR DESCUENTOS \n");
printf("3.-IMPRIMIR TABLA \n");
printf("4.-SALIR DEL PROGRAMA \n");
printf("SELECCIONE LA OPCION DESEADA \n");
scanf("%d",&opc);
switch(opc)
{
case 1:
{
lectura_datos(*apun_trabajadores[10]);
break;
}
case 2:
{
calcular_salarioTotal(float*apun_trabajadores[10]);
break;
}
case 3:
{
imprimir_datos(float*apun_trabajadores[10]);
break;
}
}
}
while(opc!=4);
}
void lectura_datos(float*apun_trabajadores[10])
{
int fila,columna;

for(fila=0;fila<10;fila++)
apun_trabajadores[fila]=(float*)malloc(6*sizeof(float));
for(fila=0;fila<10;fila++)
{
printf("CLAVE DEL TRABAJADOR %d= ", fila);
scanf("%f,(apun_trabajadores[fila]+0));
printf("SALARIO DEL TRABAJADOR %d= ", fila);
scanf("%f",(apun_trabajadores[fila]+1));
}
}
void imprimir_datos(float*apun_trabajadores[10])
{
int fila,columna;
printf("LOS ELEMENTOS DEL ARREGLO SON \n");
printf("CLAVE\tSAL_B\tIMSS\tINAS\tHRS EXT\tTOTAL\t");
for(fila=0;fila<10;fila++)
{
printf("\n");
for (columna=0;columna<6;columna++)
{
printf("%.2f\t",*(apun_trabajadores[fila]+columna));

}
}
printf("\n");
}
void calcular_salarioTotal(float*apun_trabajadores[10])
{
int fila;
float s_neto,descuento_inasistencia,bono_horaextra;
for(fila=0;fila<10;fila++)
{
printf("DESCUENTO IMSS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+2));
printf("NUMERO DE FALTAS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+3));
printf("HORAS EXTRAS %d= ",fila);
scanf("%f",(apun_trabajadores[fila]+4));

printf("%.2f ",*(apun_trabajadores[fila]+1));
descuento_inasistencia=*(apun_trabajadores[fila]+1)/7* *(apun_trabajadores[fila]+3);
bono_horaextra=(*(apun_trabajadores[fila]+1)/7)/4* *(apun_trabajadores[fila]+4);
s_neto=*(apun_trabajadores[fila]+1)-*(apun_trabajadores[fila]+2)- descuento_inasistencia+bono_horaextra;
*(apun_trabajadores[fila]+5)=s_neto;
}
}


y ademas tengo dos dudas preguntas que necesito que me despejen con claridad porfa.. ya que quiero queme quede bien claro todo :D


   ¿Por qué el arreglo bidimensional es declarado con un solo índice (solo se especifican las filas y no las columnas)?
        float *apun_trabajadores[10];

    ¿Por qué se debe reservar espacio para las columnas?
         for(fila=0; fila<10; fila++) apun_trabajadores[fila]=(float*) malloc(6*sizeof(float));
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines