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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 [2] 3 4
11  Programación / Programación C/C++ / Re: Como funciona este arreglo? en: 7 Septiembre 2015, 23:34 pm
Me alegro que te sirviese!! Cada vez que se se te resuelva una duda, marca el hilo como que ya ha sido respondida tu duda
12  Programación / Programación C/C++ / Re: Como funciona este arreglo? en: 7 Septiembre 2015, 21:21 pm
Como se ha dicho en este hilo, un arreglo, es decir, un puntero, apunta hacia una dirección de memoria. Ahora bien, en en caso de los arreglos, pasa lo siguiente:

Pongamos este ejemplo:
Código
  1. #include <iostream>
  2.  
  3. int main() {
  4.        int valor[4] = {2, 3, 1, 4};
  5.  
  6.        std::cout << valor[0] << std::endl;
  7.  
  8.        std::cin.get();
  9.        return 0;
  10. }

En este caso, hemos declarado e inicializado un arregle de 4 elementos. Aunque tu veas el arreglo así, en realidad lo que almacena 'valor' es una dirección que apunta al primer byte de ese arreglo:



Como puedes ver,lo que almacena en realidad nuestro arreglo, es donde se encuentran los datos del arreglo

Entonces, volviendo al tema, lo que le debes pasar a scanf es DONDE quieres que guarde lo que ha leido de la consola, entonces debes pasarle LA DIRECCION DEL ELEMENTO DEL ARRAY QUE LE QUIERES PASAR. Para hacer esto, primero debes indicar que elemento quieres cambiar (lo cual se hace con los corchetes []), y después debes pasarle donde está ese elemento, con el operador &.

Entonces, en resumidas cuentas, lo que hace este programa es acceder a los elementos del arreglo por orden, porque la variable 'i' va tomando valores desde 0 hasta 4
13  Programación / Programación C/C++ / Re: como declaro una Clase llamada Matriz en: 7 Septiembre 2015, 20:46 pm
En primer lugar, ¿el tamaño de la matriz está predefinido? ¿Tiene que ser cuadrada (2x2, 3x3...), o cuando te pida el determinante de la matriz no cuadrada te tiene que dar error?. Si la matriz es de un tamaño fijo, lo que tienes que hacer es guardar esa matriz como privada en la clase, tal que así:

Código
  1. class Matriz {
  2.             public:
  3.                   Matriz();
  4.  
  5.                   int get_Size();
  6.                   int get_Determ();
  7.                   int get_Unos();
  8.                   int get_Zeros();
  9.                   int get_Identidad();
  10.  
  11.             private:
  12.                   float matriz[3][3];
  13.  
  14. };

Entonces, a la hora de pasarle el orden, le pasarías 3 (es una matriz 3x3), en el caso del determinante, supondré que sabes como hacer un determinante. En el caso de rellenar, es sencillo (es asignar a cada calor de 'matriz' sus respectivos ceros o unos. Lo mismo en el caso de generar la matriz identidad
14  Programación / Programación C/C++ / Re: ¿ Tan dificil es hacer un generador de diccionario ? en: 5 Septiembre 2015, 23:44 pm
Citar
Para que sirven los operadores ">>" y el operador "&" (este último lo había visto pero solo como "&&")

*El operador >> sirve para lo que se denomina 'Desplazamiento de Bits' Esto sirve para lo que su nombre dice. Me explico con un ejemplo: tenemos una variable de tipo entero (int) cuyo valor es 12. Dicho numero en binario es 1100. Si hacemos la siguiente operación...
Código
  1. varialbe = variable >> 1
entonces estamos desplazando todos los bits un lugar, dando como resultado el numero en binario 0110. El 1 que estaba en cuarto lugar ha pasado al tercer lugar. El 1 que estaba en tercer lugar ha pasado al segundo lugar... y así sucesivamente. Si hubiéramos hecho esto...
Código
  1. variable = variable >> 2
entonces daría como resultado 0011 en binario

*El operador & es parecido al |. Lo que hace es multiplicar bit a bit dos valores. Por ejemplo, tenemos los valores 011010 y 110011 (en binario). Si hacemos 011010 & 110011 obtendremos 010010.
Empezamos de derecha a izquierda: El primer bit está determinado por la operación 1 * 0, por lo que vale 0. El segundo bit está determinado por la operación 1 * 1, por lo que vale 1 y así sucesivamente
15  Programación / Programación C/C++ / Re: Operadores de bits ?? en: 5 Septiembre 2015, 21:58 pm
Mira, imagínate que asignamos a dos propiedades diferentes dos ID diferentes:
*A la propiedad de que la ventana debe estar en pantalla completa le asignamos la ID 01 (Está en binario)
*A la propiedad de que la ventana tenga bordes le asignamos la ID 10.

Entonces, si le pasamos la propiedad de pantalla completa solamente, le pasaremos 01. Si le pasamos solamente la propiedad de que la ventana tenga bordes, le pasamos 10, y si queremos que tenga ambas propiedades, le pasamos 01 | 10, es decir, 11.

Dicho de otra forma, a cada propiedad le asignamos una posición en una variable. En el caso anterior, solamente caben 2 propiedades como máximo, puesto que solo hay dos posiciones, es decir, 2 bits. A la posicion 1 le asigné la propiedad de pantalla completa, si vale 0, entonces estará en modo ventana y si vale 1 estará en pantalla completa, y lo mismo con la ventana con bordes. Si la segunda posición vale 0, entonces la ventana no tendrá bordes, y viceversa.
16  Programación / Programación C/C++ / Re: Operadores de bits ?? en: 5 Septiembre 2015, 20:26 pm
En Windows, es muy común usar estos operadores para crear flags. Me explico: Al crear una ventana, tu le tienes que pasar una serie de caracteristicas a dicha ventana (por ejemplo, ¿tendrá borde mi ventana?, ¿será en pantalla completa?, etc). Para pasarle estas propiedades a Windows, se usan los ya mencionados, los Flags (en español banderas)

Agunas propiedades son:
WS_VISIBLE = 10000000000000000000000000000 en binario (Define si una ventana es visible)
WS_VSCROLL= 00000001000000000000000000000 en binario (Define si una ventana tendrá una barra de desplazamiento vertical)

Entonces, si le quieres pasar esos dos parametros juntos a Windows, haces lo siguiente:

WS_VISIBLE | WS_VSCROLL, lo cual dará como resultado:
10000001000000000000000000000

Como ves, hemos conseguido fusionar las dos propiedades en una sin perder información.

Espero que se haya entendido
17  Programación / Programación C/C++ / Re: ¿ Tan dificil es hacer un generador de diccionario ? en: 5 Septiembre 2015, 20:16 pm
Para dejar mi miga de pan, os dejo un simple ejemplo de como generar el diccionario y a su vez guardarlo en un archivo:

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <cstdio>
  4. #include <cmath>
  5.  
  6. int main() {
  7. FILE * lpstFilePointer = NULL;
  8. char lpszFilePath[256];
  9. char *lpString = NULL;
  10. int nNumCharacters = 0;
  11.  
  12. std::cout << "Cuantos caracteres necesitas? ";
  13. std::cin >> nNumCharacters;
  14.  
  15. std::cout << "Donde deseas guardar los datos? ";
  16. std::cin >> lpszFilePath;
  17.  
  18. lpstFilePointer = fopen((const char *)lpszFilePath, "w");
  19.  
  20. if(lpstFilePointer == NULL) {
  21. std::cout << "Error al abrir el archivo en la ruta '" << lpszFilePath << "'. El programa se va a cerrar";
  22. std::cin.get();
  23. return 1;
  24. }
  25.  
  26. lpString = new char[nNumCharacters];
  27.  
  28. if(lpString == NULL) {
  29. std::cout << "Error al declarar la cadena temporal para generar el diccionario.";
  30. std::cin.get();
  31. return 1;
  32. }
  33.  
  34. for(int i = 0; i <= (int)pow(26, nNumCharacters); i++) {
  35. itoa(i, lpString, 26);
  36.  
  37. for(int e = 0; e < nNumCharacters; e++) {
  38. if(lpString[e] != 0) {
  39. if(lpString[e] <= 57)
  40. lpString[e] += 49;
  41. else
  42. lpString[e] += 10;
  43. }
  44. }
  45.  
  46. fputs(lpString, lpstFilePointer);
  47. fputc('\n', lpstFilePointer);
  48. }
  49.  
  50. std::cout << "El programa ha finalizado el proceso.";
  51. fclose(lpstFilePointer);
  52. std::cin.get();
  53. return 0;
  54. }
18  Programación / Programación C/C++ / Re: Arreglos y Cadenas de caracteres AYUDA en: 4 Septiembre 2015, 20:27 pm
¿Lo que quieres es saber cuántas veces se repite UNA palabra, o cuántas veces se repite cada palabra del archivo?

En el caso de que sea la primera opción, aquí te dejo un ejemplo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main () {
  6. char lpszText[] = "Esto es el texto que incluye el archivo. Esto no son datos reales Jaja";
  7. char lpszWordToBeChecked[256] = ""; // Contendrá la palabra a ser comparada
  8. char *lpszWord; // Contendrá las palabras leidas (solo una por ciclo)
  9. unsigned int uRepeatedTimes = 0; // Numero de veces que se ha repetido la palabra
  10. unsigned int nCounter = 0; // Contador usados en los ciclos 'for'
  11.  
  12. printf("Introduzca la palabra que desea que comparemos: ");
  13. scanf("%s", lpszWordToBeChecked);
  14.  
  15. for(nCounter = 0; lpszWordToBeChecked[nCounter] != 0; nCounter++) { // Convertimos la palabra a ser comparada a minusculas para así poder comparar las cadenas
  16. if(lpszWordToBeChecked[nCounter] >= 65 && lpszWordToBeChecked[nCounter] <= 90)
  17. lpszWordToBeChecked[nCounter] += 32;
  18. }
  19.  
  20. lpszWord = strtok(lpszText, " ,:.;-_123456789<>(){}/\\\""); // Tomamos una palabra de la cadena. El segundo parámetro contiene los caracteres que no forman una palabra
  21.  
  22. while(lpszWord != 0) {
  23. for(nCounter = 0; lpszWord[nCounter] != 0; nCounter++) { // A minusculas (para poder comparar las cadenas)
  24. if(lpszWord[nCounter] >= 65 && lpszWord[nCounter] <= 90)
  25. lpszWord[nCounter] += 32;
  26. }
  27.  
  28. if(strcmp(lpszWord, lpszWordToBeChecked) == 0) // Comparamos la cadena
  29. uRepeatedTimes++;
  30.  
  31. lpszWord = strtok(NULL, " ,:.;-_123456789<>(){}/\\\""); // Tomamos la siguiente palabra de la cadena
  32. }
  33.  
  34. printf("Las veces que se ha repetido la palabra '%s' son: %u", lpszWordToBeChecked, uRepeatedTimes); // Imprimimos el resultado final!
  35.  
  36. return 0;
  37. }

PD.: USA LAS ETIQUETAS GeSHI!!
19  Programación / Programación C/C++ / Re: Multiplicacion de Binarios a traves de vectores en: 2 Septiembre 2015, 13:01 pm
¿A que viene esto? XD

Código
  1. 1*0==0;
  2. 0*0==0;
  3. 0*1==0;
  4. 1*1==1;
20  Programación / Programación C/C++ / Re: ayuda ejercicio pago de multa en: 2 Septiembre 2015, 12:52 pm
Después de que se active el switch con el case 1 (el de las drogas), el programa muestra un mensaje en pantalla. Después de mostrar el mensaje, como has puesto un break, se sale del switch. Después del switch hay un 'return 0;. Cuando la función main retorna, el programa se cierra. Para solucionar esto, después del switch pon (si trabajas en Windows) system("pause");, o puedes usar getc. Eso ya es elección tuya
Páginas: 1 [2] 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines