Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vovavasile
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 25
#1

В чем ошибка использования rand() в программе - C++

27.10.2016, 21:36. Просмотров 187. Ответов 12
Метки нет (Все метки)

Не могу понять, почему рандомит масив из 75 нулей, а не из диапазона чисел от 16 до 53
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
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdlib>
#include<ctime>
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    system("color F0");
    float A1[75], A2[75];
    int counter = 0, a = rand();
    srand( time( NULL) ) ;
    for (int i = 0; i < 75; i++)
    {
        A1[i] = 16 + rand() % 53;
        if (A1[i] > 25.8 && A1[i] < 34.7)
            A2[counter] = A1[i];
    }
    for (int i = 0; i < 75; i++)
    {
        printf("%d ", A1[i]);
    }
    printf("\n\n");
    for (int i = 0; i <= counter; i++)
        printf("%d ", A2[i]);
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2016, 21:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чем ошибка использования rand() в программе (C++):

Особенности использования функции rand() в С++ - C++
Не пойму почему Visual Studio ругается когда я создал класс и описывая его хочу использовать функцию rand() подключая при этом и stdlib.h и...

в чем ошибка в программе? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void main() { int sum = 0, temp = 0, n; ...

Подскажите в чем ошибка в моей программе (рекурсия) - C++
Программа копирует строку t в конец строки s: вот код: #include&lt;iostream&gt; using namespace std; int i=0; string fn_strcat(string...

SQL в программе нужно отчеты сделать не знаю в чем ошибка - C++
готовая программа осталось сделать отчеты на форме 6 уже все прописано и работало приехал домой исправил пару ошибок перестало выручайте...

Rand() где ошибка? - C++
Здравствуйте.Нужно взять случайное число от 1 до 4.Но если я &lt;float&gt; изменю на &lt;int&gt; выводится ошибка int rand2(int x) { // int...

Использования C# dll в С++ программе - C++
Здравствуйте, скажите пожалуйста можно ли быстро &quot;прикрутить&quot; C# dll в программе написаной на С++ так чтоб я смог на С# вызывать нужные...

12
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
27.10.2016, 21:40 #2
vovavasile, printf( "%f ", A1[ i ] );
0
vovavasile
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 25
27.10.2016, 21:50  [ТС] #3
rikimaru2013, Спасибо, но почему выводит только лиш 1 значение, а не все которые удовлетворяют условие, и после комы лиш ноли(52.0, 27.0 )?
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
27.10.2016, 21:54 #4
Цитата Сообщение от vovavasile Посмотреть сообщение
и после комы лиш ноли(52.0, 27.0 )?
А что там должно быть, если вы заполняете массив целыми числами?
Покажите исправленный код.
0
vovavasile
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 25
27.10.2016, 21:56  [ТС] #5
castaway, даже при float массиве #define _CRT_SECURE_NO_WARNINGS
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
#include<iostream>
#include<cstdlib>
#include<ctime>
 
int main()
{
    setlocale(LC_CTYPE, "rus");
    system("color F0");
    float A1[75], A2[75], a = rand();
    int counter = 0;
    srand ( time( NULL)) ;
    for (int i = 0; i < 75; i++)
    {
        A1[i] = 16 + rand() % 37;
        if (A1[i] > 25.8 && A1[i] < 34.7)
            A2[counter] = A1[i];
    }
    for (int i = 0; i < 75; i++)
    {
        printf("%.1f ", A1[i]);
    }
    printf("\n\n");
    for (int i = 0; i <= counter; i++)
        printf("%.1f ", A2[i]);
    system("pause");
}
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
27.10.2016, 22:00 #6
Цитата Сообщение от vovavasile Посмотреть сообщение
даже при float массиве
Я прекрасно вижу что у вас массив типа float, но заполняете вы его целыми числами. Что вы ожидаете увидеть после точки? Слово "привет"? Послание с другой планеты?
0
vovavasile
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 25
27.10.2016, 22:07  [ТС] #7
castaway, Глупый вопрос но где конкретно нужно поменять тип данных чтоб массив задавал float?
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
27.10.2016, 22:09 #8
Цитата Сообщение от vovavasile Посмотреть сообщение
но почему выводит только лиш 1 значение,
Потому что вы в своей программе все найденные значения пихаете в A2[counter] и counter всегда равен 0. Откуда может взяться более одного значения, если counter у вас нигде никогда не меняется?
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
27.10.2016, 22:10 #9
Цитата Сообщение от vovavasile Посмотреть сообщение
castaway, Глупый вопрос но где конкретно нужно поменять тип данных чтоб массив задавал float?
Согласен. Он настолько глупый что я его даже не понял.
0
vovavasile
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 25
27.10.2016, 22:15  [ТС] #10
castaway, TheCalligrapher, Спасибо, огромное, всего лиш counter++, но почему же после комы лишь нули?
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
27.10.2016, 22:25 #11
Цитата Сообщение от vovavasile Посмотреть сообщение
но почему же после комы лишь нули?
А что там может быть, если вы генерируете только целые числа???
0
vovavasile
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 25
27.10.2016, 22:27  [ТС] #12
TheCalligrapher, Так что же поменять что б были числа с плавающей точкой?
0
nmcf
5538 / 4848 / 1644
Регистрация: 14.04.2014
Сообщений: 19,662
28.10.2016, 08:12 #13
Цитата Сообщение от vovavasile Посмотреть сообщение
Так что же поменять что б были числа с плавающей точкой?
Используй uniform_real_distribution, а не древний rand().
0
28.10.2016, 08:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2016, 08:12
Привет! Вот еще темы с ответами:

В чем преимущество использования Pimpl? - C++
Есть две реализации одной лабораторной. Первая с закрытым наследованием, вторая с использованием Pimpl. Делают одно и тоже. Объясните...

Ошибка: [C++ Error] mk.cpp(20): E2268 Call to undefined function 'rand' - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; void main() { double x, y, s, p,V;

Нюансы использования оператора запятая или что такое UB и с чем его едят - C++
Почему студия и ideone выдают разные значения для a и b? в студии выходит a = 10 , b = 10 в ideone a = 20, b =10 #include...

в классе создаётся объект оператором new, как его удалить после использования в основной программе? delete в вызывающей функции не вариант! - C++
Собсно //Это типа служебного класса. (Внимание! В оригинальном коде он вложен в класс xx, но я этого не стал делать, дабы не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru