Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2015, 11:01   #1
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию Основы C++ для начинающих от challenger

Использование простейших указателей на функции
Код:
#include <stdio.h>

void f()
{
printf("a\n");
}

void main()
{
void (*p)() = &f;

p();

}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 11:02   #2
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Программирование абстрактного класса и создание классов-наследников от абстрактного класса с шаблоном

Код:
#include <stdio.h>

class a
{
public:
virtual void f1() = 0;
virtual void f2() = 0;
virtual void f3() = 0;
};

template <class T>
class b : public a
{
public:
void print() { printf("b\n"); f1();}
void f1() { printf("f1\n"); }
void f2() { printf("f2\n");}
void f3() { printf("f3\n");}
};



void f()
{
printf("a\n");
}

void main()
{
b <int> as;
void (*p)() = &f;

p();


as.print();

}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 11:04   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Простейший класс плоскости

Код:
#include <stdio.h>

struct point
{
double x;
double y;
double z;

point() { x = 0; y = 0; z = 0; }
point(double a1, double a2, double a3) { x = a1; y = a2; z = a3; print(); }
void print() { printf("%.2f %.2f %.2f\n", x, y, z); }
void operator+(double a) { x += a; y += a; z += a; }
void operator-(double a) { x -= a; y -= a; z -= a; }
void operator*(double a) { x *= a; y *= a; z *= a; }
void operator/(double a) { x /= a; y /= a; z /= a; }
void operator-(point& a) { x -= a.x; y -= a.y; z -= a.z; }
void operator+(point& a) { x += a.x; y += a.y; z += a.z; }
void operator*(point& a) { x *= a.x; y *= a.y; z *= a.z; }
void operator/(point& a) { x /= a.x; y /= a.y; z /= a.z; }
void operator=(point& a) { x = a.x; y = a.y; z = a.z; }
};

struct vector
{
double x;
double y;
double z;

vector(double a1, double a2, double a3) { x = a1; y = a2; z = a3; print();}
vector(point* a) { x = a->x, y = a->y, z = a->z; }
void print() { printf("%.2f %.2f %.2f\n", x, y, z); }
};

struct plane
{
double A;
double B;
double C;
double D;
double n;

plane(double a1, double a2, double a3, double a4, double a5, double a6, double a7, double a8, double a9) { f(a1, a2, a3, a4, a5, a6, a7, a8, a9); }
plane(point* a, point* b, point* c) { f(a, b, c); }
static double det(double a1, double a2, double a3, double a4, double a5, double a6, double a7, double a8, double a9) { return ( a1 * a5 * a9 - a3 * a5 * a7 + a2 * a6 * a7 + a3 * a4 * a8 - a1 * a6 * a8 - a9 * a2 * a4 );  }
void f(double a1, double a2, double a3, double a4, double a5, double a6, double a7, double a8, double a9) { A = det ( a2, a3, 1.0, a5, a6, 1.0, a8, a9, 1.0); B = - det ( a1, a3, 1.0, a4, a6, 1.0, a7, a9, 1.0); C = det ( a1, a2, 1.0, a4, a5, 1.0, a7, a8, 1.0); D = - det (a1, a2, a3, a4, a5, a6, a7, a8, a9); 
printf("%.2f x ", A);
if (B > 0) printf(" + ");
printf("%.2f y ", B);
if (C > 0) printf(" + ");
printf("%.2f z ", C);
if (D > 0) printf(" + ");
printf("%.2f = 0\n", D);  
n = A*A + B*B + C*C;
printf("%.2f = 0\n", n);  
} // Точка принадлежит плоскости, если тождество является верным.
void f(point* a, point* b, point* c) { f(a->x, a->y, a->z, b->x, b->y, b->z, c->x, c->y, c->z); }
double g(plane* s) { return cos((x * s->x + y * s->y + z* s->z) / (n * s->n )); }

};

vector* m(vector* a, vector* b) { vector* c = new vector(a->x - b->x, a->y - b->y, a->z - b->z); return c;  }
point* m(point* a, point* b) { point* c = new point(a->x - b->x, a->y - b->y, a->z - b->z); return c;  }


int main()
{ 
 printf("%f\n", plane::det(2.0, 3.0, 1.0,1.0, 3.0, 1.0, 2.0, 6.0, 1.0) );
 printf("%f\n", plane::det(1.0 , 3.0, 1.0, 3.0, 3.0, 1.0, 2.0, 6.0, 1.0) );

 point a1(1.0 , 2.0,  3.0);
 point a2(4.0, 5.0, 3.0);
 point a3(3.0, 1.0, 3.0);
 point a4(2.0, 2.0, 6.0);

 plane e( &a1, &a2, &a3);
 plane f_( &a1, &a2, &a4);
 plane g( &a2, &a3, &a4);

 plane a( 1.0 , 2.0,  3.0, 4.0, 5.0, 3.0, 3.0, 1.0, 3.0);
 plane b( 1.0 , 2.0,  3.0, 4.0, 5.0, 3.0, 2.0, 2.0, 6.0);
 plane c( 4.0 , 5.0,  3.0, 3.0, 1.0, 3.0, 2.0, 2.0, 6.0);
 plane d( 1.0 , 2.0,  3.0, 3.0, 1.0, 3.0, 2.0, 2.0, 6.0);

 point* q1 = new point; 
 *q1 = a1; 
 q1->operator-(a2); 
 q1->print(); 
 q1->operator/(2.0); 
 q1->print(); 
 q1->operator+(a2); 
 q1->print();

 point sp1(2.5, 3.5, 3);
 point sp2(3.5, 3.0, 3.0); 
 point sp3(2.0, 2.0, 6.0);

 
 plane h(&sp1, &sp2, &sp3);

 h->print();

 return 0;
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 11:05   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Подсоединение к ftp с использованием сокетов

Код:
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <conio.h>

#pragma comment (lib, "wsock32.lib")

WSADATA data;
SOCKADDR_IN sockaddr;
PHOSTENT phe;
SYSTEMTIME st;
SOCKET sock;
HANDLE h1, h2, h3;

void f3(int* i)
{
 char buf2[1024];
 printf("thread 3:\n");
 while(1)
 {
  printf("_");
  GetLocalTime(&st);  printf("h3 %d:%d:%d scanf\n", st.wHour, st.wMinute, st.wSecond);   scanf("%s", &buf2);
  GetLocalTime(&st);  printf("h3 %d:%d:%d send:%s\n", st.wHour, st.wMinute, st.wSecond, buf2);   send(sock, buf2,strlen(buf2), NULL);  
 }
}

void f2(int* i)
{
 char buf[1024];
 printf("thread 2:\n");
 for(;;)
 {
  printf(".");
  while (recv(sock, buf, 1024, NULL) )
  {
   GetLocalTime(&st);  printf("h2 %d:%d:%d printf();\n", st.wHour, st.wMinute, st.wSecond);   printf("f:\n");
   GetLocalTime(&st);  printf("h2 %d:%d:%d printf(buf);\n", st.wHour, st.wMinute, st.wSecond);   printf("%s\n",buf);
  }
 }
}


void f(int* i)
{
printf("thread 1:\n");
WSAStartup(0x101, &data);
GetLocalTime(&st);  printf("h1 %d:%d:%d socket\n", st.wHour, st.wMinute, st.wSecond); sock = socket(AF_INET, SOCK_STREAM, 0);
sockaddr.sin_family = AF_INET;
sockaddr.sin_port = htons(21);
GetLocalTime(&st);  printf("h1 %d:%d:%d gethostbyname\n", st.wHour, st.wMinute, st.wSecond);  phe = gethostbyname("dlink.ru");
GetLocalTime(&st);  printf("h1%d:%d:%d memcpy\n", st.wHour, st.wMinute, st.wSecond);  memcpy((char FAR*)&(sockaddr.sin_addr), phe->h_addr, phe->h_length);

GetLocalTime(&st);  printf("h1 %d:%d:%d h2 = CreateThread\n", st.wHour, st.wMinute, st.wSecond);  h2 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) &f2, &i, 0, 0);
GetLocalTime(&st);  printf("h1 %d:%d:%d h3 = CreateThread\n", st.wHour, st.wMinute, st.wSecond);  h3 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) &f3, &i, 0, 0);

GetLocalTime(&st);  printf("h1 %d:%d:%d connect\n", st.wHour, st.wMinute, st.wSecond);  connect(sock, (PSOCKADDR) &sockaddr,sizeof(sockaddr));

}


int main()
{
int i = 0;
GetLocalTime(&st);  printf("%d:%d:%d h1 = CreateThread\n", st.wHour, st.wMinute, st.wSecond);   h1 = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) &f, &i, 0, 0);
for(;;) ;

return 0;
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 11:05   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы б хоть код форматировать научились, а потом начинающих учили.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.02.2015, 11:06   #6
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Сборка сведений обо всем интернете (многопоточная) (требуется суперкомпьютер)

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <windows.h>

#pragma comment (lib, "wsock32.lib")

int a;


void f(int* i)
{
printf("thread: %d %d\n", a, *i);
char str[1024]; 
sprintf(str, "w7.exe %d %d\0", a, *i);
system(str);

}

int main(int argc, char* argv[])
{ 
int i;
int m[255];
HANDLE h[255];

for(i=0;i<255;i++)
m[i] = i;

a = atoi(argv[1]);

for(i = 0;i < 255;i++)
{
printf("%d\n", i);
h[i] = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) &f, &m[i], 0, 0);
}

getch();

return 0;
}
w7

Код:
#include <stdio.h>
#include <string.h>
#include <windows.h>

#pragma comment (lib, "wsock32.lib")




int main(int argc, char* argv[])
{ 
int a, b;
unsigned int i, j, k, l, i1; 
char buf[1024]; 
char str[1024]; 
char str2[1024]; 
WSADATA data; 
SOCKET sock; 
SOCKADDR_IN sockaddr; 
PHOSTENT phe; 
FILE* f;  

a = atoi(argv[1]);
b = atoi(argv[2]);

i = a;
j = b;



for(k = 0; k < 255; k++)
for(l = 0; l < 255; l++)
{

sprintf(str, "%d %d\0", a, b);
//printf("%d %d %d %d\n", i, j, k , l);


WSAStartup(0x101, &data);  
sock = socket(AF_INET, SOCK_STREAM, 0); 
sockaddr.sin_family = AF_INET; sockaddr.sin_port = htons(80); sockaddr.sin_addr.S_un.S_un_b.s_b1 = i; sockaddr.sin_addr.S_un.S_un_b.s_b2 = j; sockaddr.sin_addr.S_un.S_un_b.s_b3 = k;  sockaddr.sin_addr.S_un.S_un_b.s_b4 = l;


phe = gethostbyaddr( (char FAR*) &(sockaddr.sin_addr), sizeof(sockaddr.sin_addr),  AF_INET); 
i1 = 0; 

f = fopen(str, "a"); 
fprintf(f, "%d %d %d %d\n",  sockaddr.sin_addr.S_un.S_un_b.s_b1, sockaddr.sin_addr.S_un.S_un_b.s_b2, sockaddr.sin_addr.S_un.S_un_b.s_b3, sockaddr.sin_addr.S_un.S_un_b.s_b4 );
while(phe && phe->h_name && phe->h_name[i1]!='\0' ) 
 fprintf(f, "%c", phe->h_name[i1++] );   
fprintf(f, "\n");
fclose(f);

WSACleanup(); 

}




return 0;
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 11:10   #7
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Программа для закачки сайтов из интернета (I)

Код:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#pragma comment (lib, "wsock32.lib")



// буфер
struct buf 
{ 
	unsigned char* buf1; 
	int n; 

	buf() { n = 0; buf1 = 0; } 
	~buf() { if (buf1) delete buf1;}
	buf(int i) { buf1 = new unsigned char[i+1]; buf1[i] = '\0'; n = i; }
	void add0(unsigned char a) { buf1 = new unsigned char[2]; buf1[0] = a; buf1[1] = '\0'; n = 1; }
	void add_(unsigned char a) {  if (n == 0) { add0(a);  return; } int i; unsigned char* buf2 = new unsigned char[n+2]; for(i=0;i<n;i++) buf2[i] = buf1[i]; buf2[n] = a; buf2[n+1] = '\0'; n = n+1; delete [] buf1; buf1 = buf2;  }
	void add(unsigned char a) {  if (n == 0) { add0(a); print(); return; } int i; unsigned char* buf2 = new unsigned char[n+2]; for(i=0;i<n;i++) buf2[i] = buf1[i]; buf2[n] = a; buf2[n+1] = '\0'; n = n+1; delete [] buf1; buf1 = buf2; print(); }
	void add10(unsigned char* a, int n1) {   int i; buf1 = new unsigned char[n1+1]; for(i=0;i<n1;i++) buf1[i] = a[i];  buf1[n1] = '\0'; n = n1; }
	void add1_(unsigned char* a, int n1) { if (n == 0) { add10(a, n1); return; } int i, j; unsigned char* buf2 = new unsigned char[n + n1+2]; for(i=0;i<n;i++) buf2[i] = buf1[i]; for(i=n,j=0;j<n1;j++, i++) buf2[i] = a[j]; buf2[n+n1] = '\0'; n = n + n1; delete [] buf1; buf1 = buf2;  }
	void add1(unsigned char* a, int n1) { if (n == 0) { add10(a, n1); print(); return; } int i, j; unsigned char* buf2 = new unsigned char[n + n1+2]; for(i=0;i<n;i++) buf2[i] = buf1[i]; for(i=n,j=0;j<n1;j++, i++) buf2[i] = a[j]; buf2[n+n1] = '\0'; n = n + n1; printf("%d\n", n);delete [] buf1; buf1 = buf2; print(); }
	int len(unsigned char* a) { int n; int i; n = 0; for(i=0; a[i]!='\0'; i++) n++; return n; }
	void add1_(unsigned char* a) { int n1 = len(a); if (n == 0) { add10(a, n1); return; } int i, j; unsigned char* buf2 = new unsigned char[n + n1+2]; for(i=0;i<n;i++) buf2[i] = buf1[i]; for(i=n,j=0;j<n1;j++, i++) buf2[i] = a[j]; buf2[n+n1] = '\0'; n = n + n1; delete [] buf1; buf1 = buf2;  }
	void add1(unsigned char* a) { int n1 = len(a); if (n == 0) { add10(a, n1); print(); return; } int i, j; unsigned char* buf2 = new unsigned char[n + n1+2]; for(i=0;i<n;i++) buf2[i] = buf1[i]; for(i=n,j=0;j<n1;j++, i++) buf2[i] = a[j]; buf2[n+n1] = '\0'; n = n + n1; printf("%d\n", n);delete [] buf1; buf1 = buf2; print(); }
	void print() { if (buf1) { int i; for(i=0;i<n;i++) printf("%c", buf1[i]); printf("\n"); } }

void print1() 
 {
  struct link* fg;
  int state = 0;
  buf* link1 = new buf;
  int f;
  f = 0;
  int k;
  k = 0;
 
  if (buf1) 
  { 
   int i; 
   for(i=0;i<n;i++) 
   {
    if (buf1[i] == '>')
     printf("%c\n", buf1[i]);
    else if (buf1[i] == '<')
     printf("\n%c", buf1[i]);
    else if (buf1[i] == '=')
     printf(" %c ", buf1[i]);
    else
    {
     if (buf1[i] == 'h' && f == 0)
      f++;
     else if (buf1[i] == 't' && f == 1)
      f++;
     else if (buf1[i] != 't' && f == 1)
      f=0;
     else if (buf1[i] == 't' && f == 2)
      f++;
     else if (buf1[i] != 't' && f == 2)
      f=0;
     else if (buf1[i] == 'p' && f == 3)
      f++;
     else if (buf1[i] != 'p' && f == 3)
      f=0;
     else if (buf1[i] == ':' && f == 4)
      f++;
     else if (buf1[i] != ':' && f == 4)
      f=0;
     else if (buf1[i] == '/' && f == 5)
      f++;
     else if (buf1[i] != '/' && f == 5)
      f=0;
     else if (buf1[i] == '/' && f == 6)     
      f++;     
     else if (buf1[i] != '/' && f == 6)
      f=0;

     if (buf1[i] == '"' && f == 7)
     {      
      FILE* f1;
      char atr[15];
      sprintf(atr, "atr%d\0", k);
      f1 = fopen(atr, "w");
      fprintf(f1, "%s", link1->buf1);
      fclose(f1);
      delete link1;
      link1 = new buf;
      k++;

      f = 0;
     }

     if (f == 7)
     {
      link1->add_(buf1[i]);
     }
     
     printf("%c", buf1[i]); 
    }
   }
   printf("\n"); 
  } 
 }



};
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 11:11   #8
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Программа для закачки сайтов из интернета (продолжение)

Код:
// HTTP-запрос
struct request
{
 buf* t;
 request() { t = 0; }
 ~request() { if(t) delete t; }
};

// адрес
struct address
{
 buf* t;

 address() { t = 0; }
 ~address() { if(t) delete t; } 
};

// HTTP-ссылка
struct link
{
 buf* t;
 link* next;

 buf* host;
 buf* page;

 link() { t = 0; next = 0; host = 0; page=0; }
 link(buf* p) { next = 0; t = new buf; t->add1_(p->buf1); host = 0; page=0; }
 ~link() { if(t) delete t; }
 void add(struct buf *p) { t = new buf; t->add1_(p->buf1); } 
 void add_next(struct buf *p) { link* y = this; while(y->next) y = y->next; y->next = new link(p); }
 void print() { printf("link: "); t->print(); if(next) next->print();}

 void print1(buf* u) 
 {
  buf* link1 = new buf; 
  int i;
  int f;
  int k;
  int state; 
  f = 0;
  k = 0; 
  if (!t) state = 0; 
  else state = 1;
  if (u->buf1) 
  {    
   for(i=0;i<u->len(u->buf1);i++) 
   {
    if (u->buf1[i] == '>') ; else if (u->buf1[i] == '<') ; else if (u->buf1[i] == '=') ;
    else
    {
     if (u->buf1[i] == 'h' && f == 0) f++; 
     else if (u->buf1[i] == 't' && f == 1) f++; else if (u->buf1[i] != 't' && f == 1) f=0; 
     else if (u->buf1[i] == 't' && f == 2) f++; else if (u->buf1[i] != 't' && f == 2) f=0; 
     else if (u->buf1[i] == 'p' && f == 3) f++; else if (u->buf1[i] != 'p' && f == 3) f=0; 
     else if (u->buf1[i] == ':' && f == 4)  f++; else if (u->buf1[i] != ':' && f == 4) f=0; 
     else if (u->buf1[i] == '/' && f == 5) f++; else if (u->buf1[i] != '/' && f == 5) f=0; 
     else if (u->buf1[i] == '/' && f == 6) f++; else if (u->buf1[i] != '/' && f == 6)  f=0;
     if (u->buf1[i] == '"' && f == 7) 
     { 
       if (state == 0) { add(link1); state = 1; } 
       else add_next(link1); 
       delete link1; 
       link1 = new buf; 
       k++; 
       f = 0; 
     }
     if (f == 7)  link1->add_(u->buf1[i]); 
    }
   }
  } 
 }

 void _host()
 {
  int state = 0;
  int i;
  host = new buf;
  page =  new buf;
  for(i=0; i<t->len(t->buf1); i++)
  {
    if (state == 0 && t->buf1[i] == '/') { state = 1; }
    else if (state == 1  && t->buf1[i] != '/') { printf("%c", t->buf1[i]); host->add_(t->buf1[i]); }
    else if (state == 1  && t->buf1[i] == '/') { state = 2; }
    else if (state == 1  && t->buf1[i] == ' ') { state = 3; delete page; page = 0; }
    else if (state == 1  && t->buf1[i] == '\x0d') { state = 3; delete page; page = 0; }
    else if (state == 2) { state = 4; printf("%c", t->buf1[i]); page->add_(t->buf1[i]);}
    else if (state == 4) { printf("%c", t->buf1[i]); page->add_(t->buf1[i]);}
  }
  if (state == 1 || state == 2)
  {
    delete page; page = 0; 
  }

  if (host)
  {
   printf("host: ");
   host->print();
   printf("\n");
  }
  if (page)
  {
   printf("page: ");
   page->print();
   printf("\n");
  }
 }

};
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 11:12   #9
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Программа для закачки сайтов из интернета (продолжение 2)

Код:
// HTTP-ответ
struct response
{
 buf* t;
 response() { t = 0; }
 ~response() { if(t) delete t; }
};


// загрузчик
struct loader
{
 WSADATA data;
 SOCKET sock;
 SOCKADDR_IN sockaddr;
 PHOSTENT phe;
 int i;
 response* a;
 char buf1[1024];
 address* b;
 request* c;
 link* d;
 
 loader()  { a = 0; b = 0; c = 0; d = 0; }
 void create_object(unsigned char* addr)  { if (!a) { a = new response; a->t = new buf; } if(!b) { b = new address; b->t = new buf; } if(!d) { d = new link; } if (b->t) b->t->add1( (unsigned char* ) addr );  }
 void create_address(unsigned char* addr)  {  sockaddr.sin_family = AF_INET;  sockaddr.sin_port = htons(80);  phe = gethostbyname((char * ) addr); memcpy((char FAR*)&(sockaddr.sin_addr), phe->h_addr, phe->h_length);  }
 void create_request(buf* p, buf* p1) {  if (c) delete c; c = new request; c->t = new buf;  c->t->add1( (unsigned char* ) "GET /");  if (p1) c->t->add1( (unsigned char* ) p1->buf1, p1->len(p1->buf1));  c->t->add1( (unsigned char* ) " HTTP/1.1\nHost: ");  c->t->add1( (unsigned char* ) p->buf1, p->len(p->buf1));  c->t->add1( (unsigned char* ) "\n\n"); }
 void socket_startup() { WSAStartup(0x101, &data); sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == 0) exit(0); }
 void socket_connect() { connect(sock, (PSOCKADDR) &sockaddr,sizeof(sockaddr)); }
 void socket_send() { send(sock, (char *) c->t->buf1, c->t->len(c->t->buf1), NULL); }
 void socket_shutdown() { WSACleanup();  }

 void socket_recv()
 {
  int state;
  state = 0;
  while (recv(sock, buf1, 1024, NULL))
  {
   printf("%s\n",buf1);
   for(i=0; buf1[i] != '\0' && i < 1024; i++);
   a->t->add1_( (unsigned char* ) buf1, i+1);
  }
   d->print1(a->t);
  d->print();
  delete a->t;
  a->t = new buf;
 }

 void get_links()
 {
  printf("get_links\n");
  link* cl = d;
  cl->_host();
  while(cl->next)
  {
   socket_startup();
   create_address(cl->host->buf1);
   socket_connect();
   create_request(cl->host, cl->page);
   socket_send();
   socket_recv();
   socket_shutdown();         
   cl = cl->next; 
   cl->_host();
  }  
 }

 void main()
 {

  create_object((unsigned char*)"store.steampowered.com\0");
  socket_startup();
  create_address(b->t->buf1);
  socket_connect();

 buf *x = new buf;
 x->add1((unsigned char* )"tag/en/Strategy\0");

  create_request(b->t, x);

delete x;

  socket_send();
  socket_recv();
  socket_shutdown();
  get_links();
 }

};

int main()
{
 loader x;
 x.main();
 
 return 0;
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 17.02.2015, 11:13   #10
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Класс динамического массива

Код:
#include <stdio.h>

// массив
struct buf 
{ 
	int* buf1; 
	int n; 

	buf() { n = 0; buf1 = NULL; } 
	~buf() { if (buf1) delete buf1;}
	buf(int i) { buf1 = new int[i]; n = i; }
	void add0(int a) { buf1 = new int[1]; buf1[0] = a;  n = 1; }
	void add(int a) {  if (n == 0) { add0(a); print(); return; } int i; int* buf2 = new int[n+1]; for(i=0;i<n;i++) buf2[i] = buf1[i]; buf2[n] = a; n = n+1; delete [] buf1; buf1 = buf2; print(); }
	void add10(int* a, int n1) {   int i; buf1 = new int[n1+1]; for(i=0;i<n1;i++) buf1[i] = a[i];  n = n1; }
	void add1(int* a, int n1) { if (n == 0) { add10(a, n1); print(); return; } int i, j; int* buf2 = new int[n + n1+2]; for(i=0;i<n;i++) buf2[i] = buf1[i]; for(i=n,j=0;j<n1;j++, i++) buf2[i] = a[j]; n = n + n1; printf("%d\n", n);delete [] buf1; buf1 = buf2; print(); }
	void add1(int* a) { int n1 = len(); if (n == 0) { add10(a, n1); print(); return; } int i, j; int* buf2 = new int[n + n1+2]; for(i=0;i<n;i++) buf2[i] = buf1[i]; for(i=n,j=0;j<n1;j++, i++) buf2[i] = a[j]; n = n + n1; printf("%d\n", n);delete [] buf1; buf1 = buf2; print(); }
	void print() { if (buf1) { int i; for(i=0;i<n;i++) printf("%d", buf1[i]); printf("\n"); } }
	int len() { return n; }
};


struct link // связный список массивов
{
 buf* t;
 link* next;

 link() { t = 0; next = 0; } // конструктор
 link(int* p) { next = 0; t = new buf; t->add(*p); }
 link(int p) { next = 0; t = new buf; t->add(p); }
 ~link() { if(t) delete t; }
 void add(int p) { t = new buf; t->add(p); } 
 void add(int *p) { t = new buf; t->add(*p); } 
 void add_next(int p) { link* y = this; while(y->next) y = y->next; y->next = new link(p); }
 void add_next(int *p) { link* y = this; while(y->next) y = y->next; y->next = new link(p); }
 void print() { printf("link: "); t->print(); if(next) next->print();}
};


void main()
{
int i;
int* a1 = new int[10];
for(i=0;i<10;i++)
a1[i] = i;
link* a2 = new link(a1[0]);

for(i=1;i<10;i++)
a2->add_next(a1[i]);

a2->print();

}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инструкция по созданию заготовки для 2D игр (для начинающих) 8Observer8 Gamedev - cоздание игр: Unity, OpenGL, DirectX 31 20.03.2023 02:01
C++ для начинающих a_Alise Помощь студентам 2 27.03.2016 10:00
Основы C++ для начинающих от 8Observer8 8Observer8 Общие вопросы C/C++ 67 08.07.2015 10:17
С++ для начинающих Maxim1 Общие вопросы C/C++ 10 31.05.2010 00:22