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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 46
11  Programación / Programación C/C++ / Re: C++ - Ayuda con mi tarea! en: 3 Febrero 2018, 13:47 pm
Nadie te lo va hacer compañero. Básicamente tratase de ir dividiendo el valor por el valor del billete, tipo:
int valor = 5546;
int nBillhetesDe1000 = valor/1000

Luego haces para obtener el resto:
valor = valor%1000

El operador modulo lo que hace es devolver el resto de la división. Por ejemplo al dividir valor/1000 sobra 546, pero el operador / devuelve 100, no el resto(545), eso lo hace el operador %, y ese valor es el que es atribuido ahora a la variable valor.
Luego es cosa de repetir el mismo proceso, pero ahora con la moneda de de 500, luego con la de 100, 50, 25.....

Eso se llama "desglose de monedas" busque en google que salen a patadas.
12  Programación / Programación C/C++ / Re: Contar letras en cualquier oración en: 7 Enero 2018, 18:10 pm
Puede ser el codepage de la terminal. Puede que esté seteada como unicode o utf. Debe haber algo como una función que te diga el codepage actual, y otra para modificar, pero realmente no estoy muy seguro de nada ya que no sé mucho sobre linux. Pero sé que em algunas paginas de código los acentos son contados como una letra más, o sea, 'ñ' seria contado como 2 letras, el '~'  más 'n'. En todo caso aguarde alguien que tenga algo más de luces mejor que yo. >_<
13  Programación / Programación C/C++ / Re: Contar letras en cualquier oración en: 7 Enero 2018, 17:22 pm
de hecho  el carácter ñ lo toma como si fueran 2.  :(
En windows sale bien:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <locale.h>
  5. int main() {
  6. //setlocale(LC_ALL, "");
  7. int let=0, cont=0, contsig=0, contespa=0;
  8. int suma=0, rptaletra=0, i;
  9. char nomb[100];
  10.  
  11. scanf("%99[^\n]%*c", nomb);
  12. let = strlen(nomb);
  13.  
  14. for (i = 0; i < let; i++) {
  15. if (isdigit(nomb[i])) {
  16.  
  17. cont++; //cuento los numeros
  18. }
  19. if (ispunct(nomb[i])) {
  20.  
  21. contsig++; //cuento los signos etc..
  22.  
  23. }
  24. if (isspace(nomb[i])) {
  25.  
  26. contespa++; //cuento los espacios etc..
  27. }
  28. suma = cont + contsig + contespa; // sumo los contadores
  29. }
  30. rptaletra = let - suma; // al final simplemente lo resto a la longitud original.
  31. printf("\n La frase tiene  %d letras", rptaletra);
  32. return 0;
  33. }
  34.  
14  Programación / Programación C/C++ / Re: Icono en Allegro en: 1 Septiembre 2017, 02:42 am
para que el codeblocks gener el icon debes seguir esos pasos.

1º Tener el archivo windres correctamente configurado.

Está dentro de la carpeta bin de sú compilador, junto a g++.exe por ejemplo.

2º Suponiendo que tienes un icon llamado saitama.ico, en la carpeta del proyecto queda así:

Como puedes ver el archivo resource.rc está junto.

3º En el rc tengo eso:


4º Compilar

5º traz compilar, dependiendo de si has usado debug o release, salirá uma carpeta nueva junto al icono do proyecto, en mi caso debug.


6º ¡Listo! Como se puede ver la imaje está en el exe:


Dejo la carpeta del proyecto para que des una mirada: http://www.clubedohardware.com.br/applications/core/interface/file/attachment.php?id=141814

Espero que sirva.
15  Programación / Programación C/C++ / Re: Duda, sumar elementos en torno a un punto de la matriz en C en: 8 Julio 2015, 10:19 am
es simples es por ejemplo si tenemos una matriz int m[3][5] y estamos en m[1][2] sumar a esa m[1][2] la casilla de la izquierda y de la derecha. seria hacer

m[1][2] = m[1][2] + m[1][1] + m[1][3]; //a m[1][2] le sumo la casilla anterior (m[1][1]) y la siguiente (m[1][3])

pero claro hay un problema... que pasa cuando estoy en m[2][0] ??? eso es muy difícil de hacer si piensas en una matriz como una matriz, pero... ¡Y si pensamos que una matriz es una tabla! WTF! XDDD

Es tan simples como pensar que int m[3][5] es int m[3*5] que es lo mismo que int m[15] aun que realmente sea una matriz, seria como hacer:

m[0][8] = m[0][8] +m[0][7] + m[0][9];

¿Fácil no?

Para entender eso mire ese vídeo:



Ahora si vas a seguir mi consejo pues que sepa que la primera casilla es la m[0][0] de siempre, pero la ultima es la m[0][3*15], es lo mismo que m[0][15] que lo tratamos como m[15]. Si ignoras el echo de que las lineas no las tocamos nunca solo modificamos las columnas. Como dije mire el vídeo para entenderlo y te será pan comido. ;)

Recuerde que por muy bidimensional que sea una matriz en la memoria siempre va a ser una tabla o vector, en fin, secuencial(cada casilla va estar una al lado de otra). Si sabes eso puedes jugar con ella y te será más fácil. ;)

De la otra forma te va costar mucho jajaja XD

Otra cosa a destacar es que hay 2 casos especiales, no puedes sumar la casilla anterior de la primera posición m[0][0] ni la siguiente después de m[0][15], ya que en esos caso te estas saliendo de rango. A la primera m[0][0] que no existe anterior(ya que es la primera dah!!!), solo le puedes sumar la siguiente m[0][1], y a la m[0][15] que no hay siguiente ya que es la ultima, solo le puedes sumar la anterior m[0][14].

Espero que te sirva =)

Banzay XD
16  Programación / Programación C/C++ / Re: Que significa "expected..." en: 8 Julio 2015, 09:44 am
expected init-declarator before Insertar_Nodo
esperando init-declarator antes de Insertar_Nodo. Normalmente te va indicar la linea, pero por ejemplo si falta un punto y coma en una linea anterior el compilador te va dar el error en la siguiente linea, y te va decir que el error esta esperando uno u otro símbolo antes de X variable función o lo que tengas en la siguiente linea.

Por ejemplo el código siguiente:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main (){
  5.    cout << "Hola"   //<-¡¡¡falta un punto y coma aquí!!!
  6.  
  7.    cout << " mundo";
  8.    return 0;
  9. }

va decir que falta un punto y coma antes de cout. ¿Pero por que dice antes si es en la seguiente linea?? Bien, como sabemos para el compilador no le importa que pongas todo el programa en una sola linea, por que no existe salto de linea, eso lo hacemos por comodidad, para poder ver el código todo una instrucción abajo de otra, por qué para nosotros es más cómodo así, pero para el programa el que hagas saltos de linea no le importa un pimiento. Para el IDE el lo mismo...
cout << "Hola" cout << " mundo";

..que
cout << "Hola"
cout << " mundo";

pero el piensa que esta así cout << "Hola" cout << " mundo"; entonces por eso dice que falta punto y coma antes del segundo cout, pero si ese esta en la siguiente linea pues ya ves tu... XD. Por eso debemos poner punto y coma, para decir al compilador donde terminamos una introducción y donde comienza otra, ya que para el compilador es indiferente que este en la misma linea o en lineas separadas.

Si el error no esta en la misma linea probablemente este en la anterior. ;)

Suerte
17  Programación / Programación C/C++ / Re: [C++] ¿Qué compilador me recomiendan? en: 23 Mayo 2015, 12:07 pm
notepad++ si puede compilar. Ahora que merezca la pena eso si que no.
Yo hoy por hoy uso codeblocks en windows. Si llegas a configurarlo llega casi a ser tan bueno como notepad++.
Lo que pasa es que algunas opciones interesantes no se por que vienen desactivadas por defecto haciendole muy tosco, de las cuales ya no se vivir sin ellas.
Netbeams lo que trae mejor es que te va corrigiendo en tiempo real, si algo lo ve mal te señala al mismo instante, no como codeblocks que necesitas compilar para ver los errores, en codeblocks otro punto negativo es que la ayuda, o como llamo yo "las chuletillas", as veces no despliegan bien, sobre todo si tienes mal configurado el IDE. Aun así me gusta codeblocks.
Por cierto... no uso la que pone en la pagina, si no la que esta en el foro que se llama nightly builds http://forums.codeblocks.org/?board=20.0 ,la que van actualizando de forma más regular.

Es descargar el IDE descomprimirlo...:
http://sourceforge.net/projects/codeblocks/files/BinariesNightlies2015CB_20150420_rev10225_win32.7z

poner mingw10m.dll y wxWidget dll en la carpeta junto al ejecutable y listo. recomiendo pegar esa carpeta descomprimida al disco C:, y tambien la carpeta del ide mingw.
mingw10m.dll
 http://sourceforge.net/projects/codeblocks/files/Binaries/Nightlies/Prerequisites/mingwm10_gcc492-TDM.7z
wxWidget dll
http://sourceforge.net/projects/codeblocks/files/Binaries/Nightlies/Prerequisites/wxmsw28u_gcc_cb_wx2812_gcc492-TDM.7z

Como puedes ver abajo, la chuletilla entre otras muchas cosas es bastante mejorada.

http://forums.codeblocks.org/?board=20.0
Si entras en el foro verás que las actualizaciones son constantes. Y no pierdes la configuración si la respaldas, esta esta en la carpeta %appdata%, si haces una copia de respaldo de esta de vez en cuando puedes actualizar el compilador y el IDE sin problemas. luego vas al toolchain y lo actualiza.
El G++ hay 2 muy buenos. uno es el mingw-64(gcc 4.9.2), y otro es el mingw distro(gcc 5.1.0), siendo este ultimo solo para 64 bits.
mingw-w64 32/64 bits
http://sourceforge.net/projects/mingw-w64/

mingw distro 13, solo 64 bits, aun que compila para 32 solo se instala en 64 =(, y de momento es la única que vi con gcc 5 para windows. Pero esa no la puedo tener =((
http://nuwen.net/mingw.html

Los pasos son: Elegir un compilador y instalar, luego instalar codeblocks y si no lo detecta automático el compilador, ir a su toolchain y configurarlo. Luego trateas el codeblocks a tu gusto, si algo ha salido mal es solo ir a %appdata% y borrar la carpeta codeblocks que esta ahí, si te ha salido bien haces un respaldo de esa carpeta.

Con esto no se puede estar más a la ultima a lo que gcc/g++ se refiere XD.

Otra opción seria Qt que se basa en mingw también me parece.

Bueno.. ya no estorbo más. Si necesitas ayuda para configurarlo es solo decir  por si lo elijes y tienes problemas.>_<.
18  Comunicaciones / Dispositivos Móviles (PDA's, Smartphones, Tablets) / Re: Por seguridad, aseguran es preferible destrozar tu viejo Android antes que ... en: 22 Mayo 2015, 20:14 pm
resumiendo lo que todos saben... Android es una p**a m****a pincha num palo.  :silbar:
19  Programación / Programación C/C++ / Re: Allegro en: 15 Marzo 2015, 11:46 am
normalmente debes poner alguna dll que contiene allegro junto, si no se compila de forma estática para que la dll vaya ya incluida dentro del exe.

Pero como no trabajo con allegro no te puedo decir cual es la dll. Si fuera SFML ya seria otra cosa ><

Normalmente esas dll se encuentran dentro de la carpeta donde esta allegro, en alguna subcarpeta llamada bin o algo así, dentro tendrá librerias similares a alleg5.dll, o alleg5.dll, los nombres me los estoy inventando ya que no se cual es exactamente, el archivo puede llamarse de otra forma, es para que te guíes. Pegas algunos de esos archivos junto al .exe y prueba ejecutar el programa, haz eso hasta que encuentres el dll correcto, puede que lleve mas de uno.

Otra cosa es que el programa te diga el nombre del archivo que falta, entonces así es mas fácil buscarlo entre esos archivos.

Suerte.
20  Programación / Programación C/C++ / Re: ayuda! Problema con conversion int to int* apuntadores en: 4 Marzo 2015, 05:58 am
 Lo que pasa es que tienes un puntero normal que es  int *cadena y lo estas intentando pasar a una función "genera_cad(&cadena)" que espera un puntero doble, pero que en su cuerpo lo tratas como puntero normal. En definición estas haciendo una confusión.
Si quieres pasar un puntero a una funcion haz que la funcion espere un puntero de igual tipo. un ejemplo es:
int main(){
int *n
funcion(n);
}
void funcion(int *n){
}

Como ves no hace falta poner el operador & delante porque n es un tipo de variable especial que guarda la dirección del primer elemento de la cadena. A efectos n es lo mismo que &n[0] y por eso no necesitas poner & delante, ya que seria como hacer algo parecido a &&int[0] lo que esta fatal y carece de sentido.

Si necesitas saber el tamaño de la cadena mejor le pasas a 'tamanho' desde main y así te evitas tener que tener otra función para eso.

Otro punto a destacar es que en el caso de los int no hay NULL al final del array por lo que debes saber siempre su tamaño con anterioridad. Solo las cadenas de caracteres tienen el carácter NULL que indica que la cadena termina en un determinado lugar y que no hemos utilizado todo el espacio reservado.

Si reservamos 1000 chars y solo ponemos "Hola mundo" le sobraría 990 espacios de los cuales printf los imprimiría todos sin saber donde parar, incluso seguiría imprimiendo hasta después de que terminara los mil caracteres ya que nunca va a saber hasta donde debe imprimir.

Entonces en el caso de las cadenas de caracteres si reservo 1000 espacios y lo leo con la función que sea(scanf, gets...), esa función se va encargar de poner el null ahí justo al fin de lo que escribimos, si escribimos "Hola mundo" ten por seguro que en memoria esta "Hola mundo\0" ese \0 indica que ahí esta el fin de la cadena que introducimos y que no utilizamos los 1000 espacios reservados, como podemos imprimir como string con un printf ("%s", cadena); que es lo mismo que decir "imprime desde el primer carácter hasta encontrar el nulo \0" y no hasta el infinito y más allá. XD

Si te das cuanta que no puedes imprimir enteros como chars ya sabrás por que no existe ese NULL en los arreglos de enteros, porque eres tú quien se encarga de mostrarlos uno a uno con un bucle ya que no se puede imprimir como cadena.


Me tome la libertad de arreglar un poco su código haciéndolo algo más funcional.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int* genera_cad (int tam);
  6.  
  7. int main() {
  8.    srand ( time ( NULL ) ); // llame la funcion srand una sola vez al inicio de main
  9.    int tam = rand() % 361;
  10.    int *cadena = genera_cad ( tam );
  11.  
  12.    printf ( "\n la long de la cadena es %d\n", tam );
  13.    printf ( "%d\n", cadena[0]);
  14.  
  15.    free(cadena);
  16.    getchar();
  17.    return 0;
  18. }
  19.  
  20. int* genera_cad (int tam) {
  21.    int *cadena;
  22.    cadena = ( int * ) malloc ( sizeof ( int ) * tam );
  23.    int i;
  24.    for ( i = 0; i < tam; i++ ) {
  25.        * ( cadena + i ) = rand() % 2;
  26.    }
  27.    return cadena;
  28. }
  29.  

Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ... 46
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines