2 / 2 / 0
Регистрация: 23.12.2014
Сообщений: 105
1

Как записать выражение, чтобы не отбрасывалась дробная часть?

07.07.2015, 08:54. Показов 1400. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.Есть такой код:
C++
1
2
3
double s = 14.5;
int m = 4;
double b=s/m
При вычислении выражения отбрасывается дробная часть. Знаю, что при делении на конкретное число, можно записать b = s/4.0. А как быть когда в выражении только переменные?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2015, 08:54
Ответы с готовыми решениями:

Возможно ли сделать так, чтобы считалась дробная часть?
@echo off echo vvedite primer(pvz: 2+2) set /p prim= set /a otvet=%prim% echo = %otvet%например...

Как записать код программы, чтобы часть запроса распознавало как переменную, а не как текст?
"Название таблицы"-это переменная как записать код программы чтобы её распознавало как переменную,...

Определить, превышает ли умноженная на 10 дробная часть числа его целую часть
Определить превышает ли умноженная на 10 дробная часть числа m/n целую часть m/n . Если...

Отбросить дробную часть числа, если дробная часть равна нулю
Всем доброго времени суток, каким образом можно устроить проверку равна ли дробная часть числа...

13
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
07.07.2015, 09:00 2
В таком виде как у тебя, ничего не отбрасывается. Вывод проверяй. Как ты определяешь, что дробной части нет?
0
Неэпический
17848 / 10616 / 2049
Регистрация: 27.09.2012
Сообщений: 26,686
Записей в блоге: 1
07.07.2015, 09:01 3
При вычислении выражения отбрасывается дробная часть.
Врете ведь
http://ideone.com/y8HHX7
0
2 / 2 / 0
Регистрация: 23.12.2014
Сообщений: 105
07.07.2015, 09:38  [ТС] 4
nmcf, Вот полная программа
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
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double **a;
    int m,n;
    cout << "Введите m: ";
    cin >> m;
    cout << "Введите n: ";
    cin >> n;
    a = new double *[m];
    double *b1 = new double[m];
    double *b2 = new double[m];
    for (int i=0; i<m; i++)
         a[i] = new double [n];
    for (int i=0; i<m; i++)
        for (int j=0; j<n; j++)
        {
            cout << "Введите a["<<i+1<<","<<j+1<<"]: ";
            cin >> a[i][j];
        }
    for (int i=0; i<m; i++)
    {
        double p=1,s=0;
        for (int j=0; j<n; j++)
        {
            p*=a[i][j];
            s+=a[i][j];
        }
        b1[i]=p;
        b2[i]=s/m;
    }
    int min = b2[0];
    for (int i=0; i<m; i++)
            if (b2[i]<min) min = b2[i];
    cout << "Вектор произведений: " << endl;
    for (int i=0; i<m; i++)
        cout << b1[i] << " ";
    cout << endl << "Наименьшее среднее арифметическое: "<<min;
    for (int i=0; i<m; i++)
        delete [] a[i];
    delete []a;
    delete []b1;
    delete []b2;
}
В общем считаю среднее арифметическое элементов строк матрицы и записываю его в массив b2. Далее в нем ищу минимум. Выводятся все время целые числа.
0
Заблокирован
07.07.2015, 09:50 5
Цитата Сообщение от rny Посмотреть сообщение
А как быть когда в выражении только переменные?
C++
1
double b=1.0*s/m;
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.07.2015, 09:58 6
Цитата Сообщение от IrineK Посмотреть сообщение
C++
1
double b=1.0*s/m;
здесь это (1.0*) вроде не нужно, выражение вычисляется слева направо, s типа double, m автоматически приведётся к типу double.
0
Эксперт С++
3224 / 1751 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
07.07.2015, 09:58 7
Цитата Сообщение от rny Посмотреть сообщение
int min = b2[0];
############
1
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.07.2015, 10:00 8
Цитата Сообщение от Mr.X Посмотреть сообщение
C++
1
int min = b2[0];
а слона-томы и не заметили.
0
2 / 2 / 0
Регистрация: 23.12.2014
Сообщений: 105
07.07.2015, 10:07  [ТС] 9
Строку
C++
1
int min = b2[0]
пробовал править. Вывел весь вектор b2. Все равно все числа целые. Вариант с 1.0 тоже не работает...
0
7538 / 6399 / 2918
Регистрация: 14.04.2014
Сообщений: 27,865
07.07.2015, 12:44 10
Так сделал?
C++
1
double min = b2[0];
0
2 / 2 / 0
Регистрация: 23.12.2014
Сообщений: 105
07.07.2015, 16:30  [ТС] 11
nmcf, Да, именно так.
0
Неэпический
17848 / 10616 / 2049
Регистрация: 27.09.2012
Сообщений: 26,686
Записей в блоге: 1
07.07.2015, 16:33 12
Цитата Сообщение от rny Посмотреть сообщение
Да, именно так.
http://ideone.com/pLS8nd
0
2 / 2 / 0
Регистрация: 23.12.2014
Сообщений: 105
07.07.2015, 17:31  [ТС] 13
Теперь разобрался. Программа работает неверно, если вводить целые числа. Но почему?
0
140 / 72 / 26
Регистрация: 29.06.2015
Сообщений: 186
08.07.2015, 12:18 14
Цитата Сообщение от rny Посмотреть сообщение
Программа работает неверно, если вводить целые числа. Но почему?
потому что любые операции с int приводят к int :
int +-*/ int = int
чтоб от операции с int получить другой тип (double, float) нужно явно указать что вам нужно
(double)int + int = double

например:
int a=5, b=6;
если напишем
double c = a+b; то получим int, который запишется в double, а нам надо double, поетому пишем:
double c = (double)a + b;
double + int даст нам double
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2015, 12:18
Помогаю со студенческими работами здесь

Разделить дробное число на 2 части: целая часть числа и его дробная часть
Пользователь вводит с клавиатуры сумму в валюте (дробное число). Вывести по отдельности количество...

Ввести число х, выяснить что большеЖ целая часть х, или его Дробная часть, уу
Ввести число х, выяснить что больше: целая часть х, или его Дробная часть, умноженная на 10. Если...

Выяснить что больше, целая часть числа x, или его дробная часть, умноженная на 10
1)Ввести число x, выяснить что больше: целая часть числа x, или его дробная часть, умноженная на...

Ввести число х, выяснить что больше: целая часть х, или его дробная часть, умноженная на 10
Ввести число х, выяснить что больше: целая часть х, или его Дробная часть, умноженная на 10. Если...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru