Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: VbStructure en 21 Abril 2013, 22:58 pm



Título: [Solucionado] Un problema imposible
Publicado por: VbStructure en 21 Abril 2013, 22:58 pm
Hola a todos!

Les pido ayuda en C++, recién estoy empezando con este código... pero tengo demasiados problemas y no he logrado lo que tengo que hacer, pues les pido ayuda en lo siguiente:

-> Un programa donde te pide que ingreses un carácter (detecta el carácter ingresado, sin necesidad de enter) y ese carácter lo agrega en una cadena que ya existe...

Lo que he podido hacer es lo siguiente:

Código
  1. #include "stdafx.h"
  2. #include <tchar.h>
  3. #include <windows.h>
  4. #include "conio.h"
  5. #include "stdlib.h"
  6. #include <iostream>
  7. #include <locale.h>
  8. #include <string.h>
  9. using namespace std;
  10.  
  11.  
  12. int _tmain(int argc, _TCHAR* argv[])
  13. {
  14.  
  15. int key;
  16. char clave_c, clave;
  17.  
  18. key = _getch();
  19. clave_c = toascii(key);
  20. strcat(clave,clave_c);
  21.  
  22. cout<<clave;
  23.  
  24. goto inicio;
  25.  
  26.  
  27. return 0;
  28. }
  29.  
  30.  

He intentado de todo (lo pueden ver por el exceso de librerías LOL)

PD: Uso "Microsoft Visual C++ 2008"

Muchas gracias!


Título: Re: Un problema imposible
Publicado por: durasno en 22 Abril 2013, 02:51 am
Clave deberia ser un arreglo y no un simple char. Utilizas goto pero la etiqueta inicio no la pones en ningun lado, revisa su uso. La funcion strcat recibe dos punteros a char y no dos char

El problema lo podes resolver usando un bucle en vez de goto(el cual no es recomendado)

Saludos


Título: Re: Un problema imposible
Publicado por: VbStructure en 22 Abril 2013, 05:09 am
Clave deberia ser un arreglo y no un simple char. Utilizas goto pero la etiqueta inicio no la pones en ningun lado, revisa su uso. La funcion strcat recibe dos punteros a char y no dos char

El problema lo podes resolver usando un bucle en vez de goto(el cual no es recomendado)

Saludos


Muchas gracias por esos detalles (:

La verdad no me fije tanto en lo del “goto” porque estaba muy preocupado con los errores. Pero dime, ¿Qué debo hacer?, la verdad, no sé qué es un puntero o un arreglo, lo de los bucle los voy a buscar.

Muchas gracias!


Título: Re: Un problema imposible
Publicado por: rir3760 en 22 Abril 2013, 14:37 pm
¿Qué debo hacer?, la verdad, no sé qué es un puntero o un arreglo, lo de los bucle los voy a buscar.
Los pasos en lo general son, en pseudocodigo:

1) Declaras tres variables: array, auxiliar e indicador de posición.
2) Inicializas el indicador de posición a cero (numero de caracteres en la cadena).

Dentro de un bucle:
3) Imprimes las instrucciones.
4) Tratas de leer un carácter almacenando este en el auxiliar.
5) Si se pudo leer el carácter se agrega al array y se incrementa el indicador de posición.
6) Si no se puede leer se termina el bucle.

7) Se agrega el carácter delimitador '\0' a la cadena.
8) Se imprime la cadena.

Si apenas empiezas con el lenguaje C lo primero a conseguir es un buen curso o libro, utiliza el motor de búsqueda de los foros para encontrar recomendaciones.

Un saludo


Título: Re: Un problema imposible
Publicado por: VbStructure en 22 Abril 2013, 15:16 pm
Los pasos en lo general son, en pseudocodigo:

1) Declaras tres variables: array, auxiliar e indicador...
[/size]

Hey, gracias rir3760,

Empezare a buscar con el foro basándome en el pseudocódigo haber que sale, pero una pregunta al decir “indicador de posición” ¿a qué te refieres? ¿es el cursor de la pantalla negra?

Gracias!


Título: Re: Un problema imposible
Publicado por: gorystyle en 22 Abril 2013, 21:31 pm
Hola amigo aqui un ejemplo se podria mejorar pero es para que tengas una idea.

Código:
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{

char letras[100];
char car;
int pos = 0;
int salir = 0;

while(salir != 2)
{
cout << "\ningrese caracter: ";
car = getch();
letras[pos] = car;
pos++;
cout << "\notro caracter 1), salir 2) : ";
cin >> salir;
}
cout << "Las letras son: " << endl;
for(int i=0; i<pos; i++)
cout << letras[i];

return 0;
}


Título: Re: Un problema imposible
Publicado por: rir3760 en 23 Abril 2013, 02:18 am
una pregunta al decir “indicador de posición” ¿a qué te refieres? ¿es el cursor de la pantalla negra?
No. Me refiero al indice utilizado para acceder a cada uno de los elementos del array donde debes guardar los caracteres.

Un ejemplo es la variable "pos" en el programa de gorystyle .

Un saludo


Título: Re: Un problema imposible
Publicado por: VbStructure en 23 Abril 2013, 04:18 am
Hola amigo aqui un ejemplo se podria mejorar pero es para que tengas una idea.
No. Me refiero al indice utilizado para acceder a cada uno de los elementos del array donde debes guardar los carac...

¡Muchas gracias a ambos!

He comprendido el código y ya lo he podido adaptarlo a mi proyecto.

La verdad ahora solo me falta terminar lo demás, (estoy haciendo un pacman LOL) y justo quería hacer esto para darle un efecto a la hora de poner el nombre, la contraseña (panel de administrador) y para cambiar las opciones de administración.

Este lo presentare como proyecto de fin de ciclo en la universidad, pero para eso tengo que esperar hasta fines de este año LOL. Cuando lo presente publicare todo el proyecto aquí, haber que tal (:

Muchas gracias!