Underc0de - La Casa de los Informáticos

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: 2Fac3R en Septiembre 17, 2015, 09:11:22 PM

Título: [SOLUCIONADO] Arreglo de registro como parametro
Publicado por: 2Fac3R en Septiembre 17, 2015, 09:11:22 PM
Resulta que tengo el siguiente código:

Cita de: cpp
#include <iostream>

using namespace std;

#define TAM_MAX_REGISTROS 20

struct{
        int numRegistro;
        string mes;
        string RCF;
        string concepto;
        float monto;

    }ingresoReg[TAM_MAX_REGISTROS];

    struct{
        int numRegistro;
        string mes;
        string concepto;
        float monto;
    }gastoReg[TAM_MAX_REGISTROS];

Y lo voy a pasar como parametro en una función, que es:
Código (cpp) [Seleccionar]

void Guardar_i(ingresoReg ing[], int nReg)
{
int i;

        ofstream archivo("ingresos.txt",ios::out);

        if(!archivo)
        {
            cout << "No se pudo abrir el archivo" << endl;
            exit(1);
        }

        for(i=0; i<nReg; i++)
        {
            cout << ing[i].numRegistro << "\t" << ing[i].mes << "\t\t" << ing[i].monto << "\t" << ing[i].RCF
        << "\t\t" << ing[i].concepto << endl;
    }

archivo.close();
}


Y la uso de la siguiente manera:
Código (cpp) [Seleccionar]

Guardar_i(ingresoReg,nReg);


El error es:
Citar
blablabla\archivo.h|34|error: variable or field 'Guardar_i' declared void|
blablabla\archivo.h|34|error: 'ingresoReg' was not declared in this scope|
blablabla|34|error: expected primary-expression before 'int'|

Probé de la siguiente forma:
Código (cpp) [Seleccionar]

void Guardar_i(struct ingresoReg ing[], int nReg)


Y tampoco, he buscado y probado todo lo que he encontrado en google y no funciona, de tanto que he probado ya ni sé qué estoy haciendo  ::) xD
¿Cuál es el problema? y ¿Cómo puedo solucionarlo?
Zalu2!
Título: Re:[Duda] Arreglo de registro como parametro
Publicado por: Hu3c0 en Septiembre 18, 2015, 07:39:51 AM
Te hablo desde el lado java porque de C de momento no tengo ni idea:

Cuando se declara un método se le dice si es public private proteted etc sino se  declara nada el  método es comprendido como public.

Después le sigue :sino quieres que retorne ningún dato entonces se pone void o si quieres que retorne algo pues tienes que poner el dato a devolver sea  String Interger , Array[]  o lo que sea.

A continuación van los parámetros en estos parámetros hay que declarar el tipo de dato que va a necesitar  y nombre y creo que aquí es donde tienes el problema por lo que veo le estás pasando por parámetro esto ingresoReg ing[] creo que está mal declarado y luego no lo utilizas en el  método.

Ya de antemano hablo desde mi ignorancia en C pero como tienen  cierta similitud  a java he intentado ayudarte a ver si algún experto en C te ilumina mejor que yo.



Título: Re:[Duda] Arreglo de registro como parametro
Publicado por: 2Fac3R en Septiembre 18, 2015, 05:34:03 PM
No es un método, es una función no tiene porqué ser "public o private", la función que usa el "struct" como parámetro es void, no sé a qué te refieres, quizás no me expliqué bien.

El registro "ing" si que se usa en la función, tampoco sé a qué te refieres con que "no lo utilizo".

He probado con muchas cosas y no me funcionó:
struct ingresoReg ing[]
struct ingresoReg[] ing

entre otras y nada, alguien sabe cómo solucionarlo?
Zalu2
Título: Re:[Duda] Arreglo de registro como parametro
Publicado por: Moy en Septiembre 19, 2015, 12:10:45 AM
creo que es asi


Código (cpp) [Seleccionar]
void Guardar_i(struct ingresoReg ing[], int nReg){}


y esto:

Código (cpp) [Seleccionar]
struct{
        int numRegistro;
        string mes;
        string RCF;
        string concepto;
        float monto;

    }ingresoReg[TAM_MAX_REGISTROS];

    struct{
        int numRegistro;
        string mes;
        string concepto;
        float monto;
    }gastoReg[TAM_MAX_REGISTROS];


deberia ser asi

Código (cpp) [Seleccionar]

struct ingresoReg[TAM_MAX_REGISTROS]{
        int numRegistro;
        string mes;
        string RCF;
        string concepto;
        float monto;

    }

    struct gastoReg[TAM_MAX_REGISTROS]{
        int numRegistro;
        string mes;
        string concepto;
        float monto;
    }


prueba y me dices.

saludos
Título: Re:[Duda] Arreglo de registro como parametro
Publicado por: 2Fac3R en Septiembre 20, 2015, 01:08:38 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
creo que es asi


Código (cpp) [Seleccionar]
void Guardar_i(struct ingresoReg ing[], int nReg){}


Así lo tengo

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

deberia ser asi

Código (cpp) [Seleccionar]

struct ingresoReg[TAM_MAX_REGISTROS]{
        int numRegistro;
        string mes;
        string RCF;
        string concepto;
        float monto;

    }

    struct gastoReg[TAM_MAX_REGISTROS]{
        int numRegistro;
        string mes;
        string concepto;
        float monto;
    }


prueba y me dices.

saludos

Es irrelevante -> https://en.wikipedia.org/wiki/Struct_(C_programming_language) el struct funciona igual.
Sigo sin solucionar el problema  :'(
Zalu2
Título: Re:[Duda] Arreglo de registro como parametro
Publicado por: Moy en Septiembre 20, 2015, 05:02:36 PM
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
creo que es asi


Código (cpp) [Seleccionar]
void Guardar_i(struct ingresoReg ing[], int nReg){}


Así lo tengo

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

deberia ser asi

Código (cpp) [Seleccionar]

struct ingresoReg[TAM_MAX_REGISTROS]{
        int numRegistro;
        string mes;
        string RCF;
        string concepto;
        float monto;

    }

    struct gastoReg[TAM_MAX_REGISTROS]{
        int numRegistro;
        string mes;
        string concepto;
        float monto;
    }


prueba y me dices.

saludos

Es irrelevante -> https://en.wikipedia.org/wiki/Struct_(C_programming_language) el struct funciona igual.
Sigo sin solucionar el problema  :'(
Zalu2


no es irrelevante de hecho el struct va asi

struct IDENTIFICADOR {} OBJETO;

xD

prueba ponerles un identificador y al final tu objeto asi


struct cualquiercosa{
        int numRegistro;
        string mes;
        string RCF;
        string concepto;
        float monto;

    }ingresoReg[TAM_MAX_REGISTROS];

    struct cualquiercosa{
        int numRegistro;
        string mes;
        string concepto;
        float monto;
    }gastoReg[TAM_MAX_REGISTROS];

Título: Re:[Duda] Arreglo de registro como parametro
Publicado por: 2Fac3R en Septiembre 20, 2015, 06:29:00 PM
Me refiero a que es irrelevante porque el error no está ahi.

Es lo mismo, lo que tenía a esto, por dar un ejemplo.

Código (cpp) [Seleccionar]


struct regIngreso{
        int numRegistro;
        string mes;
        string RCF;
        string concepto;
        float monto;

regIngreso ingresoReg[TAM];

    };


El asunto está en el paso como parametro.
¿Alguien sabe cómo puedo solucionarlo?
Zalu2
Título: Re:[Duda] Arreglo de registro como parametro
Publicado por: WhiZ en Septiembre 20, 2015, 11:43:03 PM
Creo que con esto resolvés el problema

Código (cpp) [Seleccionar]


struct Ingreso {
    int numRegistro;
    string mes;
    string RCF;
    string concepto;
    float monto;

} ingresoReg[TAM_MAX_REGISTROS];

struct Gasto {
    int numRegistro;
    string mes;
    string concepto;
    float monto;
} gastoReg[TAM_MAX_REGISTROS];

void guardar_i(Ingreso ing[], int nReg) { /*...*/ }


Saludos!
WhiZ
Título: Re:[Duda] Arreglo de registro como parametro
Publicado por: Moy en Septiembre 21, 2015, 03:57:03 AM
WhiZ es lo mismo que intento explicarle xD pero parece que no me explique bien y si esta ahi el problema

blablabla\archivo.h|34|error: variable or field 'Guardar_i' declared void|
blablabla\archivo.h|34|error: 'ingresoReg' was not declared in this scope|
blablabla|34|error: expected primary-expression before 'int'|

no te toma el ingresoReg por que no le habias puesto un identificador xD

y como lo que usabas no era un identificador te daba error en la funcion igual
y lo de blablabla\archivo.h|34|error: variable or field 'Guardar_i' declared void|

es por que seguro estaba justo arriba de la funcion y como el struct estaba mal declarado afectaba las lineas de abajo y tiraba ese error

bueno espero que con el ejemplo de WhiZ ya soluciones tu problema

saludos
Título: Re:[Duda] Arreglo de registro como parametro
Publicado por: 2Fac3R en Septiembre 22, 2015, 08:50:57 PM
Gracias por la ayuda, creo que tengo que cambiar de libros jaja  ::)
Zalu2