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

Заполнение массива вещественными элементами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.58
Demonhunterus
1 / 1 / 0
Регистрация: 20.09.2010
Сообщений: 36
20.09.2010, 15:11     Заполнение массива вещественными элементами #1
Доброго времени суток всем форумчанам.
Столкнулся с вот такой вот задачей :в одномерном массиве,состоящем из n вещественных элементов,вычислить количество элементов массива,больших Х и вычислить время работы алгоритма.
Вроде бы с задачей справился,но когда справился понял,что у меня заполняется массив не вещественным,а целым типом,поиски в гугле успехом не увенчались,помогите ввести вещественный тип элементов массива при случайном заполнении вместо целочисленного.Заранее благодарен.
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
#include <iostream>
#include <conio.h>
#include <time.h>
#include <stdio.h>
using namespace std;
int main()
{
 srand(time(NULL));
 //Создание одномерного массива с размерностью заданной пользователем
 int n,X;
 cout<<"Vvedite razmer odnomernogo massiva - ";
 cin>>n;
 int *p=new int[n];
 //Заполним массив случайными значениями
 for(int i=0; i<n; i++)
 {
  p[i]=rand()%100;
  cout<<p[i]<<" ";
 } 
 cout << endl;
 //Вводим значение Х
 cout<<"Vvedite zna4enie 'X': ";
 cin>>X;
  clock_t time;
  time = clock();
 //Ищем и выводим значения,большие Х
    int count=0;
    cout<<"Naideno zna4eniy: "<<endl;
    for(int i=0;i<n;i++)
    {
        if(p[i]>X)
        {
            cout<<p[i]<<endl;
            count++;
        }
    }
 //Выводим количество элементов,больших Х
    cout<<"Koli4estvo elementov: "<<count<<endl;
 time = clock() - time;
 printf("%f", (double)time/CLOCKS_PER_SEC); //время выполнения "каких-то действий"
 cout << endl;
 for (int i=0; i<n; i++)
 {
    system("PAUSE");
    return EXIT_SUCCESS;
}
 //Не забывать освобождать память после того как массив уже не нужен
 delete [] p;
 cout<<" ";
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2010, 15:11     Заполнение массива вещественными элементами
Посмотрите здесь:

Заполнение массива вещественными числами с двумя знаками после запятой C++
C++ Произведение элементов массива, расположенных между максимальным и минимальным элементами массива
C++ Заполнение множеств элементами массива.
C++ Заполнение главной диагонали матрицы максимальными элементами
Как правильно реализовать заполнение двумерного массива элементами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IchMors
96 / 92 / 4
Регистрация: 16.05.2010
Сообщений: 307
20.09.2010, 15:59     Заполнение массива вещественными элементами #2
Случайные числа
Demonhunterus
1 / 1 / 0
Регистрация: 20.09.2010
Сообщений: 36
20.09.2010, 16:15  [ТС]     Заполнение массива вещественными элементами #3
Хм.Прошел по ссылке.Почитал.Но не понял,как это можно применить к моему циклу
C++
1
2
3
4
5
 for(int i=0; i<n; i++)
 {
  p[i]=rand()%100;
  cout<<p[i]<<" ";
 }
P.S.dobule)rand()%100 --- ругается.
srand(time(NULL));
cout << rand() % 100; --- тоже не работает.Если srand(time(NULL)); перед фор-ом,то ничего не меняется,если после - компилятор ругается,если в цикле - одно и то же значение будет записываться и выводиться.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
20.09.2010, 16:32     Заполнение массива вещественными элементами #4
stdlib.h и time.h подключили?
Demonhunterus
1 / 1 / 0
Регистрация: 20.09.2010
Сообщений: 36
20.09.2010, 17:11  [ТС]     Заполнение массива вещественными элементами #5
time.h был подключен,stdlib.h подключил,но всё то же,что было в P.S. указано осталось без изменений
обновлено:
p[i]=(double)(rand()%10000)/10; --- компилируется,но значения всё равно только целые.
Ткните носом,где искать ошибку,или кусочек кода покажите,пожалуйста,как это в принципе можно реализовать,если можно...

Добавлено через 16 минут
Ага.
p[i]=(double)(rand()%10000)/10;
18 C:\Dev-Cpp\LABA1cpp.cpp [Warning] converting to `int' from `double' --- вот почему значения всё равно только целые.Вопрос: где и что нужно задать,чтоб не было конвертации в int из double?
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,945
20.09.2010, 17:20     Заполнение массива вещественными элементами #6
C++
1
double *p=new double[n];
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.09.2010, 17:45     Заполнение массива вещественными элементами #7
Цитата Сообщение от KuKu Посмотреть сообщение
C++
1
double *p=new double[n];
мало того,
C++
1
2
for ( int i = 0; i < n; ++i )
  p[i] = static_cast<double>rand() / rand();
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,945
20.09.2010, 17:53     Заполнение массива вещественными элементами #8
а что это значит ?)
Demonhunterus
1 / 1 / 0
Регистрация: 20.09.2010
Сообщений: 36
20.09.2010, 18:06  [ТС]     Заполнение массива вещественными элементами #9
C++
1
2
3
4
5
6
double *p=new double[n]; 
 for(int i=0; i<n; i++)
 {
  p[i]=(double)(rand()%10000)/100;
  cout<<p[i]<<" ";
 }
--- подошло,работает,благодарю!

C++
1
2
for ( int i = 0; i < n; ++i )
  p[i] = static_cast<double>rand() / rand();
--- а вот это попытался применить - компилятор начал ругаться:
C:\Dev-Cpp\LABA1cpp.cpp In function `int main()':
17 C:\Dev-Cpp\LABA1cpp.cpp expected `(' before "rand"
17 C:\Dev-Cpp\LABA1cpp.cpp expected `)' before ';' token
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.09.2010, 18:33     Заполнение массива вещественными элементами #10
Цитата Сообщение от Demonhunterus Посмотреть сообщение
а вот это попытался применить - компилятор начал ругаться
ну да, поспешил малость... вот так должно работать:
C++
1
p[i] = static_cast<double>(rand()) / rand();
Demonhunterus
1 / 1 / 0
Регистрация: 20.09.2010
Сообщений: 36
20.09.2010, 18:52  [ТС]     Заполнение массива вещественными элементами #11
easybudda,
KuKu,
Огромное спасибо вам,ребята.Помогли.Во всем разобрался,всё работает
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.09.2010, 18:57     Заполнение массива вещественными элементами #12
Цитата Сообщение от KuKu Посмотреть сообщение
а что это значит ?
static_cast<type_name>(another_type_value) что значит? приведение к типу в С++ - примерно то же, что в С (type_name)another_type_value
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,945
20.09.2010, 19:01     Заполнение массива вещественными элементами #13
(type_name)another_type_value
а такая конструкция разве в с++ не работает или в ней что то есть нехорошее ?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
20.09.2010, 19:11     Заполнение массива вещественными элементами #14
Цитата Сообщение от KuKu Посмотреть сообщение
а такая конструкция разве в с++ не работает или в ней что то есть нехорошее ?
Работает, но в разных книжках (на вскидку только Дейтлов помню - в первый раз у них увидел) настойчиво рекомендуют в С++ вот таким макаром типы приводить. Читал и расплывчатые заумные объяснения, чем оно лучше, но нифига не понял, решил как факт принять А было вроде про это уже на форуме - поищите...
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.09.2010, 09:33     Заполнение массива вещественными элементами #15
Цитата Сообщение от easybudda Посмотреть сообщение
Читал и расплывчатые заумные объяснения, чем оно лучше, но нифига не понял
Demonhunterus
1 / 1 / 0
Регистрация: 20.09.2010
Сообщений: 36
25.09.2010, 17:31  [ТС]     Заполнение массива вещественными элементами #16
C++
1
 p[i] = static_cast<double>(rand()) / rand();
--- как это изменить,чтобы массив заполнялся не только положительными,но и отрицательными числами? Помогите
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
25.09.2010, 17:36     Заполнение массива вещественными элементами #17
Цитата Сообщение от Demonhunterus Посмотреть сообщение
как это изменить,чтобы массив заполнялся не только положительными,но и отрицательными числами?
C++
1
p[i] = static_cast<double>(rand() - rand()) / rand();
Demonhunterus
1 / 1 / 0
Регистрация: 20.09.2010
Сообщений: 36
25.09.2010, 17:48  [ТС]     Заполнение массива вещественными элементами #18
Хех ))) Так просто...Спасибо!
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
25.09.2010, 18:08     Заполнение массива вещественными элементами #19
Цитата Сообщение от easybudda Посмотреть сообщение
Работает, но в разных книжках (на вскидку только Дейтлов помню - в первый раз у них увидел) настойчиво рекомендуют в С++ вот таким макаром типы приводить
новые способы приведения разграничивают безопасные, полиморфные и опасные приведения, в этом пожалуй есть смысл
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2010, 19:14     Заполнение массива вещественными элементами
Еще ссылки по теме:

C++ Вывести на экран два массива, элементами первого являются элементы, меньшие заданного значения, элементами второго - большие заданного значения
Заполнение одного массива элементами другого C++
C++ Образовать из матрицы 2 массива с положительными элементами и отрицательными элементами по возрастанию

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

Или воспользуйтесь поиском по форуму:
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.09.2010, 19:14     Заполнение массива вещественными элементами #20
Цитата Сообщение от KuKu Посмотреть сообщение
а такая конструкция разве в с++ не работает или в ней что то есть нехорошее ?
Работает, она фактически сначала пытается сделать приведение с помощью static_cast'а, если не получается, то используется самый небозопасный каст - reinterpret_cast. Подробнее здесь.
Yandex
Объявления
25.09.2010, 19:14     Заполнение массива вещественными элементами
Ответ Создать тему
Опции темы

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