• Viernes 8 de Noviembre de 2024, 20:18

Autor Tema:  Ayudenme Porfaaaaaaaa  (Leído 2064 veces)

maximo10

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Ayudenme Porfaaaaaaaa
« en: Miércoles 13 de Diciembre de 2006, 02:48 »
0
HOLA AMIGOS NECESITO AYUDA CON ESTE PROGRAMA SALE EL ERROR:

LVALUE REQUIRED Y NO SE PORQUE O COMO PONERLE VALOR CERO O NULO A NOMBRE ESPERO ME AYUDEN.

#include<stdio.h>
#include<conio.h>


struct REGEMPL
{
   int NUMERO;
   char NOMBRE[30];
   int DEPTO;
   int PUESTO;
   float SUELDO;
}  REGEMPL;

   FILE *EMPLEADOS;
   int I,NUM,NUMREGISTROS,OPCION;
   char DESEA[1],SEGURO[1];
   void CREAR();
   void ALTAS();
   void BAJAS();
   void CAMBIOS();
   void CONSULTAS();
   void CATALOGO();
   void NOMINA();

void main()
{
   clrscr();
   printf("        SISTEMA DE NOMINA\n\n\n");
   printf("1.CREAR ARCHIVO\n");
   printf("2.ALTAS\n");
   printf("3.BAJAS\n");
   printf("4.CAMBIOS\n");
   printf("5.CONSULTAS\n");
   printf("6.CATALOGO DE EMPLEADOS\n");
   printf("7.NOMINA QUINCENAL\n");
   printf("8.SALIR\n\n\n");
   printf("OPCION:  ");
   scanf("%s",&OPCION);
  switch (OPCION)
     {
     case '1': CREAR(); break;
     case '2': ALTAS(); break;
     case '3': BAJAS(); break;
     case '4': CAMBIOS(); break;
     case '5': CONSULTAS(); break;
     case '6': CATALOGO(); break;
     case '7': NOMINA(); break;
     case '8': break;
     default: OPCION=8;
     }
}

   //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*--*-*-*-*-*-*-*
   //      FUNCIONES                                     //
   //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*--*-*-*-*--*-*-*-*-*-*-*

void CREAR()
  {
  clrscr();
  printf("CREAR ARCHIVO\n\n");
  EMPLEADOS = fopen("c://EMPLEADOS.DAT","wr");
  printf("¨Cuantos registros deseas realizar ?:  ");
  scanf("%d",&NUMREGISTROS);

  REGEMPL.NUMERO=0;
 REGEMPL.NOMBRE='NA';
  REGEMPL.DEPTO=0;
  REGEMPL.PUESTO=0;
  REGEMPL.SUELDO=0;


  getche();
  }

void ALTAS()
{
clrscr();
printf("ALTAS");
getche();
}

void BAJAS()
{
clrscr();
printf("BAJAS");
getche();
}

void CAMBIOS()
{
clrscr();
printf("CAMBIOS");
getche();
}

void CONSULTAS()
{
clrscr();
printf("CONSULTAS");
getche();
}

void CATALOGO()
{
clrscr();
printf("CATALOGO");
getche();
}

void NOMINA()
{
clrscr();
printf("NOMINA");
getche();
}

robertogt

  • Miembro activo
  • **
  • Mensajes: 97
  • Nacionalidad: gt
    • Ver Perfil
    • http://robertux.wordpress.com
Re: Ayudenme Porfaaaaaaaa
« Respuesta #1 en: Miércoles 13 de Diciembre de 2006, 03:23 »
0
Lo que pasa es que a una variable tipo char, y que la estas manejando como cadena no le podes asignar un valor asi como lo estas haciendo.

Si querés inicializar una cadena lo tenés que hacer con el caracter '\0' si no estoy mal

escribir
Código: Text
  1.  
  2. REGEMPL.NOMBRE='NA';
  3.  
  4.  
Es incorrecto ya que la variable NOMBRE es un vector de caracteres, y en ese momento no le estás asignando el valor 'NA' a alguna posicion del vector.

con que le cambies esto si va a correr, por ejemplo con
Código: Text
  1.  
  2. REGEMPL.NOMBRE[0]='NA';
  3.  
  4.  
Un dia sin sol es como, ya sabes, ... noche

maximo10

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Ayudenme Porfaaaaaaaa
« Respuesta #2 en: Miércoles 13 de Diciembre de 2006, 03:38 »
0
OK GRACIAS SI FUNCIONO COMO LOS QUIERO

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Ayudenme Porfaaaaaaaa
« Respuesta #3 en: Miércoles 13 de Diciembre de 2006, 03:40 »
0
Cita de: "robertogt"
Es incorrecto ya que la variable NOMBRE es un vector de caracteres, y en ese momento no le estás asignando el valor 'NA' a alguna posicion del vector.

con que le cambies esto si va a correr, por ejemplo con
Código: Text
  1.  
  2. REGEMPL.NOMBRE[0]='NA';
  3.  
  4.  
Y en este caso le estas asignando 2 caracteres a una sola posición, No se como se comporte el programa supongo que asignará el valor "N" a la posición 0 del vector REGEMPL.NOMBRE.

Utiliza el valor "NULL".

Código: Text
  1. REGEMPL.NOMBRE[0]=NULL;
  2.  

Saludos
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

robertogt

  • Miembro activo
  • **
  • Mensajes: 97
  • Nacionalidad: gt
    • Ver Perfil
    • http://robertux.wordpress.com
Re: Ayudenme Porfaaaaaaaa
« Respuesta #4 en: Miércoles 13 de Diciembre de 2006, 04:44 »
0
Corri el programa con esa instruccion y no dio ningun error, pero lo más seguro es que tambien eso sea incorrecto, y solo lo puse así para que se diera cuenta que el error era al no poner el subindice de la cadena, por eso tambien le puse la nota que usara '\0' si queria ponerle un valor null a esa posicion del vector.

y al igual que vos Angel_K_ido, tampoco estoy seguro que haría esa

Código: Text
  1. REGEMPL.NOMBRE[0]='NA';
  2.  
instruccion, porque por otra parte ahi no estoy asignando una cadena a esa posicion del vector o si?? :huh: ,  en realidad ni se para que era que maximo10 utilizaba ese valor de NA, pero lo bueno es que ya lo arreglo  :lol:

Saludos
Un dia sin sol es como, ya sabes, ... noche