Programación General > C/C++
Problemas sobre plantillas
saudiaz:
Este programa me tiene que almacenar Ncantidades de cualquier tipo por el momento lo estoy haciendo de tipo Float el problema es que me da error en el primer if... y no entiendo por que espero me ayuden ...
Les agradesere de antemana. Por cierto las funciones adicionales las ocupara luego
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
#define Ncantidad
template <class Tipo> class CMuestra{
Tipo pila_bufer[Ncantidad];
Tipo Valor
int indice;
public:
void CMuestra(tipo v, tipo i){
Valor=v;
indice=i;
}
void iniciar_indice(){
indice=0;
}
void guardar_valores();
void mostrar_valores();
// void calcular_porcentaje();
//void ordenar_ascendente();
//void ordenar_descendente();
// void umbral_superfior();
//void umbral_inferior();
};
template <class Tipo> void CMuestra<Tipo>::guardar_valores()
{
if(indice==Ncantidad){
cout<<"n Supero su capacidad de Almacenamiento";
return 0;
}
pila_bufer[indice]=Valor;
indice++;
}
template <class Tipo> void CMuestra<Tipo>::mostrar_valores()
{
if(indice==0)
{
cout<<"nn Sus datos ya fueron mostrados";
return 0;
}
indice--;
cout<<pila_bufer[indice]<<endl;
}
main()
{
CMuestra<float> Muestra01;
cout<<"n Cuantos datos desea Introducir: ";
cin>>Ncantidad;
for(int i=0;i<=Ncantidad;i++)
{
Muestra01.guardar_valores();
}
cout<<"n Mostrando Valores: ";
for(int i=0;i<=Ncantidad;i++)
{
Muestra01.mostrar_valores();
}
getch();
return 0;
}
Epa:
Buenas.
Fijate de usar etiquetas de codigo para que sea mas facil leer.
--- Código: C++ --- #define Ncantidad if(indice==Ncantidad)
Estas definiendo Ncantidad como una constante simbolica VACIA, cuando el preprocesador lee tu codigo, reemplaza Ncantidad por nada, por lo que al momento de compilar tu codigo queda:
if(indice==)
Lo que obviamente presenta un error de semantica.
Eso tambien te deberia generar errores en otros lugares del programa, como en los bucles for.
deberias darla un valor a esta constante, como
#define Ncantidad 50
Saludos
saudiaz:
le comprendo colega y muchas gracias, aun soy un aprendis. El problema es que no le doy un numero directo como #define Ncantidad 5 porque quiero que esa variable me almacene Ncantidades ya sea 50 100 o 1000000 ahora dime, como lo puedo hacer
Epa:
en tu codigo Ncantidad es un constante (simbolica), no una variable, por lo que no le podes cambiar el valor deurante la ejecucion.
Tendrias que hacer que sea una variable (int Ncantidad) perteneciente a la clase, si la declaras de ambito publico va a ser accesible desde todas las funciones, sino se la tenes que pasar como parametro a cada funcion.
Tene en cuanta que esto:
Tipo pila_bufer[Ncantidad];
no esta permitido con variables, por lo que vas a tener que reemplazarlo por algo como
Tipo *pila_bufer;
y despues en el contructor de la clase
pila_bufer = new Tipo[Ncantidad];
y luego en el destructor
delete[] pila_bufer;
ahi podes trabajar con pila_bufer como se fuese una array, por ejemplo pila_bufer[8] = variable;
Saludos
saudiaz:
colega cree que puede ser mas especifico hago los cambios como creo y no funciona
Navegación
[#] Página Siguiente
Ir a la versión completa