Dev - C++ - Ayuda, los contadores quedan en 0

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda, los contadores quedan en 0

Publicado por Randall (4 intervenciones) el 16/10/2018 04:54:33
Tengo un problema, en este programa tengo contadores que van aumentando en el subprograma "datos", el problema es que cuando llamo esos contadores en el subprograma final "reporte2" para mostrarlos en pantalla salen 0 y no con el valor que deberia, este es el codigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include<iostream.h>
#include<windows.h>
#include<conio.h>
struct asistentes {
	int dni;
	char apn[50];
	char sexo[1];
	char Tentrada[1];
	int Pentrada;
	int Nentrada;
	int Total;
}a[100];
void cantidad(int *xn);
void datos(int xn, int xm, int xf,int xp,int xb,int xPalcoT, int xButacaT, struct asistentes xa[]);
void reporte(int xn, struct asistentes xa[]);
void reporte2(int xm, int xf, int xp, int xb, int xPalcoT, int xButacaT);
void main()
{
	int n, m = 0, f = 0,p=0,b=0;
	int PalcoT=0,ButacaT=0;
	cantidad(&n);
	system("cls");
	datos(n, m, f,p,b,PalcoT,ButacaT, a);
	system("cls");
	reporte(n, a);
	reporte2(m, f, p,b,PalcoT,ButacaT);
	getch();
}
void cantidad(int *xn)
{
	do
	{
		cout << "Ingrese la cantidad de asistentes: "; cin >> *xn;
	} while (*xn > 100);
}
void datos(int xn, int xm, int xf,int xp,int xb,int xPalcoT, int xButacaT, struct asistentes xa[])
{
	cout << "\n\t\t\"TEATRO\"" << endl;
	cout << "\t\t========" << endl;
	for (int i = 0; i < xn; i++)
	{
		cout << "-Asistente #" << (i + 1) << endl;
		cout << "\tIngrese su DNI: "; cin >> xa[i].dni;
		cout << "\tIngrese su Nombre: "; cin >> xa[i].apn;
		cout << "\tIngrese su sexo (M o F): "; cin >> xa[i].sexo;
		if (strcmp(xa[i].sexo, "M") == 0)
		{
			xm=xm+1;
		}
		else
		{
			xf=xf+1;
		}
		cout << "\tIngrese el tipo de entrada (Palco o Butaca): "; cin >> xa[i].Tentrada;
		cout << "\tIngrese el numero de entradas a comprar: "; cin >> xa[i].Nentrada;
		if (strcmp(xa[i].Tentrada, "P") == 0)
		{
			xa[i].Total = xa[i].Nentrada * 125;
			xPalcoT = xPalcoT+xa[i].Total;
			xp=xp+1;
		}
		else
		{
			xa[i].Total = xa[i].Nentrada * 100;
			xButacaT = xButacaT + xa[i].Total;
			xb=xb+1;
		}
		cout << "\n"<<endl;
	}
}
void reporte(int xn, struct asistentes xa[])
{
	cout << "\n\t\t\t\tREPORTE DE ASISTENTES" << endl;
	cout << "  =====================================================================================" << endl;
	cout << "    DNI      Nombre    Sexo    Tipo de Entrada    Numero de Entradas    Importe Total" << endl;
	cout << "  =====================================================================================" << endl;
	for (int i = 0; i < xn; i++)
	{
		gotoxy(2, (i + 6));cout << xa[i].dni;
		gotoxy(12, (i + 6)); cout << xa[i].apn;
		gotoxy(24, (i + 6)); cout << xa[i].sexo;
		gotoxy(38, (i + 6)); cout << xa[i].Tentrada;
		gotoxy(58, (i + 6)); cout << xa[i].Nentrada;
		gotoxy(76, (i + 6)); cout << xa[i].Total;
	}
	cout << endl;
}
void reporte2(int xm,int xf, int xp, int xb, int xPalcoT, int xButacaT)
{
	cout << "\n\n Cantidad de asistentes masculinos: " << xm << endl;
	cout << " Cantidad de asistentes femeninos: " << xf << endl;
	cout << " Cantidad de entradas tipo \"Palco\": " << xp << endl;
	cout << " Cantidad de entradas tipo \"Butaca\": " << xb << endl;
	cout << " Importe total de entradas tipo \"Palco\": " << xPalcoT << endl;
	cout << " Importe total de entradas tipo \"Butaca\": " << xButacaT << endl;
}


Solo funciona cuando lo pongo dentro del subprograma "datos" pero yo quiero que se muestren al final

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include<iostream.h>
#include<windows.h>
#include<conio.h>
struct asistentes {
	int dni;
	char apn[50];
	char sexo[1];
	char Tentrada[1];
	int Pentrada;
	int Nentrada;
	int Total;
}a[100];
void cantidad(int *xn);
void datos(int xn, int xm, int xf,int xp,int xb,int xPalcoT, int xButacaT, struct asistentes xa[]);
void reporte(int xn, struct asistentes xa[]);
void main()
{
	int n, m = 0, f = 0,p=0,b=0;
	int PalcoT=0,ButacaT=0;
	cantidad(&n);
	system("cls");
	datos(n, m, f,p,b,PalcoT,ButacaT, a);
   getch();
	system("cls");
	reporte(n, a);
	getch();
}
void cantidad(int *xn)
{
	do
	{
		cout << "Ingrese la cantidad de asistentes: "; cin >> *xn;
	} while (*xn > 100);
}
void datos(int xn, int xm, int xf,int xp,int xb,int xPalcoT, int xButacaT, struct asistentes xa[])
{
	cout << "\n\t\t\"TEATRO\"" << endl;
	cout << "\t\t========" << endl;
	for (int i = 0; i < xn; i++)
	{
		cout << "-Asistente #" << (i + 1) << endl;
		cout << "\tIngrese su DNI: "; cin >> xa[i].dni;
		cout << "\tIngrese su Nombre: "; cin >> xa[i].apn;
		cout << "\tIngrese su sexo (M o F): "; cin >> xa[i].sexo;
		if (strcmp(xa[i].sexo, "M") == 0)
		{
			xm=xm+1;
		}
		else
		{
			xf=xf+1;
		}
		cout << "\tIngrese el tipo de entrada (Palco o Butaca): "; cin >> xa[i].Tentrada;
		cout << "\tIngrese el numero de entradas a comprar: "; cin >> xa[i].Nentrada;
		if (strcmp(xa[i].Tentrada, "P") == 0)
		{
			xa[i].Total = xa[i].Nentrada * 125;
			xPalcoT = xPalcoT+xa[i].Total;
			xp=xp+1;
		}
		else
		{
			xa[i].Total = xa[i].Nentrada * 100;
			xButacaT = xButacaT + xa[i].Total;
			xb=xb+1;
		}
		cout << "\n"<<endl;
      	cout << "\n\n Cantidad de asistentes masculinos: " << xm << endl;
	cout << " Cantidad de asistentes femeninos: " << xf << endl;
	cout << " Cantidad de entradas tipo \"Palco\": " << xp << endl;
	cout << " Cantidad de entradas tipo \"Butaca\": " << xb << endl;
	cout << " Importe total de entradas tipo \"Palco\": " << xPalcoT << endl;
	cout << " Importe total de entradas tipo \"Butaca\": " << xButacaT << endl;
	}
}
void reporte(int xn, struct asistentes xa[])
{
	cout << "\n\t\t\t\tREPORTE DE ASISTENTES" << endl;
	cout << "  =====================================================================================" << endl;
	cout << "    DNI      Nombre    Sexo    Tipo de Entrada    Numero de Entradas    Importe Total" << endl;
	cout << "  =====================================================================================" << endl;
	for (int i = 0; i < xn; i++)
	{
		gotoxy(2, (i + 6));cout << xa[i].dni;
		gotoxy(12, (i + 6)); cout << xa[i].apn;
		gotoxy(24, (i + 6)); cout << xa[i].sexo;
		gotoxy(38, (i + 6)); cout << xa[i].Tentrada;
		gotoxy(58, (i + 6)); cout << xa[i].Nentrada;
		gotoxy(76, (i + 6)); cout << xa[i].Total;
	}
	cout << endl;
}
triforce-wallpaper-300x300
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder