[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Ann$

    Ann$ New Member

    Joined:
    13 Jan 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <dos.h>
    #include <time.h>
    
    unsigned char far *screen =  MK_FP (0xA000,0);
    
    void SetMode (int Mode)
    {
       union REGS regs;
       regs.h.ah = 0;
       regs.h.al = Mode;
       int86 (0x10, &regs, &regs);
    }
    
    void ClearScreen (void)
    {
      unsigned i;
      for (i=0; i<64000l; i++) screen [i]=0;
    }
    
    void drawBody (int x, int y, unsigned char *draw)
    {
     int x1,y1;
     
     x += 2;
     y += 3;
     
     for (y1=0;y1<14;y1++)
     for (x1=0;x1<17;x1++)
     if (draw[y1*17+x1] !=0) screen[320*(y1+y)+x1+x] = draw[y1*17+x1];
    }
    
    
    void clearBody (int x, int y)
    {
     int x1,y1;
     
     x += 2;
     y += 3;
     
     for (y1=0;y1<14;y1++)
     for (x1=0;x1<17;x1++)
     screen[320*(y1+y)+x1+x] = 0;
    }
    
    
    void drawObstacle (int x, int y, unsigned char *draw)
    {
     int x1,y1;
     
     x += 4;
     y += 5;
     
     for (y1=0;y1<10;y1++)
     for (x1=0;x1<12;x1++)
     if (draw[y1*12+x1] !=0) screen[320*(y1+y)+x1+x] = draw[y1*12+x1];
    }
    
    void WaitSync(void)
    {
    while(inportb(0x3DA) &0x8);
    while(!(inportb(0x3Da)&0x8));
    }
    
    
    void drawLine1 (int x)
    {
     int y;
     for (y=0;y<=200;y++)
     screen[320*y+x] = 8;
    }
    
    void drawLine2 (int y)
    {
     int x;
     for (x=0;x<=320;x++)
     screen[320*y+x] = 8;
    }
    
    unsigned char robot[17*14] = {
        0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
        0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,
        0,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1,0,
        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
        1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,
        1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,
        1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
        0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,
        0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,
        0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,
        0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,
        1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,
        1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1
    };
    
    unsigned char obstacle[12*10] = {
            8,8,8,8,8,8,8,8,8,8,8,8,
    		8,3,1,1,1,1,1,1,1,1,3,8,
            8,1,3,1,1,1,1,1,1,3,1,8,
            8,1,1,3,1,1,1,1,3,1,1,8,
            8,1,1,1,3,3,3,3,1,1,1,8,
            8,1,1,1,3,3,3,3,1,1,1,8,
            8,1,1,3,1,1,1,1,3,1,1,8,
            8,1,3,1,1,1,1,1,1,3,1,8,
            8,3,1,1,1,1,1,1,1,1,3,8,
    		8,8,8,8,8,8,8,8,8,8,8,8
    };
    
    
    void goNow(int go, int *kx, int *ky ) {
    
    int x = *kx;
    int y = *ky;
    
    
    if( go == 1) y--;
    else if( go == 2) {y--; x++;}
    else if( go == 3) {x++;}
    else if( go == 4) {x++; y++;}
    else if( go == 5) {y++;}
    else if( go == 6) {y++; x--;}
    else if( go == 7) {x--;}
    else if( go == 8) {x--; y--;}
    
    *kx = x;
    *ky = y;
    }
    
    void main ()
    {
       int x, y, i = 1;
       int up = 0;
       int r_max = 0;
       int kx = 0, ky = 0;
       int r = 0;
       int go = 0;
       // все шаги
       int xs[1000];
       int xy[1000];
       //препятствия
       int ss[161];
       int xx;
       long j;
       time_t t;
    
       SetMode (0x13);
    
    	srand((unsigned) time(&t) );
    	r = rand() % 1000000;
    
    
    	//for(x=0; x <= 320; x += 20) drawLine1(x);
        //for(y=0; y <= 200; y += 20) drawLine2(y);
    
    	for (xx=0; xx < 160; xx++) ss[i] = 0;
    	
    	xs[0] = 0;
    	xy[0] = 0;
    	
    	while (kx != 15 || ky != 9) {
    
    	
    	
    	srand(i * i * r * r);
    	
    	if (ky == 0 && kx == 0) { up = 2; r_max = 3; }
    	else if (ky == 0 && kx == 15) { up = 4; r_max = 2; }
    	else if (ky == 9 && kx == 15) { up = 1; r_max = 2; }
    	
    	else {
    	
    		if (ky == 0) {up = 2; r_max = 4;}
    		else if (kx == 0) {up = 1; r_max = 4;}
    		else if (kx == 15) {up = 4; r_max = 2;}
    		else if (ky == 9) {up = 0; r_max = 3;}
    		else { up = 1; r_max = 5;}
    		
    	}
    	
    	go = (rand() % (r_max - 1) ) + up + 1;
    	
    	
    	goNow( go, &kx, &ky );
    	
    	
    	xs[i] = kx;
    	xy[i] = ky;
    	
    	ss[ky*16+kx] = 1;
    	
    	
    	
    	i++;
    	}
    	
    	
    	
    	for (xx=0; xx < 160; xx++) {
    		if (ss[xx] == 0) {
    			srand(r * r * xx * xx);
    			go = rand() % 5;
    			if (go > 1) drawObstacle( (xx % 16) * 20, (xx / 16) * 20, obstacle);
    		}
    	}
    	
    	for(xx = 0 ; xx < i; xx++) {
    		drawBody( xs[xx]*20, xy[xx]*20, robot);
    
    		for (j = 0; j < 200000000; j++) {}
    		clearBody(xs[xx]*20, xy[xx]*20);
    	}
    	
    	SetMode(3);
    	
    
    
    }
    
    Вот только я незнаю правильно или нет
     
    #4641 Ann$, 13 Jan 2010
    Last edited by a moderator: 14 Jan 2010
  2. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    добрый день, подскажите пожалуйста библиотеки для работы с webom, и примеры программ или faq.
    Просто надо сделать такую программку, каторая проверяет url (url в текстовом файле), на наличие в html коде данной страницы (вот пример http://www.flamberg.pl/forum/memberlist.php) тут надо проверить если в html коде данная строка profile.php?mode=email&u если есть, то удалить из файла, или может кто-нибудь для примера написать данное прогу?
     
    #4642 aydar, 13 Jan 2010
    Last edited: 13 Jan 2010
  3. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    для какого языка? мы не екстрасенсы))
     
  4. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    зачем вообще библиотека. поиск и замена подстроки в строке уже требует доп библиотек? причем в любом языке...
     
  5. Retimiled

    Retimiled Banned

    Joined:
    23 Dec 2009
    Messages:
    110
    Likes Received:
    17
    Reputations:
    0
    2 Ann$

    ... ставь точнее задачу ... если обьезд препятствия то с какой целью ... если из одной точки достичь другой то существуют алгоритмы нахождения наикратчайшего пути и без разницы робот это или колобок!
     
  6. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    А можно попросить тех, кто желает получить помощь в составлении алгоритма?

    Уважаемые дамы и господа!

    Если вы желаете получить ответы на свои вопросы, то задайте вопрос и предоставьте необходимую информацию так, чтобы у знающих людей была возможность ответить вам.

    Не в коем случае не допускайте по 50 синтаксических, грамматических, пунктуационных и прочих ошибок. Такие обращения очень сложно читаются!!! Очень сложно!!! И, скорее всего, ваш вопрос останется без внимания определённого процента посетителей.

    Если выкладываете исходник - выкладывайте ту часть, которая имеет отношение к вопросу. Не ленитесь отсеивать ненужную информацию! Каждый человек ценит своё время и ни у кого нет желания разбирать громоздкий код в несколько сот строк!

    Одним словом - задавайте человеческие вопросы, если вы желаете получить человеческие ответы.

    Спасибо за внимание. Надеюсь, моя просьба не останется незамеченной.
     
  7. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    язык с++, поиск и замена не требует никаких библиотек, ну как мне искать подстроку, если файл (html страница) находится в интернети?
     
  8. herfleisch

    herfleisch Elder - Старейшина

    Joined:
    7 Jan 2009
    Messages:
    579
    Likes Received:
    203
    Reputations:
    13
    А удалять подстроку Вы тоже хотите прямо "в интернети"???
     
  9. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    зачем мне удалять подстроку?
    Дан файл (txt) такого вида
    Программа должна заходить на них и если на страницы присутствует эта строка
    , удалить из текстового файла данный url.
     
    #4649 aydar, 14 Jan 2010
    Last edited: 14 Jan 2010
  10. BrainDeaD

    BrainDeaD Elder - Старейшина

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    libcurl для закачки файла http://curl.haxx.se/libcurl/
    здесь библотека, чтоб пропарсить html http://www.codeproject.com/KB/library/GomzyHTMLReader.aspx
    написать условие для удаления строки из текста, я надеюсь, ты сумеешь.
     
  11. H1N1

    H1N1 New Member

    Joined:
    30 Nov 2009
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Как системно отслеживать что в папке появился новый файл?

    Скажем у вас есть папка(папки), и вот этой папкой пользуются многа народа (и по сети и так), скажем вам нужно чтобы в папку можно было скопировать только файлы типа doc и txt, все остальные типы файлов скопировать туда было нельзя, что делать?
    Под рукой у вас тока Dev C++, и ось винда.
    И да, характеристики компа сильно ограничены, предположим пень 3.
     
  12. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    Слушай можешь со мной связаться или оставь свою асю есть парочка вопросов. моя ася 267-683-881
     
  13. aydar

    aydar Member

    Joined:
    12 Nov 2009
    Messages:
    259
    Likes Received:
    6
    Reputations:
    -2
    Помоги плиз с установкой библиотеки..
     
  14. isqad88

    isqad88 New Member

    Joined:
    16 Dec 2009
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Как получить список всех дисков компьютера и узнать какой из них HDD а какой CD-ROM (DVD)?
     
  15. POS_troi

    POS_troi Elder - Старейшина

    Joined:
    1 Dec 2006
    Messages:
    1,569
    Likes Received:
    466
    Reputations:
    108
    Все поклоняются гуглу но пользоваться им не хотят

    http://www.cyberforum.ru/visual-cpp/thread24216.html

    2H1N1

    Периодически Парси файлы в папке по расширению и все что левое удаляй (чтобы не заморачиваться с организацией циклов, можно воспользоваться "Расписание зада"). Это все можно сделать с помощью батника.

    2aydar

    Куда? какая среда? на MVC я так и не заставил CURL толком работать
     
    #4655 POS_troi, 18 Jan 2010
    Last edited: 18 Jan 2010
  16. isqad88

    isqad88 New Member

    Joined:
    16 Dec 2009
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Вот сам разобрался уже ))
    Code:
    #include <windows.h>
    
    #include <iostream>
    
    
    using namespace std;
    
    
    int main()
    {
     
     char drive[] = {"A:"};
     
    
    DWORD drive_mask = GetLogicalDrives();
     while(drive_mask)
     {
    	if(drive_mask & 1) 
    	{
    		cout<<drive<<"\n";
    	
    		switch(GetDriveType(drive))
    		{
    			case DRIVE_UNKNOWN: cout<<"Drive unknown\n"; break;
    			case DRIVE_NO_ROOT_DIR: cout<<"No root\n"; break;
    			case DRIVE_REMOVABLE: cout<<"DRIVE_REMOVABLE\n"; break;
    			case DRIVE_FIXED: cout<<"DRIVE_FIXED\n"; break;
    			case DRIVE_REMOTE: cout<<"DRIVE_REMOTE\n"; break;
    			case DRIVE_CDROM: cout<<"DRIVE_CDROM\n"; break;
    			case DRIVE_RAMDISK: cout<<"RAMDISK\n"; break;
    		};
    	}
    	++drive[0];
    	drive_mask >>= 1;
     }
     return (0);
    }
    Только вот теперь вопрос:
    char drive[] = {"A:"}; - здесь как я понял определили символьный массив, и первый элемент его равен "A:"

    ++drive[0]; - а после этого автоматически продолжается по алфавиту?? или что это вообще
     
  17. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    первый элемент его равен "A",
    ++drive[0]; прибавим к нему 1 и получим B
     
  18. cupper

    cupper Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    Что произойдет если сделать так
    A - указатель на динамически созданный массив размерности X
    A = (int*) realloc(A, Y*sizeof(int));
    Если Y < X.
    Уменьшиться размер массива и затрется последний элемент (что собсно и нужно) или что то неопределенное ?

    Вот то что я хочу сделать
    Code:
    int main(){
    	int *mas = new int [5];
    	int mas1[]={1,2,3,4,5};
    	for (int i=0; i<5; i++)
    		mas[i] = mas1[i];
    	mas = (int*) realloc(mas, 3*sizeof(int));
    	for (int i=0; i<5; i++)
    		cout<<mas[i]<<" ";
    	cout<<endl;
    }
    
    Оно выводит 1 2 3 4 5
    Но я не могу проверить выводит оно это потому что:
    1. Память не успела затереться но за границу массива мы уже вышли
    2. Граница массива осталась на прежнем месте
     
    #4658 cupper, 20 Jan 2010
    Last edited: 20 Jan 2010
  19. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    realloc не предназначен для перевыделения памяти, выделенной new.

    http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/
     
  20. cupper

    cupper Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    369
    Likes Received:
    92
    Reputations:
    5
    неповеришь, но именно от тудова и взял ее. У меня туговато с англ, если не для изменения размера массива то, пилять, для чего ж она ?
     
Thread Status:
Not open for further replies.