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

Заполнение массива вещественными числами с двумя знаками после запятой - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.71
машаК
0 / 0 / 0
Регистрация: 22.08.2010
Сообщений: 3
22.08.2010, 23:48     Заполнение массива вещественными числами с двумя знаками после запятой #1
Здравствуйте! Я только начала работать в С++ и не знаю как заполнить одномерный массив из 10 элементов вещественными числами в диапазоне от 1 до 10 с двумя знаками после запятой.
Проблема именно в количестве знаков после запятой. Как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2010, 23:48     Заполнение массива вещественными числами с двумя знаками после запятой
Посмотрите здесь:

Как вывести квадратный корень с числа с 4-мя знаками после запятой C++
C++ Вывести двумерный массив с 3 знаками после запятой
C++ Рандомные дроби с 2-3 знаками после запятой
C++ Вычислить сумму ряда, состоящего из N слагаемых, и вывести результат с M знаками после запятой
C++ Разработать класс MyMath, обеспечивающий выполнение операций сравнения над двумя вещественными числами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
22.08.2010, 23:58     Заполнение массива вещественными числами с двумя знаками после запятой #2
Ну вообще особого типа для чисел с двумя знаками после запятой нет. Используйте float.
Rockedit
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1752 / 558 / 9
Регистрация: 22.12.2009
Сообщений: 1,544
23.08.2010, 00:01     Заполнение массива вещественными числами с двумя знаками после запятой #3
Цитата Сообщение от silent_1991 Посмотреть сообщение
Ну вообще особого типа для чисел с двумя знаками после запятой нет. Используйте float.
Еще можно использовать double
Это так. Или же создавайте свой тип. Если нужно именно 2 знака после запятой, то нужно приводить к такому виду самостоятельно.
машаК
0 / 0 / 0
Регистрация: 22.08.2010
Сообщений: 3
23.08.2010, 00:02  [ТС]     Заполнение массива вещественными числами с двумя знаками после запятой #4
Проблема моей программе в том, что не все числа с двумя знаками:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <conio.h> 
#include<stdlib.h>
#include<time.h>// 
using namespace std;
void main() {
const int size=10;
    float mas[size];
    int i;
    srand(time(NULL));
    for(i=0;i<size;i++)
 
    {mas[i]=(rand()%901+100)/100;
 
cout<<mas[i];
       
    }
        }
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.08.2010, 00:05     Заполнение массива вещественными числами с двумя знаками после запятой #5
Rockedit,
Есть, но он всё-таки для большей точности десятичной части, а нам-то необходимо всего 2 знака, так что float экономичнее.
Andrew_Lvov
Эксперт C++
 Аватар для Andrew_Lvov
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
23.08.2010, 00:07     Заполнение массива вещественными числами с двумя знаками после запятой #6
Варианта два:
1. Держите с максимальной точностью, при выводе обрезая до двух знаков:
C
1
printf( "%.2f", f )
или
C++
1
std::cout << std::fixed << std::setprecision(2) << std::endl;
Или как здесь: http://www.daniweb.com/forums/thread24590.html
2. Умножайте на 100, отрезайте остаток, потом назад.
alex_x_x
23.08.2010, 00:08
  #7

Не по теме:

silent_1991, double эффективней обрабатывается, поэтому использование float сомнительно в целом

машаК
0 / 0 / 0
Регистрация: 22.08.2010
Сообщений: 3
23.08.2010, 00:12  [ТС]     Заполнение массива вещественными числами с двумя знаками после запятой #8
Вот что я сделала, но не каждий раз генератор генерует то что надо!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <conio.h>
#include<stdlib.h>
#include<time.h>//
using namespace std;
void main() {
const int size=10;
float k=1;
    float mas[size];
    int i;
    srand(time(NULL));
    for(i=0;i<size;i++)
{k=rand()%901+100;
    mas[i]=k/100;
cout<<mas[i]<<"\n";
       
    }}
 Комментарий модератора 
Используйте соответствующие теги форматирования кода.
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
23.08.2010, 00:13     Заполнение массива вещественными числами с двумя знаками после запятой #9
машаК, а то, что вам советуют для кого писано? Andrew_Lvov всё, что нужно накатал, прочитайте уж его пост.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.08.2010, 00:16     Заполнение массива вещественными числами с двумя знаками после запятой #10
alex_x_x,
Я, если честно, всегда использую double)))
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.08.2010, 00:16     Заполнение массива вещественными числами с двумя знаками после запятой #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
int main(){
    const int SIZE = 10;
    double arr[SIZE];
    
    srand(time(NULL));
    for ( int i = 0; i < SIZE; ++i )
        arr[i] = static_cast<double>(rand() % 901 + 100) / 100.0;
    
    for ( int i = 0; i < SIZE; ++i )
        std::cout << std::fixed << std::setprecision(2) << arr[i] << ' ';
    std::cout << std::endl;
    
    return 0;
}
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
23.08.2010, 00:17     Заполнение массива вещественными числами с двумя знаками после запятой #12
C
1
(rand()%1000+100)/100.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.08.2010, 00:24     Заполнение массива вещественными числами с двумя знаками после запятой #13
alex_x_x, так при rand() = 901 передоз получится
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
23.08.2010, 00:35     Заполнение массива вещественными числами с двумя знаками после запятой #14
easybudda, если считать 10.99 правильным числом - то не случится
Цитата Сообщение от машаК Посмотреть сообщение
от 1 до 10 с двумя знаками после запятой
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2010, 00:37     Заполнение массива вещественными числами с двумя знаками после запятой
Еще ссылки по теме:

Разработать класс MyMath, обеспечивающий выполнение операций сравнения над двумя вещественными числами C++
C++ Класс MyMath обеспечивающий выполнение операций сравнения над двумя вещественными числами
C++ Вывести значение пераменной с шестью знаками после запятой

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
23.08.2010, 00:37     Заполнение массива вещественными числами с двумя знаками после запятой #15
alex_x_x,
Не, не канает, до 10 значит не больше 10
Yandex
Объявления
23.08.2010, 00:37     Заполнение массива вещественными числами с двумя знаками после запятой
Ответ Создать тему
Опции темы

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