[ 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. LuX0R

    LuX0R New Member

    Joined:
    18 Nov 2008
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Математика в руки! Пишу первое что пришло в голову, это выразить координаты точек через sin и cos.
    x = R cos a
    y = R sin a
    Code:
    ...
    #include <math.h>
    ...
    /* убейте но не помню навскидку как называеться структура, вроде как Point, но не буду врать, потому определю для примера*/
    struct cord  
    {
    	int x;
    	int y;
    }cord;
    ...
    cord RotateCordinate(int R, float a) // радиуc окружности вращения, угол
    {
    	cord Cordinate;
    	Cordinate.x = cos(a)*R;
    	Cordinate.y = sin(a)*R;
    	return Cordinate;
    }
    ...
    // собсно твой код
    	float Alpha = 0; // угол
    	int R; // радиус = половине длинны диагонали твоего прямоугольника
    	cord Rectangle_1, Rectangle_2; // твои координаты
    	while(...) // не знаю, для чего тебе нужно, потому условие выхода если нужно определишь сам
    	{
    		Clear();  // очищаем поле для рисования
    		Rectangle_1 = RotateCordinate(R, Alpha);
    		Rectangle_2 = RotateCordinate(R, Alpha+180); // для противоположной координаты +180 градусов
    		Rect(Rectangle_1.x, Rectangle_1.y, Rectangle_2.x, Rectangle_2.y);  // (*)
    		Alpha += 0,01;  // смещаем угол
    		delay(40);  // примерная скорость 25 кадров в сек.
    	}
    ... 
    
    В пункте (*) можно соответственно приплюсовать ровнение кординат, т.е. где именно будет центр окружности. Можно еще сделать через уравнение окружности. Соответственно и для трехмерных обьектов, только нужно использовать уровнение элипса.
     
  2. agrofyl2

    agrofyl2 New Member

    Joined:
    25 Apr 2008
    Messages:
    54
    Likes Received:
    4
    Reputations:
    0
    Помогите пожалуйста:
    Компилятор Visual C++ 2005
    Как настроить, чтобы скомпилированная программа запускалась и на другом компьютере а не только на моем?
    Только конкретно, там, какие галочки и т.п.
    Спасибо.
     
  3. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    agrofyl2, попробуй:
    Там есть Use Run-time Library. Ставь либо Multithreaded, либо Debug Multithreaded.
    З.Ы. или просто носи с собой нужные библиотеки :)
     
    1 person likes this.
  4. Jes

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

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    while (true){
    if(GetKeyboardState(keysState)==0) MessageBox(0,"Error",0,0);
    if(keysState[VK_LSHIFT] > 0 ){
    MessageBox(0,"Pushed","ok",0);
    return 0;
    }
    Sleep(100);
    }

    никакого эффекта :/
    (нада именно через GetKeyboardState)
     
    1 person likes this.
  5. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Так, вроде работает:
    Code:
    	while(true)
    	{
    		if(GetKeyboardState(keysState)==0)
    		{
    			MessageBox(0,"Error",0,0);
    			return 1;
    		}
    		if(keysState[VK_SHIFT])
    		{
    				MessageBox(0,"Pushed","ok",0);
    			return 0;
    		}
    	Sleep(100);
    	}
    только вот Shift должен быть нажат во время запуска проги
     
  6. Sibogatov

    Sibogatov New Member

    Joined:
    24 Nov 2008
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    Начал изучать С++ в папке с прогой есть Exampels вот я выбрал Hello! Когда я нажимаю выполнить или отладка у меня пишет Данный Файл не откомпилирован... что делать?
     
  7. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    возможно....скомпилировать?
     
  8. LuX0R

    LuX0R New Member

    Joined:
    18 Nov 2008
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    ммм... ответ прост: Откомпилировать! Позвольте полюбопытствовать: а в какой среде разработки вы программируете? Из всех установленных у миня:
    Builder 6.0 Run->Run (F9)
    Microsoft Vsual C++ 6.0 Build->Build (F7) или Build->Execute (Ctrl+F5)
    Visual Studio 2005 Build->Build Solution (F6)
    Turbo C 3.0 Compile->Compile (Alt+F9) или Compile->Make (F9), а потом Run->Run (Ctrl+F9)
    В Dev-C++ не помню, но по моему F9 точно компилит и запускает.
     
  9. Sibogatov

    Sibogatov New Member

    Joined:
    24 Nov 2008
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    всё сделал... а можно примеры маленьких программ каких не буть?
     
  10. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Code:
    int main()
    {
        printf("%s\n", (sizeof('a') == sizeof(char)) ? "C++" : "C");
        return 0;
    }
    
    (c)wikipedia :)
     
  11. Sibogatov

    Sibogatov New Member

    Joined:
    24 Nov 2008
    Messages:
    40
    Likes Received:
    0
    Reputations:
    0
    еще пожалуйста... :) хочу научиться чё нить
     
  12. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Sibogatov, возьми книгу и учись ;)
    З.Ы. можешь учиться по этому: http://forum.antichat.ru/threadnav40894-1-10.html
     
  13. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    BreakPoint?

    Я уже задавал этот вопрос..ответа так и не получил. При запуске из билдера выскакивае вот это окошко . А если загрузить в olly, то можно увидеть это
    Что за брейкпоинт? И как его убрать?
     
  14. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Источник проблемы найден. Другой вопрос. Имеется такой код:
    Code:
     
    #define FREE(x) HeapFree(GetProcessHeap(), 0, (x))
    /*.....................................*/
    res = pGetExtendedTcpTable(NULL, &size, 1, AF_INET, TCP_TABLE_OWNER_MODULE_ALL, 0);
    	if(pTCPTable != NULL)
    	{
    		FREE(pTCPTable);
    	}
    
    Окно CPU выскакивает на:
    Code:
    FREE(pTCPTable);
    Что в этом коде не так? :)
     
  15. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    2criz
    Хм, в этом коде, что вы привели, объявления pTCPTable не вижу... И вообще работы с этой переменной(кроме FREE, а до FREE?)
     
    1 person likes this.
  16. criz

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

    Joined:
    4 Nov 2007
    Messages:
    293
    Likes Received:
    40
    Reputations:
    6
    Code:
    pGetExtendedTcpTable = (DWORD (WINAPI *)(PVOID,PDWORD,BOOL,ULONG,TCP_TABLE_CLASS,ULONG)) GetProcAddress(LoadLibrary( "iphlpapi.dll"), "GetExtendedTcpTable");
    /*................*/
    PVOID pTCPTable;
    
    Затем опять идет вызов pGetExtendedTcpTable
     
  17. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    2criz

    Если это действительно весь код, то. pTCPTable - локальная переменная. В ней когда вы вызываете

    if(pTCPTable != NULL)
    {
    FREE(pTCPTable);
    }

    сразу после
    PVOID pTCPTable;
    мб все, что угодно => Пишите вот так

    PVOID pTCPTable = 0;

    А то у вас if срабатывать когда не надо будет...
     
    1 person likes this.
  18. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    как на winapi получить путь к папке application data?
     
  19. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    ntldr У каждого пользователя своя папка application data, если тебе надо определенную, то сначала придется выполнить пред-пункт (определить пользователя).

    Например:

    All Users
    Default User
    Текущий пользователь

    Все они имеют свои папки application data. Получение доступа это наверное простой перебор всех папок на определнном диске (если конечно нет спец. апи функции)
     
  20. bons

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

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    Code:
    #include <shlobj.h>
    #include <stdio.h>
    
    int main()
    {
    	char cpPriv[MAX_PATH];
    	SHGetSpecialFolderPath(0, cpPriv, CSIDL_APPDATA, 0);
    	printf("%s\n",cpPriv);
    }
    
     
Thread Status:
Not open for further replies.