|
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 int main() { char nom[128]; float Compra, Desc, Total; int a, opc; for(a=0;; a++) { if(a>0){ printf("\n\tDesea Realizar una nueva compra?\n"); fflush(stdin); scanf("%d",&opc); if(opc==0) break; } // Declaración para introducir el nombre del cliente printf("Ingrese el nombre del cliente: \n",nom); fflush(stdin); scanf("%9s", nom); printf("El nombre del cliente es %s \n", nom ); // Declaración para introducir total de la compra printf ("Ingrese el total de su compra: \n", Compra); fflush(stdin); scanf ("%f", &Compra); // Operaciones para aplicar descuento if(Compra >= 8000) { Total = Compra-(Compra*0.12); printf("El total a pagar es de: %6.2f \n", Total); } else if(Compra == 7999 && Compra >=5500) { Total = Compra-(Compra*.10); printf("El total a pagar es de: %5.2f \n", Total); } else if(Compra ==5499 && Compra >=3100) { Total = Compra-(Compra*.07); printf("El total a pagar es de:%6.2f \n", Total); } else if(Compra == 3099 && Compra >=1500) { Total = Compra-(Compra*.05); printf("El total a pagar es de: %6.2f \n", Total); } if (Compra !=1500) { if (Compra < 1500) printf("Su compra no aplica descuento \n"); printf("El total a pagar es de: %5.2f \n",Compra); } } return 0; }
cuando pongas las etiquetas de código, tenés que poner code=cpp hasta luego
|
|
|
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 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { char nom[10]; float Compra, Desc, Total; /*Declaración para introducir el nombre del cliente */ printf("Ingrese el nombre del cliente: \n",nom); scanf("%9s", nom); printf("El nombre del cliente es %s \n", nom ); /*Declaración para introducir total de la compra */ printf ("Ingrese el total de su compra: \n", Compra); scanf ("%6.2f", &Compra); /* Operaciones para aplicar descuento */ if(Compra >= 8000){ Total = Compra-(Compra*0.12); printf("El total a pagar es de: %6.2f \n", Total); } else if(Compra == 7999 && Compra >=5500) { Total = Compra-(Compra*.10); printf("El total a pagar es de: %5.2f \n", Total); } else if(Compra ==5499 && Compra >=3100) { Total = Compra-(Compra*.07); printf("El total a pagar es de:%6.2f \n", Total); } else if(Compra == 3099 && Compra >=1500) { Total = Compra-(Compra*.05); printf("El total a pagar es de: %6.2f \n", Total); } if (Compra !=1500) { if (Compra < 1500) printf("Su compra no aplica descuento \n"); printf("El total a pagar es de: %5.2f \n",Compra); } return 0; }
|
|
|
94
|
Programación / Programación C/C++ / Re: Incremento de punteros
|
en: 31 Marzo 2013, 18:42 pm
|
Él ingresa en este orden: 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í: -> 4, 3, 2, 1 Entonces al llamar a printf que recibe los parámetros a la inversa (derecha a izquierda), entonces quedaría así: //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 // // By 85 // Credits: LTFX // elhacker.net // etalking.com.ar // boyscout_arg@hotmail.com // 2013 // //////////////////////////////////////////////////////////////////////////////////////////////// #include<windows.h> #include<stdio.h> #include<stdlib.h> //////////////////////////////////////////////////////////////////////////////////////////////// #define MAX_MESSAGES 13 #define STRINGSIZE 0x40 #define INTERVAL 500 bool activar=false; char* resetMessage = "setinfo \"xxxxx\" \"\""; char* blankMessage = "setinfo \"xxxxx\" \"%s\""; //allow up to 13 messages char gHudMessage5[MAX_MESSAGES][256] = { "","","","","","","","","","","","","" }; // a "hack" way to scroll list without copying strings int indexRedirect[MAX_MESSAGES] = { 0,1,2,3,4,5,6,7,8,9,10,11,12 }; HANDLE hThread; //////////////////////////////////////////////////////////////////////////////////////////////// void gSetHudMessage5(const char* message) { int dest = indexRedirect[0]; indexRedirect[0] = indexRedirect[1]; indexRedirect[1] = indexRedirect[2]; indexRedirect[2] = indexRedirect[3]; indexRedirect[3] = indexRedirect[4]; indexRedirect[4] = indexRedirect[5]; indexRedirect[5] = indexRedirect[6]; indexRedirect[6] = indexRedirect[7]; indexRedirect[7] = indexRedirect[8]; indexRedirect[8] = indexRedirect[9]; indexRedirect[9] = indexRedirect[10]; indexRedirect[10] = indexRedirect[11]; indexRedirect[11] = indexRedirect[12]; indexRedirect[12] = dest; strcpy(gHudMessage5[dest],message); } //////////////////////////////////////////////////////////////////////////////////////////////// void Thread(const char* value){ DWORD* ptrValue = (DWORD*)value; DWORD OFFS = 0x0;//0x00000000; DWORD BLOCK = ((ptrValue+(STRINGSIZE*(MAX_MESSAGES-1)))-ptrValue); //sizeof(messagelist); while(1){ system("cls"); SYSTEMTIME SysTime; GetLocalTime(&SysTime); char* formatstring = (SysTime.wMinute<10) ? "%d:0%d\n" : "%d:%d\n"; printf(formatstring, SysTime.wHour, SysTime.wMinute); printf("Presione 1 para activar/desactivar el scroll! (Salir=2)\n"); if(GetAsyncKeyState(0x31)>0) { activar=!activar; } if(activar) { char* val = (char*)(ptrValue+(OFFS/sizeof(DWORD))); if(val && val[0]!=0) { char message[STRINGSIZE]; message[0] = 0;// Antes de usar strcat! strcat( message , "Elhacker.net" ); strcat( message , ": " ); strcat( message , val ); strcat( message , "\n" ); gSetHudMessage5(message); printf("\nHooK MSN v 1.0\n"); for(int i=0; i<MAX_MESSAGES; i++){ printf(gHudMessage5[indexRedirect[i]]); } if(OFFS==BLOCK) { OFFS=0x0;//0x00000000; } else { OFFS+=STRINGSIZE;//0x00000040; } } } if(GetAsyncKeyState(0x32)>0){ ExitProcess(0); //ResumeThread(hThread);// Can't from this thread //break; } Sleep(INTERVAL); } } //////////////////////////////////////////////////////////////////////////////////////////////// int main(){ char messagelist[MAX_MESSAGES][STRINGSIZE]; strcpy(messagelist[0],"Hola"); strcpy(messagelist[1],"Mi"); strcpy(messagelist[2],"Nombre"); strcpy(messagelist[3],"Es"); strcpy(messagelist[4],"David"); strcpy(messagelist[5],"Y"); strcpy(messagelist[6],"Esto"); strcpy(messagelist[7],"Es"); strcpy(messagelist[8],"Un"); strcpy(messagelist[9],"Mensaje"); strcpy(messagelist[10],"Scroll"); strcpy(messagelist[11],"XD"); strcpy(messagelist[12],"XD"); char* value = (char*)&messagelist; // Determinar el tamaño del bloque restando final con inicio // DWORD add1 = (DWORD)&messagelist[0]; // DWORD add2 = (DWORD)&messagelist[12]; // DWORD diff = (DWORD)(add2-add1); // printf("%X\n",diff); // system("pause"); DWORD tID; //tID = GetCurrentThreadId(); CreateThread(0,1<<24,(unsigned long (__stdcall *)(void *))Thread,value,0,&tID); //printf("tID: %d\n",tID); //hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, GetCurrentThreadId()); //Returns a "pseudo handle" that can only be used from the calling thread. hThread = GetCurrentThread(); SuspendThread(hThread); //ResumeThread(hThread); system("pause"); return (0); }
Esta era su aplicación original PROJECT:http://www.mediafire.com/?q6dq36cdd9hxvxb
|
|
|
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, // // By 85 // elhacker.net // etalking.com.ar // boyscout_etk@hotmail.com // 2013 //////////////////////////////////////////////////////////////////////////////////////////////// #pragma warning(disable: 4244) #pragma comment(lib, "winmm.lib") #include<windows.h> #include<stdio.h> #include<stdlib.h> #include<math.h> //////////////////////////////////////////////////////////////////////////////////////////////// #define ASC 0 #define DESC 1 #define ORDER ASC double ServerTime; #define VERSION "0.1" //////////////////////////////////////////////////////////////////////////////////////////////// __forceinline Cifras(int iNm){ int cifras = 0; for(int copia = abs(iNm), exnum=1;;){ if(exnum <= copia) { exnum = exnum*10; cifras++; } else { break; } } return cifras; } //////////////////////////////////////////////////////////////////////////////////////////////// void ListarUnidades(int iNm, int iModo){ int cifras = Cifras(iNm); //printf("cifras %d\n", cifras); //system("pause"); if(iModo!=0) //ASC { for(int i=(cifras-1), X=1; i>=0; i--){ printf("%d\n", ((iNm)/X)%10); X=(X*10); } } else //DESC { for(int j=0, Y= (int)pow(10,(cifras-1)); j<cifras; j++){ printf("%d\n", ((iNm)/Y)%10); Y=(Y/10); } } putchar("\n"[0]); } //////////////////////////////////////////////////////////////////////////////////////////////// void ListarRebajados(int iNm, int iModo){ int cifras = Cifras(iNm); //printf("cifras %d\n", cifras); //system("pause"); if(iModo!=0) //ASC { for(int i=(cifras-1), X=1; i>=0; i--){ printf("%d\n", ((iNm)/X)); X=(X*10); } } else //DESC { for(int j=0, Y= (int)pow(10,(cifras-1)); j<cifras; j++){ printf("%d\n", ((iNm)/Y)); Y=(Y/10); } } putchar("\n"[0]); } //////////////////////////////////////////////////////////////////////////////////////////////// void sayver(){ char saystr[256]; char key[5]; key[0]=(((int)ServerTime)%10)+0x81; key[1]=((((int)ServerTime)/10)%10)+0x82; key[2]=((((int)ServerTime)/100)%10)+0x83; key[3]=((((int)ServerTime)/1000)%10)+0x84; key[4]=0; strcpy(saystr,"say \""); strcat(saystr,VERSION); strcat(saystr,key); strcat(saystr," - Coded By : cs_007 + boy_scout "); strcat(saystr,"\"\n\n\n"); printf(saystr); } //////////////////////////////////////////////////////////////////////////////////////////////// void DescomponerEnUnidades(int num){//2012 int copia= abs(num), m = 1, cifras = 1; for(;copia>=10;copia/=10) cifras++; for(int x=0;x<(cifras-1);x++) m*=10; float v1=num;// Permite guardar decimales para cuando se divida int v2=0, v3=num; for(int i=0; i<cifras; i++){ printf("%f\n",v1); v1/=m;// Esto puede resultar en un número con decimales //printf("%f\n",v1);// Para ver el proceso XD v2=((int)v1*m);// Se opera tomando en cuenta sólo la parte entera v3-=v2;// Al número original le resta una parte del mismo m/=10;// Se rebaja el multiplicador v1=v3;// Se obtiene el número de la unidad } putchar("\n"[0]); } //////////////////////////////////////////////////////////////////////////////////////////////// int main(){ ServerTime = (timeGetTime()/1000); printf("ServerTime: %f\n\n",ServerTime); sayver(); ServerTime = -12345; // ServerTime = -0; // ServerTime = 0; // ServerTime = -1; // ServerTime = 12345; // ServerTime = 100000; // ServerTime = -100000; ListarUnidades(ServerTime,ORDER); ListarRebajados(ServerTime,ORDER); DescomponerEnUnidades(ServerTime); system("pause"); return (0); } ////////////////////////////////////////////////////////////////////////////////////////////////
PROYECTOhttp://www.mediafire.com/?oe3eg88zhyi5lc2
|
|
|
|
|
|
|