[SOLUCIONADO] Arreglo de registro como parametro

Iniciado por 2Fac3R, Septiembre 17, 2015, 09:11:22 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Septiembre 17, 2015, 09:11:22 PM Ultima modificación: Septiembre 24, 2015, 01:58:50 PM por Gabriela
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

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

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

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!
Sólo el conocimiento te hace libre.

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.



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


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
Sólo el conocimiento te hace libre.

creo que es asi


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



y esto:

Código: cpp
 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

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
Código: cpp
:)

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
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

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 -> 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 el struct funciona igual.
Sigo sin solucionar el problema  :'(
Zalu2
Sólo el conocimiento te hace libre.

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
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

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 -> 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 el struct funciona igual.
Sigo sin solucionar el problema  :'(
Zalu2


no es irrelevante de hecho el struct va asi

Código: text
struct IDENTIFICADOR {} OBJETO; 


xD

prueba ponerles un identificador y al final tu objeto asi

Código: text

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];

Código: cpp
:)

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


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
Sólo el conocimiento te hace libre.

Creo que con esto resolvés el problema

Código: cpp


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


Septiembre 21, 2015, 03:57:03 AM #8 Ultima modificación: Septiembre 21, 2015, 04:01:45 AM por Moy
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
Código: cpp
:)

Gracias por la ayuda, creo que tengo que cambiar de libros jaja  ::)
Zalu2
Sólo el conocimiento te hace libre.