Ver Mensaje Individual
  #9 (permalink)  
Antiguo 21/12/2008, 11:33
Avatar de grifo
grifo
 
Fecha de Ingreso: octubre-2005
Ubicación: COLOMBIA
Mensajes: 49
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: imprimir un arreglo por referencia

hola Eternal muchas gracias por la respuesta, mira entonces coloco mi codigo, lo que quiero en este momento es que las letras que hay en 2 cadenas string sean pasadas a numeros así:

a = 11
b = 12
c = 13
···

Y así sucesivamente hasta la z que seria 36. Lo anterior es lo minimo que debe hacer el programa en este momento, para hacer la conversion de letras a numero, en un arreglo de enteros voy poniendo los numeros en el orden de las letras y quiero ver como ha quedado ese arreglo... y ese es mi problema pues hay ese violacion de acceso.

Para hacer eso tengo pensado 4 archivos :

El archivo que tiene la funcion main

Código:
#include <iostream>
#include <sstream>
#include <stdlib.h>
#include "principal.cpp"
using namespace std;


int main()
{
	Principal p = Principal("AAA", "daniel");
	cout << p.getCad1().toString() << "\n";
	cout << p.getCad1().toString() << "\n";
	
        return 0;
}
La el archivo que tiene la clase Principal que en main se instancia un objeto de esta clase

Código:
#define _principal_cpp_
#include <iostream>
#include "cadena.cpp"
using namespace std;

class Principal
{
	public:
		Principal();
		Principal(string c1, string c2);
		Cadena getCad1() { return this->cadena1; }
		Cadena getCad2() { return this->cadena2; }
				
	private:
		Cadena cadena1;			// objeto que tiene una cadena son numeros
		Cadena cadena2;			// objeto que tiene una cadena son numeros
		InfoBase cad1[]; 	// vector que tendrá objeto infobase y van 2 a Z de c1
		InfoBase cad2[]; 	// vector que tendrá objeto infobase y van 2 a Z de c2
};



// averiguar Bien como se recibe un vector por parametro
/*
void InfoBase::llenarBases() 	
{
	//int Base = 2 ;
	//int NumerodeBases = 34 ;
	for(int i = 0, base = 2; i <= 34 ; i++, base++) 
	    {
	    	//if (Base <= 36)
	    	  //  {
	    	    	this->cad1[i]= InfoBase(Base,conversor(Base));
	    	  //  }
		}
}
*/


Principal::Principal(string c1, string c2)
{
	this->cadena1 = Cadena(c1);
	this->cadena2 = Cadena(c2);
}

Principal::Principal()
{		}

El archivo que tiene la clase Cadena en en Principal hay dos atributos

Código:
#define _cadena_cpp_
#include <iostream>
#include <ctype.h>	
#include <sstream>								// para atoi
#include <math.h>								
#include "infobase.cpp"							
#define length(x) (sizeof(x)/sizeof(x[0]))		// pasara el tamaño de un arreglo
using namespace std;


class Cadena
{
	public:
		Cadena();						// constructor vacio
		Cadena(string cad);
		int* getCadNum();
		string toString();
		void letraANumero(string s);	// pasa un string a minusculas
		string atoi(int num);
		int conversor(int Base);		// convierte un numero a una base 
		void llenarBases(InfoBase x[]);
	
	private:
		int cadNum[];					// cadena 1 con solo numeros 
		
};


//~ Pasa las letras de la cadena a numeros equivalentes 
void Cadena::letraANumero(string s)
{
   for(int i = 0; s[i]; i++) 
   {  
   		s[i] = tolower(s[i]); //<--convierte a minusculas la cadena
   		switch(s[i])
   		{
   			case 'a':	
   				this->cadNum[i] = 11;
   				break;
   		}	// fin de switch
   }
} 


//~ Convierte el arreglo de enteros en un decimal dependiendo de la base
int Cadena::conversor(int Base)
{
	int valorDecimal = 0 ;
	int exp = 0 ;
	for (int i =(length(this->cadNum)-1); i>=0 ; i--)
	  {
		valorDecimal =+ this->cadNum[i] * pow(Base,exp); 
		exp =+ 1 ;
      }
  return valorDecimal;
}


//~ convierte el arreglo de enteros en una cadena
string Cadena::toString()
{
	string rta = "";
	for(int i = 0; length(this->cadNum); i++)
	{    rta = rta + this->atoi(this->cadNum[i]) + "\n";   
	}
	return rta;
}


//~ Pasa un entero a cadena
string Cadena::atoi(int num)
{
	stringstream cadena;
	cadena << num;
	return cadena.str();
}


int* Cadena::getCadNum()
{
	return this->cadNum;
}


Cadena::Cadena(string cad)
{
	this->cadNum[cad.size()];
}


Cadena::Cadena()
{		}
La otra es la clase InfoBase que permite guardar un valor en decimal y la base

Código:
#include <iostream>
#define _infobase_cpp_


class InfoBase
{
	public:
		InfoBase();
		InfoBase(int base, int valDeci);
		
	private:
		void llenarBases();
		int base;
		int valDeci;	
};


InfoBase::InfoBase()
{	}


InfoBase::InfoBase(int base, int valDeci)
{
	this->base = base;
	this->valDeci = valDeci;	
}
En el main simplente instancio un objeto de Principal y quiero ver lo que hay en unos arreglos.

gracias muchas gracias por los comentarios y gracias por el tiempo..

ciao
__________________
-Tener la conciencia limpia es síntoma de mala memoria.
- Lo importante no es ganar, sino hacer perder al otro
- Si no eres parte de la solución, eres parte del problema.
- Errar es humano, pero echarle la culpa a otro, es más humano todavía.
- Yo no sufro de locura la disfruto a cada momento :-D
:-D

Última edición por grifo; 21/12/2008 a las 11:54