[C con Clase] Error de sintaxi

Alejandro alepelexo en yahoo.es
Mie Abr 30 16:12:47 CEST 2008


¡Hola! No tengo my claro a qué se refiere tu error por lo que tú pones en el mensaje, pero sí veo algunos fallos en el código:

 1.- En la función "cliente* pedirDatos()"

       cliente *cli;
       cli=new cliente; 

Que yo sepa, "new" es un operador único de C++, y no de C... Y parece que tu código está en C por completo. No sé, si el compilador no te dice nada, supongo que estará bien.

 2.- En la función "void bajas(cliente*,cliente* vector);", cuando haces su definición, escribes:

void bajas(cliente*,cliente* vector)
{
       char opc2,opc3;
       ...
}

Creo que no es correcta la definición, porque no le das un nombre al primer argumento. Simplemente pones "void bajas(cliente*,cliente* vector)". El primer argumento debería tener un identificador. Además, cuando llamas a esta función en "main()" lo haces de la siguiente manera:

if(opc=='2')
{                          
    bajas(cliente* ,cliente* vector);
}

No pasas un primer argumento porque sólo escribes "cliente*", que es un tipo que has definido anteriormente, pero no una variable, por lo que no se puede pasar como argumento. Además, en el segundo argumento incluyes "cliente*", que de nuevo es el tipo y no la variable, por lo que lo tendrías que suprimir. Quedaría algo así (lo que va entre "[]" es opcional):

bajas([*]IDENTIFICADOR_VARIABLE ,[*]vector);


Seguramente me he dejado algunos fallos, pero eso ha sido todo lo que he podido ver. Además, creo que tienes algunos fallos de diseño de código, pero es mejor que trates de resolverlos tú mismo. Si no lo logras, ya trataremos de echarte una mano.

Un saludo.


El pasado 2008-04-30 10:30:30, LaInE escribió:
 
L> Buenas me aparece un error de sintaxi y no se porque me aparece me podeis ayudar, 
L>  
L> Adjunto el código y el error.
L>  
L> #include <conio.h>
L> #include <stdlib.h>
L> #include <stdio.h>
L> #include <string.h>
L> #define RANGO 40// variable que define una cadena de 40 carácteres.
L>  
L>  
L> typedef struct// definimos la estrucutura.
L> {
L>        char Nombre[30];//cadena de caracteres. 
L>        char NIF[10];//cadena de caracteres. 
L>        char Direccion[100];//cadena de caracteres. 
L>        char Telefono[15];//cadena de caracteres. 
L>        int Ocupado;//cadena de números. 
L>  
L> }cliente;//es el nuevo tipo de dato de la estructura por eso no hace falta poner etiqueta.
L> cliente vector [RANGO];//variable del cliente.
L>  
L>  
L> void ini(cliente*);//variable que hace que la estructura ponga todo los campos vacios y todo a 0.
L> void menu();//variable donde declararemos el menu que se va a presentar por pantalla.
L> void altas(cliente*);
L> cliente* pedirDatos();
L> int hacerAlta(cliente,cliente*);
L> void bajas(cliente*,cliente* vector);
L> int buscarNom(cliente*);
L> //void consultas();
L> //void modificacion();
L>  
L> void main()
L> {
L>        char opc;           
L>     ini(vector);//variable que hace que la estructura ponga todo los campos vacios y todo a 0.
L>        do
L>              {                   
L>                     menu();//variable donde declararemos el menu que se va a presentar por pantalla.
L>                     fflush(stdin);
L>                     opc=getch();
L>                     system("cls");
L>                     
L>                     if(opc=='1')
L>                     {                          
L>                            altas(vector);
L>                     }
L>                     if(opc=='2')
L>                     {                          
L>                            bajas(cliente* ,cliente* vector);
L>                     }
L>                     if(opc=='3')
L>                     {                          
L>                            //consultas(vector);
L>                     }      
L>                     if(opc=='4')
L>                     {                          
L>                            //modificaciones(vector);
L>                     }                          
L>              }while (opc!='5');  
L> }//final de main
L>  
L>  
L> void ini(cliente* cli)//variable que hace que la estructura ponga todo los campos vacios y todo a 0.
L> {
L>        int i;//declaración de 'i' para hacer el bucle.
L>  
L>        //Bucle para que los campos se rellenen vacios y ceros.
L>        for (i=0;i<RANGO;i++)
L>        {
L>              strcpy (cli[i].Nombre,"");
L>              strcpy (cli[i].NIF,"");
L>              strcpy (cli[i].Direccion,"");
L>              strcpy (cli[i].Telefono,"");
L>              cli[i].Ocupado=0;
L>        }
L> }//final de ini.
L>  
L> void menu()//variable donde declararemos el menu que se va a presentar por pantalla.
L> {
L>  
L>                            fflush(stdin);
L>                            system("cls");
L>                            printf("*******Programa de recuperacion Raul Jimenez*********\n\n\n");
L>                            printf("1.Altas\n");
L>                            printf("2.Bajas\n");
L>                            printf("3.Consultas\n");
L>                            printf("4.Modificacion\n");
L>                            printf("5.Salir\n");
L>                     
L>              
L> }//final de menu
L>  
L> void altas(cliente* vector )
L> {
L>        cliente *cli;
L>        int n;
L>  
L>        cli=pedirDatos();
L>        n=hacerAlta(*cli,vector);
L>  
L>        if(n==-1)
L>              {
L>                     printf("El cliente esta ocupado");
L>                     
L>              }
L>        else
L>              {
L>                     printf("El cliente ocupa el lugar %d",n);
L>              }
L>        getch();
L>  
L>        
L> }//final de altas
L>  
L> cliente* pedirDatos()//declaración de devolución de puntero a cliente
L> {
L>        cliente *cli;
L>        cli=new cliente;
L>        system("cls");
L>        printf("Introduce el Nombre de la empresa:\n");
L>        gets(cli->Nombre);
L>        printf(" Introduce el NIF de la empresa:\n");
L>        gets(cli->NIF);
L>        printf("Introduce la direccion de la empresa:\n");
L>        gets(cli->Direccion);
L>        printf("Introduce el numero de telefono de la empresa:\n");
L>        gets(cli->Telefono);
L>        cli->Ocupado=1;
L>        return cli;
L> }//final de pedirDatos
L>  
L> int hacerAlta(cliente cli,cliente vector[RANGO])
L> {
L>        
L>        int i;
L>        for(i=0;(vector[i].Ocupado==1)&&(i<RANGO);i++)//esto hace que recorra todo el vector
L>        {}
L>              if(i==RANGO)
L>              {
L>                     return -1;
L>              }
L>              else
L>              {
L>                     vector[i]=cli;
L>                     return i;
L>              }
L> }//final de hacerAlta
L>  
L> void bajas(cliente*,cliente* vector)
L> {
L>        char opc2,opc3;
L>  
L>        printf("¿Como quieres dar de baja a la empresa?\n");
L>        printf("1- Buscar por Nombre\n");
L>        printf("2- Por posición\n");
L>  
L>        if(opc2=='1')
L>        {
L>              buscarNom(cliente*,cliente vector[RANGO]);
L>        }
L>        if(opc3=='2')
L>        {
L>              //posicion();
L>        }
L> }
L>  
L> int buscarNom(cliente* Nombre,cliente vector[RANGO])
L> {
L>        
L>        printf("Escribe el nombre de la empresa\n");
L>        gets(Nombre->Nombre);//el primer nombre es el del "cliente* Nombre"
L> }
L>  
L> Y el error que me aparece es:
L>  
L> 1>c:\ejercicios raul jimenez c4\3º trimestre\practica final\source1.cpp(157) : error C2059: error de sintaxis : ','
L> 1>El registro de generación se guardó en el "file://c:\ejercicios raul jimenez C4\3º trimestre\practica final\Debug\BuildLog.htm"
L> 1>practica final - 2 errores, 1 advertencias
L> ========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
L> _______________________________________________
L> Lista de correo Cconclase Cconclase en listas.conclase.net
L> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
L> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


Más información sobre la lista de distribución Cconclase