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 [10] 11 12 13 14 15 16 17 18 19 20 21
91  Programación / Programación C/C++ / Re: Problemas con ELSE en: 1 Abril 2013, 13:55 pm
Si un bucle que permita realizar más compras.

El array 'nom' era muy peque, sólo 10 podés usar uno más grande XD

Código
  1. int main()
  2. {
  3.        char nom[128];
  4. float Compra, Desc, Total;
  5.        int a, opc;
  6. for(a=0;; a++)
  7.        {
  8.    if(a>0){
  9. printf("\n\tDesea Realizar una nueva compra?\n");
  10. fflush(stdin);
  11.                scanf("%d",&opc);
  12. if(opc==0) break;
  13.            }
  14.  
  15.            // Declaración para introducir el nombre del cliente
  16.    printf("Ingrese el nombre del cliente: \n",nom);
  17. fflush(stdin);
  18.    scanf("%9s", nom);
  19.    printf("El nombre del cliente es %s \n", nom );
  20.  
  21.    // Declaración para introducir total de la compra
  22.    printf ("Ingrese el total de su compra: \n", Compra);
  23. fflush(stdin);
  24.    scanf ("%f", &Compra);
  25.  
  26.    // Operaciones para aplicar descuento
  27.    if(Compra >= 8000)
  28.            {
  29. Total = Compra-(Compra*0.12);
  30. printf("El total a  pagar es de: %6.2f \n", Total);
  31.    }
  32.            else if(Compra == 7999 && Compra >=5500)
  33.            {
  34. Total = Compra-(Compra*.10);
  35. printf("El total a pagar es de: %5.2f \n", Total);
  36.            }
  37.            else if(Compra ==5499 && Compra >=3100)
  38.            {
  39. Total = Compra-(Compra*.07);
  40. printf("El total a pagar es de:%6.2f \n", Total);
  41.            }
  42.            else if(Compra == 3099 && Compra >=1500)
  43.            {
  44. Total = Compra-(Compra*.05);
  45. printf("El total a pagar es de: %6.2f \n", Total);
  46.            }
  47.  
  48.    if (Compra !=1500)
  49.    {
  50. if (Compra < 1500)
  51.    printf("Su compra no aplica descuento \n");
  52.  
  53.  
  54. printf("El total a pagar es de: %5.2f \n",Compra);
  55.    }
  56.        }
  57.  
  58. return 0;
  59. }
  60.  

cuando pongas las etiquetas de código, tenés que poner code=cpp
hasta luego

92  Programación / Programación C/C++ / Re: Ni un "Hola Mundo"en C/C++ logro programar, ni en debian ni xp en: 31 Marzo 2013, 19:16 pm
http://www.ubuntu-es.org/node/26248#.UVhuG6KBl2E
http://www.ubuntu-es.org/node/129385#.UVhuHaKBl2E
http://www.esdebian.org/foro/44245/no-compila-g
http://www.esdebian.org/foro/47846/problema-gcc-libreria
http://www.esdebian.org/foro/38571/problemas-compilando-programs-c-procedentes-windows-gcc

Unos links por ahí te ayudan, yo no te puedo ayudar porque no uso linux por el momento, pero algunos usan en esta comunidad, esperá que te respondan.




93  Programación / Programación C/C++ / Re: Problemas con ELSE en: 31 Marzo 2013, 18:52 pm
faltaban cosas, el tipo int en la función MAIN y el return 0.
y las etiquetas de c++ XD. Y las globales hacelas locales preferentemente.
y el bucle
y usar else-if


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5.  
  6. int main()
  7. {
  8. char nom[10];
  9. float Compra, Desc, Total;
  10.  
  11. /*Declaración para introducir el nombre del cliente */
  12. printf("Ingrese el nombre del cliente: \n",nom);
  13. scanf("%9s", nom);
  14. printf("El nombre del cliente es %s \n", nom );
  15.  
  16. /*Declaración para introducir total de la compra */
  17. printf ("Ingrese el total de su compra: \n", Compra);
  18. scanf ("%6.2f", &Compra);
  19.  
  20. /* Operaciones para aplicar descuento */
  21. if(Compra >= 8000){
  22.  
  23. Total = Compra-(Compra*0.12);
  24. printf("El total a  pagar es de: %6.2f \n", Total);
  25. }
  26.        else if(Compra == 7999 && Compra >=5500)
  27.        {
  28. Total = Compra-(Compra*.10);
  29. printf("El total a pagar es de: %5.2f \n", Total);
  30.        }
  31.        else if(Compra ==5499 && Compra >=3100)
  32.        {
  33. Total = Compra-(Compra*.07);
  34. printf("El total a pagar es de:%6.2f \n", Total);
  35.        }
  36.        else if(Compra == 3099 && Compra >=1500)
  37.        {
  38. Total = Compra-(Compra*.05);
  39. printf("El total a pagar es de: %6.2f \n", Total);
  40.        }
  41.  
  42. if (Compra !=1500)
  43. {
  44. if (Compra < 1500)
  45.    printf("Su compra no aplica descuento \n");
  46.  
  47. printf("El total a pagar es de: %5.2f \n",Compra);
  48. }
  49.  
  50. return 0;
  51. }
  52.  
94  Programación / Programación C/C++ / Re: Incremento de punteros en: 31 Marzo 2013, 18:42 pm
Él ingresa en este orden:

Código:
push('H');//1
push('o');//2
push('l');//3
push('a');//4

por lo que en una pila uno espera que estos elementos salgan así:

Citar
-> 4, 3, 2, 1


Entonces al llamar a printf que recibe los parámetros a la inversa (derecha a izquierda), entonces quedaría así:

Citar
                                   //1(h)   2(o)   3(l)    4(a)
printf("%c%c%c%c\n",pop(),pop(),pop(),pop());//right to left (1,2,3,4 <-)

El primer parámetro recibido sería el marcado cómo 4, luego el 3 y así.

En visual C++ 6 y 2010 imprime "Hola".
más datos, WINXP SP3 32BITS XD.
Sería raro un compilador que no respetara esto ya que es parte de la convención de llamada de C.


95  Programación / Programación C/C++ / Re: ¿Pregunta de C++, Ciclo FOR? en: 31 Marzo 2013, 18:34 pm
Operadores de PRE-Incremento y POST-Incremento.

La diferencia es que en el PRE-Incremento primero se incrementa y luego se opera, son dos pasos.

En el POST-Incremento primero se opera y luego se incrementa.

Es según la comodidad o tus necesidades, para con el objeto en cuestión, que puede ser una variable, un puntero, y básicamente esos.
96  Programación / Programación C/C++ / Mensaje scroll en: 31 Marzo 2013, 14:03 pm
Hola, estaba probando un código para mensaje scroll, me pareció buena la idea de postearlo. Ya lo había usado mucho antes pero no para un programa de consola.

El programa va a mostrar todas las cadenas que hay en un array de cadenas o matríz de caracteres, son 13 cadenas en total, pero originalmente lo usaba con 4.
La modificación que le hice fue la necesidad de crear un hilo aparte para mostrar las cadenas en scroll, y suspender el hilo principal.

El hilo principal nunca se resume y para salir del programa se sale con ExitProcess desde el hilo secundario.

El intervalo de tiempo entre las cadenas se hace con 'Sleep'.

Como ustedes ya saben, cuando se crea un hilo con CreateThread se le debe pasar un argumento que es la rutina con la cual empieza a ejecutarse el hilo. Esta rutina lleva un parámetro, que lo recibe al crearse el hilo porque dicho parámetro se pasa a CreateThread como argumento.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682453(v=vs.85).aspx

El tamaño del vector de cadenas se puede sacar con sizeof, pero en este caso se hace restando las direcciones de memoria del último elemento menos el primero.

Para iniciar el 'scrolling' se presiona 1,  y para salir del programa se presiona 2.

Aclarado todo eso, muestro el código
Código
  1.  
  2. //
  3. // By 85
  4. // Credits: LTFX
  5. // elhacker.net
  6. // etalking.com.ar
  7. // boyscout_arg@hotmail.com
  8. // 2013
  9. //
  10.  
  11. ////////////////////////////////////////////////////////////////////////////////////////////////
  12.  
  13. #include<windows.h>
  14. #include<stdio.h>
  15. #include<stdlib.h>
  16.  
  17. ////////////////////////////////////////////////////////////////////////////////////////////////
  18.  
  19. #define MAX_MESSAGES 13
  20. #define STRINGSIZE 0x40
  21. #define INTERVAL 500
  22. bool activar=false;
  23. char* resetMessage = "setinfo \"xxxxx\" \"\"";
  24. char* blankMessage = "setinfo \"xxxxx\" \"%s\"";
  25. //allow up to 13 messages
  26. char gHudMessage5[MAX_MESSAGES][256] = { "","","","","","","","","","","","","" };
  27. // a "hack" way to scroll list without copying strings
  28. int indexRedirect[MAX_MESSAGES] = { 0,1,2,3,4,5,6,7,8,9,10,11,12 };
  29.  
  30. HANDLE hThread;
  31.  
  32. ////////////////////////////////////////////////////////////////////////////////////////////////
  33.  
  34. void gSetHudMessage5(const char* message)
  35. {
  36. int dest = indexRedirect[0];
  37. indexRedirect[0] = indexRedirect[1];
  38. indexRedirect[1] = indexRedirect[2];
  39. indexRedirect[2] = indexRedirect[3];
  40. indexRedirect[3] = indexRedirect[4];
  41. indexRedirect[4] = indexRedirect[5];
  42. indexRedirect[5] = indexRedirect[6];
  43. indexRedirect[6] = indexRedirect[7];
  44. indexRedirect[7] = indexRedirect[8];
  45. indexRedirect[8] = indexRedirect[9];
  46. indexRedirect[9] = indexRedirect[10];
  47. indexRedirect[10] = indexRedirect[11];
  48. indexRedirect[11] = indexRedirect[12];
  49. indexRedirect[12] = dest;
  50. strcpy(gHudMessage5[dest],message);
  51. }
  52.  
  53. ////////////////////////////////////////////////////////////////////////////////////////////////
  54.  
  55. void Thread(const char* value){
  56.  
  57. DWORD* ptrValue = (DWORD*)value;
  58. DWORD OFFS = 0x0;//0x00000000;
  59. DWORD BLOCK = ((ptrValue+(STRINGSIZE*(MAX_MESSAGES-1)))-ptrValue);
  60. //sizeof(messagelist);
  61.  
  62. while(1){
  63. system("cls");
  64. SYSTEMTIME SysTime;
  65. GetLocalTime(&SysTime);
  66. char* formatstring   =   (SysTime.wMinute<10) ?  "%d:0%d\n" :  "%d:%d\n";
  67. printf(formatstring, SysTime.wHour, SysTime.wMinute);
  68. printf("Presione 1 para activar/desactivar el scroll! (Salir=2)\n");
  69.  
  70. if(GetAsyncKeyState(0x31)>0) {
  71.  
  72. activar=!activar;
  73. }
  74.  
  75. if(activar)
  76. {
  77. char* val = (char*)(ptrValue+(OFFS/sizeof(DWORD)));
  78. if(val && val[0]!=0)
  79. {
  80. char message[STRINGSIZE];
  81. message[0] = 0;// Antes de usar strcat!
  82. strcat( message , "Elhacker.net" );
  83. strcat( message , ": " );
  84. strcat( message , val );
  85. strcat( message , "\n" );
  86. gSetHudMessage5(message);
  87.  
  88. printf("\nHooK MSN v 1.0\n");
  89. for(int i=0; i<MAX_MESSAGES; i++){
  90. printf(gHudMessage5[indexRedirect[i]]);
  91. }
  92.  
  93. if(OFFS==BLOCK)
  94. {
  95. OFFS=0x0;//0x00000000;
  96. }
  97. else
  98. {
  99. OFFS+=STRINGSIZE;//0x00000040;
  100. }
  101. }
  102. }
  103.  
  104. if(GetAsyncKeyState(0x32)>0){
  105.  
  106. ExitProcess(0);
  107. //ResumeThread(hThread);// Can't from this thread
  108. //break;
  109. }
  110.  
  111. Sleep(INTERVAL);
  112. }
  113. }
  114.  
  115. ////////////////////////////////////////////////////////////////////////////////////////////////
  116.  
  117. int main(){
  118.  
  119. char messagelist[MAX_MESSAGES][STRINGSIZE];
  120. strcpy(messagelist[0],"Hola");
  121. strcpy(messagelist[1],"Mi");
  122. strcpy(messagelist[2],"Nombre");
  123. strcpy(messagelist[3],"Es");
  124. strcpy(messagelist[4],"David");
  125. strcpy(messagelist[5],"Y");
  126. strcpy(messagelist[6],"Esto");
  127. strcpy(messagelist[7],"Es");
  128. strcpy(messagelist[8],"Un");
  129. strcpy(messagelist[9],"Mensaje");
  130. strcpy(messagelist[10],"Scroll");
  131. strcpy(messagelist[11],"XD");
  132. strcpy(messagelist[12],"XD");
  133. char* value = (char*)&messagelist;
  134.  
  135. // Determinar el tamaño del bloque restando final con inicio
  136. // DWORD add1 = (DWORD)&messagelist[0];
  137. // DWORD add2 = (DWORD)&messagelist[12];
  138. // DWORD diff = (DWORD)(add2-add1);
  139. // printf("%X\n",diff);
  140. // system("pause");
  141.  
  142. DWORD tID;
  143. //tID = GetCurrentThreadId();
  144. CreateThread(0,1<<24,(unsigned long (__stdcall *)(void *))Thread,value,0,&tID);
  145. //printf("tID: %d\n",tID);
  146.  
  147. //hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, GetCurrentThreadId());
  148. //Returns a "pseudo handle" that can only be used from the calling thread.
  149. hThread = GetCurrentThread();
  150. SuspendThread(hThread);
  151. //ResumeThread(hThread);
  152.  
  153. system("pause");
  154. return (0);
  155. }
  156.  
  157.  



Esta era su aplicación original


PROJECT:
http://www.mediafire.com/?q6dq36cdd9hxvxb
97  Programación / Programación C/C++ / Re: Ni un "Hola Mundo"en C/C++ logro programar, ni en debian ni xp en: 31 Marzo 2013, 13:42 pm
no tenés una versión en español de ese compilador ? o sino un compilador de C++ en español, así entendés los resultados (LOG) que te muestra el compilador.

ahí decía
error: `Cout' undeclared (first use this function)

"'Cout' no declarado.."
98  Programación / Programación C/C++ / Re: Incremento de punteros en: 30 Marzo 2013, 12:48 pm
http://en.wikipedia.org/wiki/X86_calling_conventions

Citar
cdecl
The cdecl (which stands for C declaration) is a calling convention that originates from the C programming language and is used by many C compilers for the x86 architecture.[1] In cdecl, subroutine arguments are passed on the stack. Integer values and memory addresses are returned in the EAX register, floating point values—in the ST0 x87 register. Registers EAX, ECX, and EDX are caller-saved, and the rest are callee-saved.
In context of the C programming language, function arguments are pushed on the stack in the reverse order.

y por supuesto printf es cdecl

http://msdn.microsoft.com/es-AR/library/984x0h58(v=vs.80).aspx
http://www.agner.org/optimize/calling_conventions.pdf

y más información para otra arquitectura
http://msdn.microsoft.com/en-us/library/ms235286(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/7kcdt6fy(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/9b372w95(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/zthk2dkh(v=vs.80).aspx
99  Programación / Programación C/C++ / Re: Digitos de un numero en C en: 30 Marzo 2013, 12:34 pm
si otra forma de hacerlo , al procesar cada unidad por separado XD
100  Programación / Programación C/C++ / Descomponer en unidades en: 30 Marzo 2013, 12:31 pm
Hola,
hice un programita para que muestre un número que se descompone en unidades. Tiene diferentes formas de mostrarlo, inclusive en orden ascendente o descendente.
Si quieren mostrar sus formas de hacerlo, muy bien,  >:D
Código
  1.  
  2. //
  3. // By 85
  4. // elhacker.net
  5. // etalking.com.ar
  6. // boyscout_etk@hotmail.com
  7. // 2013
  8.  
  9. ////////////////////////////////////////////////////////////////////////////////////////////////
  10.  
  11. #pragma warning(disable: 4244)
  12. #pragma comment(lib, "winmm.lib")
  13. #include<windows.h>
  14. #include<stdio.h>
  15. #include<stdlib.h>
  16. #include<math.h>
  17.  
  18. ////////////////////////////////////////////////////////////////////////////////////////////////
  19.  
  20. #define ASC 0
  21. #define DESC 1
  22. #define ORDER ASC
  23.  
  24. double ServerTime;
  25. #define VERSION "0.1"
  26.  
  27. ////////////////////////////////////////////////////////////////////////////////////////////////
  28.  
  29. __forceinline Cifras(int iNm){
  30.  
  31. int cifras = 0;
  32. for(int copia = abs(iNm), exnum=1;;){
  33.  
  34. if(exnum <= copia)
  35. {
  36. exnum = exnum*10;
  37. cifras++;
  38. }
  39. else
  40. {
  41. break;
  42. }
  43. }
  44. return cifras;
  45. }
  46.  
  47. ////////////////////////////////////////////////////////////////////////////////////////////////
  48.  
  49. void ListarUnidades(int iNm, int iModo){
  50.  
  51. int cifras = Cifras(iNm);
  52. //printf("cifras %d\n", cifras);
  53. //system("pause");
  54.  
  55. if(iModo!=0) //ASC
  56. {
  57. for(int i=(cifras-1), X=1; i>=0; i--){
  58.  
  59. printf("%d\n", ((iNm)/X)%10);
  60. X=(X*10);
  61. }
  62. }
  63. else //DESC
  64. {
  65. for(int j=0, Y= (int)pow(10,(cifras-1)); j<cifras; j++){
  66.  
  67. printf("%d\n", ((iNm)/Y)%10);
  68. Y=(Y/10);
  69. }
  70. }
  71. putchar("\n"[0]);
  72. }
  73.  
  74. ////////////////////////////////////////////////////////////////////////////////////////////////
  75.  
  76. void ListarRebajados(int iNm, int iModo){
  77.  
  78. int cifras = Cifras(iNm);
  79. //printf("cifras %d\n", cifras);
  80. //system("pause");
  81.  
  82. if(iModo!=0) //ASC
  83. {
  84. for(int i=(cifras-1), X=1; i>=0; i--){
  85.  
  86. printf("%d\n", ((iNm)/X));
  87. X=(X*10);
  88. }
  89. }
  90. else //DESC
  91. {
  92. for(int j=0, Y= (int)pow(10,(cifras-1)); j<cifras; j++){
  93.  
  94. printf("%d\n", ((iNm)/Y));
  95. Y=(Y/10);
  96. }
  97. }
  98. putchar("\n"[0]);
  99. }
  100.  
  101. ////////////////////////////////////////////////////////////////////////////////////////////////
  102.  
  103. void sayver(){
  104.  
  105. char saystr[256];
  106. char key[5];
  107. key[0]=(((int)ServerTime)%10)+0x81;
  108. key[1]=((((int)ServerTime)/10)%10)+0x82;
  109. key[2]=((((int)ServerTime)/100)%10)+0x83;
  110. key[3]=((((int)ServerTime)/1000)%10)+0x84;
  111. key[4]=0;
  112. strcpy(saystr,"say \"");
  113. strcat(saystr,VERSION);
  114. strcat(saystr,key);
  115. strcat(saystr," - Coded By : cs_007 + boy_scout ");
  116. strcat(saystr,"\"\n\n\n");
  117. printf(saystr);
  118. }
  119.  
  120. ////////////////////////////////////////////////////////////////////////////////////////////////
  121.  
  122. void DescomponerEnUnidades(int num){//2012
  123.  
  124. int copia= abs(num), m = 1, cifras = 1;
  125. for(;copia>=10;copia/=10) cifras++;
  126. for(int x=0;x<(cifras-1);x++) m*=10;
  127. float v1=num;// Permite guardar decimales para cuando se divida
  128. int v2=0, v3=num;
  129. for(int i=0; i<cifras; i++){
  130.  
  131. printf("%f\n",v1);
  132. v1/=m;// Esto puede resultar en un número con decimales
  133. //printf("%f\n",v1);// Para ver el proceso XD
  134. v2=((int)v1*m);// Se opera tomando en cuenta sólo la parte entera
  135. v3-=v2;// Al número original le resta una parte del mismo
  136. m/=10;// Se rebaja el multiplicador
  137. v1=v3;// Se obtiene el número de la unidad
  138. }
  139. putchar("\n"[0]);
  140. }
  141.  
  142. ////////////////////////////////////////////////////////////////////////////////////////////////
  143.  
  144. int main(){
  145.  
  146. ServerTime = (timeGetTime()/1000);
  147. printf("ServerTime: %f\n\n",ServerTime);
  148. sayver();
  149.  
  150. ServerTime = -12345;
  151. // ServerTime = -0;
  152. // ServerTime = 0;
  153. // ServerTime = -1;
  154. // ServerTime = 12345;
  155. // ServerTime = 100000;
  156. // ServerTime = -100000;
  157.  
  158. ListarUnidades(ServerTime,ORDER);
  159. ListarRebajados(ServerTime,ORDER);
  160.  
  161. DescomponerEnUnidades(ServerTime);
  162.  
  163. system("pause");
  164. return (0);
  165. }
  166.  
  167. ////////////////////////////////////////////////////////////////////////////////////////////////
  168.  
  169.  



PROYECTO
http://www.mediafire.com/?oe3eg88zhyi5lc2
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines