Форум программистов, компьютерный форум CyberForum.ru

Странная проблема с вычислением - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объясните принцип создания многопоточности http://www.cyberforum.ru/cpp-beginners/thread565266.html
Здраствуйте, объясните пожалйста как сделать программу многопоточной, у меня есть одна программа, в которой большая нагрузка идет на главный цикл, если я правильно понимаю, то он обрабатывается одним потоком одного ядра процессора, как правильно оформить код, чтобы нагрузка равномерно распределялась на все ядра?
C++ Исходная строка содержит фамилию, имя, отчество, которые могут быть выделены по отдельности vs 2010 Исходная строка содержит фамилию, имя, отчество, которые могут быть выделены по отдельности http://www.cyberforum.ru/cpp-beginners/thread565259.html
Сравнение 2х массивов в С++ C++
Ребята, помогите пожалуйста написать вот такую прогу: Запросить и считать два массива у пользователя (две последовательности целых чисел а1, а2, …, аn и c1, c2, …, ck, n < k.). Для нахождения дан-ных создать и использовать функцию. Выяснить, является ли вторая последовательность подпоследовательностью первой. Например, последовательность 4, 6, 3 является подпоследовательностью...
Сравнение 2х массивов в С++ C++
Ребята, помогите пожалуйста написать вот такую прогу: Запросить и считать два массива у пользователя (две последовательности целых чисел а1, а2, …, аn и c1, c2, …, ck, n < k.). Для нахождения дан-ных создать и использовать функцию. Выяснить, является ли вторая последовательность подпоследовательностью первой. Например, последовательность 4, 6, 3 является подпоследовательностью...
C++ Переменые метода http://www.cyberforum.ru/cpp-beginners/thread565231.html
Допустим есть класс: class Class1 { public: void method1(int i); } В main.cpp создаю экземпляр класса:
C++ программы C++ Напишите функцию itoa(int a, char *s), которая сохдает строковое представление a и возвращает его в s. Целое число должно передоваться в программу из командной строки, а результат должен записываться на монитор и в текстовай файл(имя файла передается через командную строку). Программа, определяющая, в какой строке целочисленной матрицы m на n находится самая длинная серия одинаковых... подробнее

Показать сообщение отдельно
Bacaramba
 Аватар для Bacaramba
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 48
04.05.2012, 15:01     Странная проблема с вычислением
В конце программы, в цикле, в мейне:
sX2[0] и sY2[0] становятся равными sX1[0] и sY1[0], из за того, что sR равно 0, а оно равно 0 из-за sW и sH. Почему они (sW, sH) равны 0 не понятно. Конечно, они равны 0, если sX2[0] и sY2[0] равно sX1[0] и sY1[0], но я только что написал, почему из моих соображений этого не может быть.

Проблема: sW == 0 и sH == 0.

Если хотите вникнуть в программу:
Суть программы: есть линия, и она вертится вокруг одной точки (1го конца) от движения мыши. (считается все через cos a, sin a: sX2[0] = sR * cos a + sX1[0]; sY2[0] = sR * sin a + sY1[0])
http://savepic.su/1888360.jpg

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <mylib/sg.h>
#include <math.h>
 
void drawLine (int x, int y, int a, int b)
{
    MoveToEx(SGWndDC, x, y, 0);
    LineTo(SGWndDC, a, b);
}
 
void drawRectangle (int x, int y, int a, int b)
{
    Rectangle(SGWndDC, x, y, a, b);
}
 
void drawCircle(int x, int y, int a)
{
    Ellipse(SGWndDC, x - a, y - a, x + a, y + a);
}
 
void selectPen(int a,int r,int g, int b)
{
    if(a == 0)
    {
        sgSelectTool(SGWndDC, CreatePen(PS_NULL, 0, RGB(0, 0, 0)));
    }
    else
    {
        sgSelectTool(SGWndDC, CreatePen(PS_SOLID, a, RGB(r, g, b)));
    }
}
 
void selectBrush(int r, int g, int b)
{
    if(r == 256 || g == 256 || b == 256)
    {
        sgSelectTool(SGWndDC, GetStockObject(NULL_BRUSH));
    }
    else
    {
        sgSelectTool(SGWndDC, CreateSolidBrush(RGB(r, g, b)));
    }
}
 
int main()
{
    int a = 0, q = 0;
 
    int mX = sgGetMouseX();
    int mY = sgGetMouseY();
 
    int r = 255, g = 255, b = 255;
 
    int xR = 119 + 24, xG = 119 + 24, xB = 119 + 24;
 
    sgCreateWindow(800, 500);
 
    int sX1[500] = {0};
    int sY1[500] = {0};
    int sX2[500] = {0};
    int sY2[500] = {0};
 
    int sR = 0, mR = 0;
    int sW = 0, mW = 0, sH = 0, mH = 0;
 
    sX1[0] = 300;
    sY1[0] = 200;
    sX2[0] = 400;
    sY2[0] = 100;
 
    while(1 == 1)
    {
        selectBrush(255, 255, 255);
        drawRectangle(-5, -5, 805, 605);
 
        sW = sX2[0] - sX1[0];
        sH = sY2[0] - sY1[0];
        printf("sW = %d | sH = %d \n", sW, sH);
        mW = sgGetMouseX() - sX1[0];
        mH = sgGetMouseY() - sY1[0];
        //printf("mW = %d | mH = %d \n", mW, mH);
        sR = sqrt(sW * sW + sH * sH);
        mR = sqrt(mW * mW + mH * mH);
        //printf("sR = %d | mR = %d \n", sR, mR);
        sX2[0] = sR * (mW / mR) + sX1[0];
        sY2[0] = sR * (mH / mR) + sY1[0];
 
        selectPen(3, 80, 80, 80);
        drawLine(sX1[0], sY1[0], sX2[0], sY2[0]);
 
        Sleep(50);
    }
}
Я понимаю, что я дурак просто, но не могу понять где D:

Добавлено через 3 часа 14 минут
Офигеть. Несколько рас сам посчитал на бумажке. Не понимаю, какого черта не работает.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru