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

Функция округления чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не вмещается число http://www.cyberforum.ru/cpp-beginners/thread848190.html
Начал изучать с++ по учебнику, и вот есть такая практическая задачка, нужно первый пример переделать с использованием array вместо масива, вместо long long использовать long double, и расчитать не 16 значений а 100. 1 код это то с чего надо переделать, а 2-й это то что я максимум смог сделать. В итоге происходит переполнение и не представляю что можно тут сделать. // formore.cpp -- more looping...
C++ Удаление слова из текста Даны текстовый файл и слово. Напечатать те строки файла, которые содержат данное слово без этого слова. Написал прогу которая удаляет из строки лишь первое вхождение слова. Как сделать, чтобы она удаляла слово, если оно в строке встречается несколько раз. #include <vector> #include <stdio.h> #include <string.h> #include <iostream> using namespace std; int main() { char slovo; http://www.cyberforum.ru/cpp-beginners/thread848184.html
группы символов, разделенные пробелами C++
Помогите написать программу ничего не получается уже сижу 2 дня и не в какую. За ранее спасибо)) группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. выравнивание строки заключается в том, что между ее отдельными словами дополнительно вносятся пробелы так, чтобы длина строки стала равной заданной длине(предполагаетя, что требуемая длина не меньше...
Создать класс Hexadec1, который будет содержать число в 16-ричной системе C++
1)разработать класс, содержащий два члена (назовем их first, second), и следующие методы: – ввод с клавиатуры Read; – вывод на экран Display; – метод, указанный в задании. Поле first – целое число, целая часть числа, записанного в двоичной системе счисления; поле second – положительное целое число, дробная часть числа, записанного в двоичной системе счисления. Реализовать метод add2( ) –...
C++ Задача http://www.cyberforum.ru/cpp-beginners/thread848162.html
По результатам опроса прошлого года известен список 10 политических деятелей в порядке убывания их популярности. Проведен новый опрос. Каждый из N журналистов (N - заданное число) назвал три различные фамилии из этого списка. Требуется получить новый список в порядке убывания популярности политических деятелей и показать место, которое занимал каждый деятель в предыдущем опросе. Предусмотреть...
C++ Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора . Вычислить и вывести на экран в виде таблицы значения функции, заданной с по¬мощью ряда Тейлора, на интервале от хнач до xкон с шагом dx с точностью е. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содер¬жать значение аргумента, значение функции и количество просуммированных членов ряда. Номер варианта задания равен номеру компьютера. подробнее

Показать сообщение отдельно
Eumi
5 / 5 / 0
Регистрация: 12.06.2012
Сообщений: 48
25.04.2013, 16:28  [ТС]     Функция округления чисел
Цитата Сообщение от Tulosba Посмотреть сообщение
это не двумерные, это имитация двумерности, создавая одномерный определенной длины.
И ещё, хочу обратить Ваше внимание на целочисленное деление, типа 359/360, вы не получите того, что ожидаете.
По изначальной проблеме, мне кажется у Вас много путаницы в коде, учитывая "двумерные" массивы. Поэтому рекомендую привести весь код, который можно было бы собрать. Если хотите чтобы Ваша проблема была решена в кратчайшие сроки
в том то и смысл что я получаю не целое число, а мне надо округлить в нужную сторону и создать массив. целых чисел. я могу привести код конкретно этой функции, в которой все это происходит, потому что если показывать вся программа очень большая. Эта функция тоже не маленькая. Если понадобиться могу написать комментарии

Кликните здесь для просмотра всего текста
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
93
94
void HoughTransform(double* Gradient, double* EdgeAngleArray, double*& HoughTransformArray, int row, int column, int MaxTheta, int& MaxRhoInt)
{
    int i=0;
    int j=0;
    double* AnglePhi;//Phi=arctg(y/x)
    double* ThetaPolarCoordinate;
    double* RhoPolarCoordinate;
    AnglePhi=new double[row*column];
    ThetaPolarCoordinate=new double[row*column];
    RhoPolarCoordinate=new double[row*column];
    for (i=0; i<row; i++)//working with edge gradient angle
        for (j=0;j<column;j++)
        {
            if ((EdgeAngleArray[i*column+j]<90)&&(EdgeAngleArray[i*column+j]>=-90))
                EdgeAngleArray[i*column+j]=EdgeAngleArray[i*column+j]+90;
            else if ((EdgeAngleArray[i*column+j]>=90)&&(EdgeAngleArray[i*column+j]<180))
                EdgeAngleArray[i*column+j]=EdgeAngleArray[i*column+j]-90;
            else if ((EdgeAngleArray[i*column+j]>=-180)&&(EdgeAngleArray[i*column+j]<-90))
                EdgeAngleArray[i*column+j]=EdgeAngleArray[i*column+j]+270;
 
            if (j==0)
                AnglePhi[i*column+j]=90;
            else
                AnglePhi[i*column+j]=atan(i/j)*180/PI;//arctang(y/x)
 
            if (EdgeAngleArray[i*column+j]<AnglePhi[i*column+j])
                ThetaPolarCoordinate[i*column+j]=EdgeAngleArray[i*column+j]+90;
            else
                ThetaPolarCoordinate[i*column+j]=EdgeAngleArray[i*column+j]-90;
            RhoPolarCoordinate[i*column+j]=j*cos(ThetaPolarCoordinate[i*column+j])+i*sin(ThetaPolarCoordinate[i*column+j]);//rho=x*cos(theta)+y*sin(theta)
        }
    i=0;
    j=0;
    double MaxRho=RhoPolarCoordinate[0];//for finding max rho
    for (i=0; i<row; i++)
        for (j=0;j<column;j++)
        {
            if (RhoPolarCoordinate[i*column+j]>MaxRho)
                MaxRho=RhoPolarCoordinate[i*column+j];
        }
    RoundingFunction(MaxRho,MaxRhoInt);
    AlocatePicture(HoughTransformArray, MaxRhoInt, MaxTheta);
    i=0;
    j=0;
    int* IndexRhoM=new int[row*column];
    int* IndexThetaN=new int[row*column];
    for (i=0; i<row; i++)
        for (j=0;j<column;j++)
        {
            double IndexRho=0;
            double IndexTheta=0;
            IndexRho=2*MaxRho-(MaxRho-RhoPolarCoordinate[i*column+j])*(MaxRho-1)/(2*MaxRho);
            IndexTheta=360-((180-ThetaPolarCoordinate[i*column+j])*359/360);
            RoundingFunction(IndexRho,IndexRhoM[i*column+j]);
            RoundingFunction(IndexTheta,IndexThetaN[i*column+j]);
            
        }
    i=0;
    j=0;
    for (i=0;i<MaxRhoInt;i++)
        for (j=0;j<MaxTheta;j++)
                HoughTransformArray[i*360+j]=0;
    int n=column*row;
    i=0;
    j=0;
    for (i=0; i<n; i++)
            HoughTransformArray[IndexRhoM[i]*360+IndexThetaN[i]]=HoughTransformArray[IndexRhoM[i]*360+IndexThetaN[i]]+Gradient[i];
    
    delete []AnglePhi;
    delete []ThetaPolarCoordinate;
    delete []RhoPolarCoordinate;
    delete []IndexRhoM;
    delete []IndexThetaN;
}
 
void RoundingFunction(double RoundingVariable, int& ResultVariable)
{
    double IntegerPart=0;
    ResultVariable=0;
    if (modf(abs(RoundingVariable),&IntegerPart)<=0.5)
    {
        if (RoundingVariable>0)
            ResultVariable=floor(RoundingVariable);
        else
            ResultVariable=ceil(RoundingVariable);
    }
    else
    {
        if (RoundingVariable>0)
            ResultVariable=ceil(RoundingVariable);
        else
            ResultVariable=floor(RoundingVariable);
    }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru