Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - neo_from_cs_matrix

#21
Cita de: тαптяαпсє en 21 Agosto 2011, 19:20 PM
Esto te servirá:

Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <conio.h>

int main()
{
   using std::cout;
   using std::endl;
   using std::cin;
   using std::string;

   const unsigned short len = 12; //aqui pones la longitud de la cadena de texto
   string letra;
   string respuesta = "Access:";
   string texto = "************";
   int j;

   //PROGRAMA
   cout << "cPanel Login Access" << endl <<"Pass: ";
   for(int i = 1; i <= len; i++)
   {
           letra = getch();
           if(letra == "_")
           {
                    break;
           }

           respuesta.insert(i+6, letra);
           cout << texto.substr(i-1, 1);
   }
   cin >> j;
   cout << endl << endl << respuesta << endl << endl << endl;
   system("pause");
   return 0;
}


gracias, parece ser getch la forma mas directa de lograr esto

#22
Cita de: El_Java en 21 Agosto 2011, 19:05 PM
el problema de lo que quieres hacer es que el texto que se ingresa en la consola no se ingresa realmente en el buffer del cin hasta que no pulsas enter, asi te da la opcion de borrar si te equivocas, por lo que no se puede sincronizar el poner una letra y que salga el asterisco, otra cosa es que uses librerias graficas como Qt, que te dan la opcion de aplicar un cambio cuando se pulsa una letra y se ponga el * en la caja del texto.
No se si me he explicado bien, alguna duda ya sabes
Un saludo.

ah ahora entiendo porque no sirve esto, porque el cin trabaja con el buffer istream, y este no tiene nada hasta que no se presiona enter, es eso cierto ?
entonces si yo sobrecargo cin eso no ayudaria a cambiar los digitos teclados porque todavia no fueron ingresados al buffer istream..

entonces que otras posibilidades me quedan, aparte de usar getch de conio?
lo de la libreria grafica amigo queda descartado porque soy begineer en este momento  :laugh:

:¬¬



#23
no haber yo encontre eso recien

http://www.daniweb.com/software-development/cpp/threads/32798
http://www.cplusplus.com/forum/general/3766/
http://ph.answers.yahoo.com/question/index?qid=20100928041720AAOyJGd
http://answers.yahoo.com/question/index?qid=20091022163828AAGxeYE

pero eso usa la biblioteca conio, pero quiero hacerlo con cin, osea el ingreso de la clave que sea con cin y entonces lo que necesito es modificar el cin para que cambie todas las letras o numeros que ingreso a hasteriscos, pero internamente guarda los valores reales para compararlos con la clave que esta wardada.
por eso necesito hacerlo con cin, quisiera que alguien me explicara como se hace, osea la parte de modificar el cin para que cambie a hasteriscos
gracias


#24
estoy en un programa de consola, necesito ingresar usuario y clave, pero quiero que la clave sea con hasteriscos asi *****
no se me ocurre mucho, manipular el cin? eso se me habia ocurrido si pero no se bien como hacerlo, me pueden ayudar a hacerlo .. solo necesito esa parte de la conversion a *, lo del ingreso eso no me referia  :xD
#25
Cita de: escabe en  8 Agosto 2011, 19:43 PM
Esa sintaxis no es válida. Al asignar primero espacio para los punteros a las cadenas, la memoria no va a ser contínua y debes asignar espacio, despues, para cada cadena.

Puedes realizar una reserva global con new, igual que con malloc.
items_de_descripcion = (char**) new char[cantidad_items * capacidad + cantidad_items * sizeof(char*)];

Luego asignas los valores de los punteros (al inicio del espacio de la memoria localizada) a la dirección de las cadenas que vendrán una detrás de otra en la posición  items_de_descripcion + cantidad_items * sizeof(char*);

Esto se puede hacer pero es mas lioso, difícil de entender y de leer mas adelante...

Saludos.

osea lo que hacia con malloc si se que era una asignacion global, osea el tamanio total de la matriz. pero pense que con esa forma de new (la que no compila) era tambien asignacion global PARA una matriz.

pero ahora segun observo
items_de_descripcion = (char**) new char[cantidad_items * capacidad + cantidad_items * sizeof(char*)];

esto asignaria el tamaño total de la matriz pero de forma contigua, es esto asi ?

y explicame otra cosa, esto
Citar
.... Al asignar primero espacio para los punteros a las cadenas, la memoria no va a ser contínua y debes asignar espacio, despues, para cada cadena.
.....

entiendo que inclusive el compilador no acepta de otra forma, pero porque esa necesidad de hacerlo asi, osea primero los 5 punteros y despues los vectores de cada uno

si puedes contestarme esas dos preguntas te lo agradeceria me has ayudado a entender, gracias ;)

#26
no, las cadenas van a tener longitud 1000/la cantidad de cadenas.
como por defecto la cantidad es 5, entonces 1000 dividido 5 = 200

yo lo que quisiera saber es porque siendo memoria dinamica no permite usar asi

items_de_descripcion = (char**) new char[cantidad_items][capacidad];

porque tira errores de que las dimensiones no son constantes.
pero asiendo eso con malloc si lo acepta. pero porque con new no?

#27

este es una demostrasion de mi clase que estoy haciendo esto compila bien, pero decime si asi esta bien asignado con new y borrado con delete  :xD


class Producto
{
private:
int cantidad_items;
char** items_de_descripcion;
char descripcion[1000];
public:
Producto(int cantidad_items);
~Producto();// no pueden tener argumentos
};





Producto::Producto(int items=5)
{
cantidad_items = items;

int capacidad = 1000/cantidad_items;
//items_de_descripcion = (char**) new char[cantidad_items][capacidad];
items_de_descripcion = new char*[cantidad_items];

int a=0;
while(a<cantidad_items)
{
items_de_descripcion[a]=new char[capacidad];
a++;
}
}

Producto::~Producto()
{
for(int i = 0; i < cantidad_items; i++)   // Paso 1: Borrar columnas
delete [] items_de_descripcion[i];
delete [] items_de_descripcion;   // paso 2: borrar filas
}



#28
tengo asi:

char** descircion;

dentro de la clase, y en el constructor necesito asignarle las dimensiones a esta matriz charesca. iba a hacerlo con malloc que es coo yo se hacerlo pero me dijeron que sea hecho con new y delete, pero para vector de int sabia como usarlo pero para este caso no. ocea necesitaria un new y un delete para esa matriz de char, si alguno sabe  :rolleyes:
#29
el programa es un ejercicio, se deben dar dos cadenas y se debe comparar y testear cuantas ocurrencias de la segunda cadena dentro de la primera. usando emu8086, que segun tengo entendido es lo msimo que el flat assembler, pero usando ese emu8086. creo un nuevo .com pero lo que necesito saber es mas que nada las interrupciones, entiendo que debo usar la 21 para mostrar en pantalla la cantidad de ocurrencias, pero si necesito detectar entradas de teclado necesitaria int 9, pero en ese punto ya no se com hacerlo, haria un loop de todas los valores posibles o como lo puedo hacer?. no me importaria si no me pueden dar el codigo completo pero mas que nada cuales son las interrucpciones necesarias y como usarlas. es una practica que me dieron pero no se casi naa del tema. solo lo basico osea mov y loops pero no todos, de interruciones eso del vector de teclas me amto  :-\

#30
muy bueno muchachos