[SOLUCIONADO] Arreglo de registro como parametro

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

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante 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.



No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
creo que es asi


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



Así lo tengo

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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 -> No tienes permitido ver los links. Registrarse o Entrar a mi cuenta el struct funciona igual.
Sigo sin solucionar el problema  :'(
Zalu2
Sólo el conocimiento te hace libre.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
creo que es asi


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



Así lo tengo

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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 -> No tienes permitido ver los links. Registrarse o Entrar a mi cuenta el struct funciona igual.
Sigo sin solucionar el problema  :'(
Zalu2


no es irrelevante de hecho el struct va asi

Código: php
struct IDENTIFICADOR {} OBJETO; 


xD

prueba ponerles un identificador y al final tu objeto asi

Código: php

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.