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

Деление без откидывания дробной части - C++

Восстановить пароль Регистрация
 
Нубарик
 Аватар для Нубарик
4 / 4 / 1
Регистрация: 06.11.2010
Сообщений: 40
09.11.2010, 13:51     Деление без откидывания дробной части #1
привет обитателям форума.
у меня вот такая вот проблемка, задание простое но поделить не могу никак.
*****
Задан массив из 10 элементов(с клавиатуры или случайно ).
надо все его элементы поделить на первый.
*****
вот так вот кажется нормально, но при деление откидывает дробовую часть:
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
#include <vcl.h>
#pragma hdrstop
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <math.h>
 
using namespace std;
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main()
{
        const  n = 10;
        randomize ();
        int mas[n];
        float dil1,dil2,dil3,dil4,dil5,dil6,dil7,dil8,dil9,dil10;
        cout<<"\n masyv : \n";
        for(int i=0; i<n; i++)
        {
                mas[i]=random(101);
                cout<<mas[i]<<"\t";
         }
 
        dil1=mas[0]/mas[0];
        cout<<endl<<mas[0]<<"/"<<mas[0]<<" = "<<dil1<<endl;
 
        dil1=(mas[1])/(mas[0]);
        cout<<endl<<mas[1]<<"/"<<mas[0]<<" = "<<dil2<<endl;
 
        dil1=mas[2]/mas[0];
        cout<<endl<<mas[2]<<"/"<<mas[0]<<" = "<<dil3<<endl;
 
        dil1=mas[3]/mas[0];
        cout<<endl<<mas[3]<<"/"<<mas[0]<<" = "<<dil4<<endl;
 
        dil1=mas[4]/mas[0];
        cout<<endl<<mas[4]<<"/"<<mas[0]<<" = "<<dil5<<endl;
 
        dil1=mas[5]/mas[0];
        cout<<endl<<mas[5]<<"/"<<mas[0]<<" = "<<dil6<<endl;
 
        dil1=mas[6]/mas[0];
        cout<<endl<<mas[6]<<"/"<<mas[0]<<" = "<<dil7<<endl;
 
        dil1=mas[7]/mas[0];
        cout<<endl<<mas[7]<<"/"<<mas[0]<<" = "<<dil8<<endl;
 
        dil1=mas[8]/mas[0];
        cout<<endl<<mas[8]<<"/"<<mas[0]<<" = "<<dil9<<endl;
 
        dil1=mas[9]/mas[0];
        cout<<endl<<mas[9]<<"/"<<mas[0]<<" = "<<dil10<<endl;
 
 
        cout<<endl;
        system("pause");
        return 0;
}
помогите пзл а то повешусь на шнуре от мышки =))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 13:51     Деление без откидывания дробной части
Посмотрите здесь:

C++ Рассмотрение дробной части чисел
C++ Выделение дробной части из числа
C++ Отброс дробной части
C++ Погрешность дробной части
C++ Округление дробной части
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
09.11.2010, 13:58     Деление без откидывания дробной части #2
Нубарик, массив у вас типа int. Вот и происходит целочисленное деление. В выводе тоже косяки: находите всё время dil1, а выводите dil2,dil3,dil4 - они вообще чему равны?

Добавлено через 2 минуты
И вообще, используйте циклы)
AemClock
6 / 6 / 1
Регистрация: 04.06.2010
Сообщений: 19
09.11.2010, 13:58     Деление без откидывания дробной части #3
Надо привести при делении к дробному типу вот так:
C++
1
dil1=((float)mas[1])/(mas[0])
Также былобы удобно использовать массив dil, а не 10 переменных.
Нубарик
 Аватар для Нубарик
4 / 4 / 1
Регистрация: 06.11.2010
Сообщений: 40
09.11.2010, 13:58  [ТС]     Деление без откидывания дробной части #4
я уже менял на float, кучу всего перепробовал, а ничего не меняется.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
09.11.2010, 14:02     Деление без откидывания дробной части #5
Вроде так:
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
#include <cstdlib>
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    const  n = 10;
    double mas[n];
    double dil; // или массив, если надо запоминать
 
    cout<<"Massiv: \n";
    for(int i=0; i<n; i++)
    {
        mas[i]=rand()%100+1;
        cout<<mas[i]<<"\t";
    }
 
    for(int i=0; i<n; i++)
    {
        dil=mas[i]/mas[0];
        cout<<endl<<mas[i]<<"/"<<mas[0];
        cout<<" = "<<dil<<endl;
    }
 
    cout<<endl;
    system("pause");
    return 0;
}
Нубарик
 Аватар для Нубарик
4 / 4 / 1
Регистрация: 06.11.2010
Сообщений: 40
09.11.2010, 14:09  [ТС]     Деление без откидывания дробной части #6
большое спасибо поменял на
C++
1
dil1=((float)mas[1])/(mas[0]);
оно заработало, я пробовал похоже делать, но (float) писал уже после дроби (
ещё ток увидел, что в каждой строчке у меня было dil1.

Добавлено через 3 минуты
dihlofos

сейчас попробую Ваш вариант, спасиб за помощь.
Yandex
Объявления
09.11.2010, 14:09     Деление без откидывания дробной части
Ответ Создать тему
Опции темы

Текущее время: 01:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru