elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6] 7 8 9
51  Programación / Programación C/C++ / Re: Error extraño C en: 1 Noviembre 2014, 14:16 pm
Primero el código no es de c, como ya han dicho es de c++. Segundo, además de ser de c++ la función main no retorna ningún valor, no se si puede tratarse de eso o simplemente el problema sea del compilador. Que compilador o IDE usas?
52  Programación / Programación C/C++ / Re: ingresar frase y devolver al reves en: 14 Octubre 2014, 18:14 pm
A ver, en primer lugar tendrías que separar cada una d elas palabras y guardarlas en un array de strings o bien un doble array de char, depende de lo que uses. Luego es simplemente intercambiar el orden de los elementos.

Utiliza un bucle for o while.
53  Programación / Programación C/C++ / Re: Un tutorial o cursillo de API de Windows en: 11 Octubre 2014, 13:13 pm
Tienes razón, me decanto más por los tutoriales de MSDN, aunque estén en ingles no tengo problema en principio, viene todo muy bien explicado. Es lo que estaba buscando, gracias.

Un saludo.
54  Programación / Programación C/C++ / Un tutorial o cursillo de API de Windows en: 10 Octubre 2014, 15:52 pm
Hola buenas a todos, me gustaría saber si conocen algún tipo de curso o tutorial sobre el tema que sea completo y venga bien explicado, ya que la mayoría de los que he visto lo hacen cada uno de una forma distinta, y no lo explican adecuadamente. Me gustaría aprender al menos unas bases de esto para poder utilizar posteriormente librerías gráficas del tipo DirectX sobre c/c++.

Un saludo y gracias de antemano.
55  Programación / Programación C/C++ / Re: Calcular longitud de cadena C++ (punteros) en: 18 Septiembre 2014, 16:40 pm
¡Buenas!

Esta función es muy sencilla también:
Código
  1. int longitud(char *s)
  2. {
  3.    if(!(*s))
  4.        return 0;
  5.  
  6.    return 1 + longitud(s + 1);
  7. }
  8.  

¡Saludos!

PD: o con un cuerpo de una sola línea: XD
Código
  1. int longitud(char *s)
  2. {
  3.    return (*s) ? 1 + longitud(s + 1) : 0;
  4. }
  5.  

Impresionante, ahora me entero que puedes devolver la función en si jaja. Eso si que es optimizar un código.

Gracias, y un saludo.
56  Programación / Programación C/C++ / Re: Calcular longitud de cadena C++ (punteros) en: 17 Septiembre 2014, 18:22 pm
Otra parte que se debe corregir para que el programa funcione correctamente es:
Código
  1. int main()
  2. {
  3.   char cadena[10];
  4.   char *pCadena = 0;
  5.  
  6.   cout << "Introduce una cadena como array: ";
  7.   cin >> cadena;
  8.   cout << "Su tamano es: " << LongitudCadena(cadena) << ". " << endl;
  9.   cout << "\nIntroduce una cadena como puntero: ";
  10.   cin >> *pCadena;
  11.   cout << "Su tamano es: " << LongitudCadena(pCadena) << ". " << endl;

Ahí el valor inicial de "pCadena" no es valido, hay que cambiarlo a:
Código
  1. int main()
  2. {
  3.   char cadena[10];
  4.   char *pCadena = cadena;
  5.  
  6.   cout << "Introduce una cadena como array: ";
  7.   cin >> cadena;
  8.   cout << "Su tamano es: " << LongitudCadena(cadena) << ". " << endl;
  9.   cout << "\nIntroduce una cadena como puntero: ";
  10.   cin >> pCadena;
  11.   cout << "Su tamano es: " << LongitudCadena(pCadena) << ". " << endl;

Sin embargo no es un buen ejercicio para la practica de punteros por lo siguiente:
1) Cuando se utiliza el operador ">>" con el objeto "cin" (como en tu ejemplo) se lee una palabra y se debe indicar mediante un puntero donde debe almacenarse.
2) Ese puntero se genera de forma automática al utilizar el identificador del array (este es "cadena").

En pocas palabras no hay tal diferencia entre array y puntero en este caso, supongo lo que quiere enseñar el profesor es el uso de los operadores "[]" y "*".

Un saludo

Vale, ya lo voy pillando. Gracias por la respuesta.

Un saludo
57  Programación / Programación C/C++ / Re: Más punteros... en: 17 Septiembre 2014, 18:20 pm
Eso es porque tu algoritmo de ordenación no funciona.

Te lo pongo con un ejemplo práctico... si tu tienes: 1  4  2  5  3  7  6  9  8  10.

Incialmente comparas 1 y 10... orden correcto, después comparas 4 y 8... orden correcto, después comparas 2 y 9... nuevamente orden correcto... al final no has cambiado ningún valor de posición.

Lo que te están pidiendo es que implementes el algoritmo de la burbuja, el de toda la vida. La "novedad" que plantea tu ejercicio es que tiene que poderse elegir si empiezan por el principio del array o por el final... pero no te están pidiendo que pongas un puntero al principio, otro al final y que vayas comparándolos entre ellos.

No se si me explico.

Entiendo a lo que te refieres, ya he usado ese algoritmo más de una vez, solo que ahora supongo que si estamos tratando el tema de los punteros pretenden que use punteros en lugar de enteros.

Gracias por la respuesta.
58  Programación / Programación C/C++ / Re: Más punteros... en: 16 Septiembre 2014, 22:35 pm
Vale, ya mas o menos voy entendiendo la función de los punteros. En cuanto a la propuesta de usar valores true o false para los booleanos, es cierto que leí que es mejor usarlos si se tiene oportunidad. También me parece correcto usar un enum, aunque me parece mucha mas simple una variable bool.

*Aún así, sigo sin conseguir el resultado deseado. No parece que el vector se modifique mucho. El resultado en orden ascendente no cambia, y en orden ascendente se queda así: 10  8  9  6  7  3  5  2  4  1.

Gracias una vez más por las respuestas, gracias a este foro se puede aprender y preguntar dudas =).

Un saludo.
59  Programación / Programación C/C++ / Más punteros... en: 16 Septiembre 2014, 16:36 pm
Sigo con el tema de los punteros y sigo sin entender que falla ahora.
Tengo el siguiente ejercicio:

"3.Implementar en una función el siguiente algoritmo para ordenar un array de enteros.
 La idea es recorrer simultáneamente el array desde el principio y desde el final, comparando los elementos. Si los valores comparados no están en el orden adecuado, se intercambian y se vuelve a empezar el bucle. Si están bien ordenados, se compara el siguiente par.
 El proceso termina cuando los punteros se cruzan, ya que eso indica que hemos comparado la primera mitad con la segunda y todos los elementos estaban en el orden correcto.
 Usar una función con tres parámetros:
void Ordenar(int* vector, int nElementos, bool ascendente);
 De nuevo, no se deben usar enteros, sólo punteros y aritmética de punteros."

El problema esta en que los elementos no parecen intercambiarse ni ordenarse, e incluso algunos toman el valor del estilo de -88483432.

Este es mi código:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void Ordenar(int*, int, bool);
  6.  
  7. int main() {
  8. int lista[10] = { 1, 4, 2, 5, 3, 7, 6, 9, 8, 10 };
  9.  
  10. for (int i = 0; i <= 9; i++) {
  11. cout << lista[i] << " ";
  12. }
  13. cout << endl;
  14. Ordenar(lista, 10, 0);
  15. for (int i = 0; i <= 9; i++) {
  16. cout << lista[i] << " ";
  17. }
  18.  
  19. cin.sync();
  20. cin.get();
  21. return 0;
  22. }
  23.  
  24. void Ordenar(int *vector, int nElementos, bool ascendente) {
  25. int *q, *p;
  26.  
  27. p = vector;
  28. q = &vector[nElementos];
  29. if (ascendente) {
  30. while (p <= q) {
  31. if (*p > *q) {
  32. *p += *q;
  33. *q = *p - *q;
  34. *p -= *q;
  35. }
  36. p++; q--;
  37. }
  38. }
  39. else {
  40. while (p <= q) {
  41. if (*p < *q) {
  42. *p += *q;
  43. *q = *p - *q;
  44. *p -= *q;
  45. }
  46. p++; q--;
  47. }
  48. }
  49. }
  50.  
60  Programación / Programación C/C++ / Re: Calcular longitud de cadena C++ (punteros) en: 16 Septiembre 2014, 15:32 pm
Vale, muchas gracias a todos por las respuestas. Aunque estoy sea una cosa muy simple me sirve para intentar comprender el funcionamiento de los punteros, ya que según he leído por ahí los punteros usados correctamente son una herramienta muy poderosa.

Un saludo y gracias.
Páginas: 1 2 3 4 5 [6] 7 8 9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines