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

Переменные в функциях - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритм задержки http://www.cyberforum.ru/cpp-beginners/thread773228.html
Добрый вечер. Хочу попробовать динамически выводить текст в консоли. Какой алгоритм создания задержки? Не через функцию Sleep().
C++ удаление элемента списка есть структура typedef struct StudentInfo //создание нового типа запись для хранения информационных полей элемента списка { int id; //количество книг в картотеке char surname; // char name; //фамилия автора книги char secondname; int year; //год издания char faculty; http://www.cyberforum.ru/cpp-beginners/thread773217.html
C++ Не подсчитывает русские символы
Не пойму в чём загвостка; логически вроде всё верно: #include <iostream> #include <fstream> #include <cstdlib> #include <stdexcept> int main() { try { std::locale::global(std::locale(""));
Код стандартных функций C++
Добрый вечер. Подскажите пожалуйста как просмотреть код библиотечной функции? Интересуют функции cin i cout.
C++ Вычислить произведение всех столбцов массива, у которых первый элемент больше элементов расположенных на глав- ной и побочной диагонали http://www.cyberforum.ru/cpp-beginners/thread773191.html
Здравствуйте! Помогите пожалуйста. Нужно написать алгоритм на C++. >>Вычислить произведение всех столбцов массива, у которых первый элемент больше элементов расположенных на глав- ной и побочной диагонали.<< Есть код, но, возможно, с недочётами. #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std;
C++ арифметические операции с данымы типа "время" Есть переменная типа string a1="071355". Необходимо перевести значение переменной в формат времени, проделать математическую операцию, например увеличить на 1 минуту и 13 секунд и вернуть в первичное значение. Я в с++ очень мало знаю поэтому посоветуйте как сделать или куда копать ато не могу найти. подробнее

Показать сообщение отдельно
Genn55
360 / 207 / 39
Регистрация: 26.12.2012
Сообщений: 694

Переменные в функциях - C++

28.01.2013, 02:18. Просмотров 292. Ответов 2
Метки (Все метки)

Разбираясь с передачей и приемом функциями различных типов данных, столкнулся с такой проблемой.Написал 2 похожие функции и стал объявлять разные типы данных.С целыми числами все нормально,а с дробными возникла проблема.При объявлении переменных типа float в этом коде
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
#include <iostream>
#include <iomanip>
float OkrD (float);
 
using namespace std;
 
int main()
{
float D;
 
 
cout << "Vvedite chislo" << endl;
cin >> D;
D = OkrD (D);
 cout << setw (15) << D << endl;
return 0;
}
float OkrD (float D)
{
 float d;
 
 if (D==0.38)
 d = 0.38;
 if ((D >= 0.39)&&(D < 0.43))
 d = 0.40;
 if ((D>=0.43)&&(D<0.47))
 d=0.45;
 if ((D>=0.47)&&(D <=0.51))
 d=0.50;
 if ((D>0.51)&&(D<=0.54))
 d=0.53;
 if ((D>0.54)&&(D<=0.57))
 d=0.56;
return d;
}

программа работает не верно.Ввожу 0.38,получаю 4.68376е-039,ввожу 0.39 тоже самое.0.4 и больше все правильно. По моему для таких чисел типа float вполне достаточно,а получается что нет.Объявляю переменные, в этом же коде,типом double все работает верно.
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
#include <iostream>
#include <iomanip>
double OkrD (double);
 
using namespace std;
 
int main()
{
double D;
 
cout << "Vvedite chislo" << endl;
cin >> D;
D = OkrD (D);
 cout << setw (15)<< D << endl;
return 0;
}
double OkrD (double D)
{
 double d;
 if (D==0.38)
 d = 0.38;
 if ((D >= 0.39)&&(D < 0.43))
 d = 0.40;
 if ((D>=0.43)&&(D<0.47))
 d=0.45;
 if ((D>=0.47)&&(D <=0.51))
 d=0.50;
 if ((D>0.51)&&(D<=0.54))
 d=0.53;
 if ((D>0.54)&&(D<=0.57))
 d=0.56;
return d;
}
в этом коде

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
#include <iostream>
#include <iomanip>
#include <math.h>
float  PrisS (int);
float const pi = 3.14159;
using namespace std;
 
int main()
{
int  counter,i,j;
float d;
 
 counter = 1;
 i =  counter;
 j =  counter;
cout << setw (15) << "Si" << setw (15) << "Sj" <<  setw (15) << "di" << endl << endl << endl;
 
for (i = 1,d =PrisS ( i); i <=6; i ++,d ++)
for (j = 1,d =PrisS ( j); j <=6; j ++,d ++)
cout << setw (15) << PrisS ( i) << setw (15) <<PrisS ( j)
     << setw (15) << 2*(sqrt ((PrisS ( i))/pi)) <<endl;
 
return 0;
}
float  PrisS (int counter)
{
    float d1, S;
    if (counter == 1)
    d1 = 0.38;
    if (counter == 2)
    d1 = 0.39;
    if (counter ==3)
    d1 = 0.45;
    if (counter == 4)
    d1 = 0.56;
    if (counter == 5)
    d1 = 0.95;
    if (counter == 6)
    d1 = 1.12;
    return S = ((d1/2)* (d1/2))*pi;
}

при таких же переменных и типе float все работает верно хотя числа получаются меньше чем в первом случае.Почему так происходит не могу понять.
Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru