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

Программа генерирует постоянно одинаковые числа и не считает кол-во нулевых элементов

18.11.2020, 17:03. Показов 537. Ответов 16
Метки c++ (Все метки)

Author24 — интернет-сервис помощи студентам
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
// Вводим необходимые библиотеки
#include <iostream>
#include <clocale>
using namespace std;
int main()
{
    // Объявляем необходимые переменные
    int count = 0; // Счетчик для чисел, равных 0
    int i; // Счетчик массива
    int n; // Размерность массива
 
    // Вводим размерность массива
    cout << "Enter dimension of the array X: " << endl;
    cin >> n;
    
    // Объявляем массив
    int mas[n];
 
    // Вводим элементы массива Х
    srand(time(NULL));
    for(int i=0;i<n;i++) {
        mas[n]=random()%16;
    }
    for(int i=0; i<n; i++){
            cout << "    " << mas[n];
    }
 
    // Заменяем все отрицательные элементы их абсолютными значениями (по модулю)
    for (i=0; i<0; i++) {
        if (mas[i] < 0) {
            mas[i] = abs(mas[i]);}
        if (mas[i] = 0) {
            count += 1;}
    }
    
    // Выводим значение
    cout << endl;
    cout << "Number of zero elements =  " << count << endl;
    
    return 0;
}
в чем ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2020, 17:03
Ответы с готовыми решениями:

Random генерирует одинаковые числа
Здравствуйте! Подскажите пожалуйста... Мне надо в одной из лабораторных работ сделать так, чтобы...

Почему Random генерирует одинаковые числа?
Здравствуйте, столкнулся с задачей. Random random = new Random(); for (int i = 0; i &lt; count; i++)...

Почему Random генерирует одинаковые числа?
int Do = (int)this.numberDo.Value; //получаем количество символов введенное пользователем int mass...

Функция генерирует одинаковые случайные числа
Необходимо заполнить три массива произвольного размера случайными числами. Для заполнения массивов...

16
454 / 278 / 163
Регистрация: 17.04.2019
Сообщений: 1,637
18.11.2020, 17:06 2
konamityan, посмотрите на 32 строку вашего кода. Вас ничего не смущает?
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
18.11.2020, 17:09 3
Цитата Сообщение от konamityan Посмотреть сообщение
C++
1
mas[n]
- здесь i должно быть, а не n.

Добавлено через 1 минуту
Это в строках 22 и 25.
1
0 / 0 / 0
Регистрация: 12.10.2020
Сообщений: 202
18.11.2020, 17:10  [ТС] 4
ProgItEasy, извините, а что не так? ищет нулевые элементы и в 33 строке считает....
0
454 / 278 / 163
Регистрация: 17.04.2019
Сообщений: 1,637
18.11.2020, 17:11 5
konamityan, в данном случае вы обнуляете каждый элемент массива. Знак сравнения в С++ - это ==.
1
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
18.11.2020, 17:14 6
12345
Цитата Сообщение от konamityan Посмотреть сообщение
C++
1
2
if(mas[i] = 0)
    count += 1;
C++
1
2
if(mas[i] == 0)
    count++;
1
0 / 0 / 0
Регистрация: 12.10.2020
Сообщений: 202
18.11.2020, 17:25  [ТС] 7
FFPowerMan, спасибо
а можете, пожалуйста, подсказать как ограничить рандомные числа? Это не сказано в задании, но 1) выводятся огромные числа, 2) на определенном моменте они все выводятся почему-то нулями и при том не считаются
исходя из сказанного выше, еще вопрос: как сгенерировать хотя бы 1 ноль и проверить считает ли его программа?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.11.2020, 17:27 8
konamityan, при вводе размера с клавиатуры применяется не статический, а динамический массив:
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>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, count_nul=0;
    cout << "n="; cin >> n;
 
    int *a = new int[n];    
    
    for(int i = 0; i < n; i++) 
    {
        a[i]=rand()%16;
        if(a[i]==0) count_nul++;
        cout << a[i] << " ";
    }
    
    cout << "\nNumber of zero elements =  " << count_nul << "\n";
    
    delete[]a;
system("pause");
return 0;
}
0
0 / 0 / 0
Регистрация: 12.10.2020
Сообщений: 202
18.11.2020, 17:28  [ТС] 9
Yetty, я ничего не знаю об указателях... поэтому не понимаю Ваш код :с
0
2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000
18.11.2020, 17:40 10
В Вашей программе выход за пределы массива. Поэтому в массиве что попало. Изучайте С++ и привыкайте к новому иначе ничему не научитесь.
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.11.2020, 17:40 11
Цитата Сообщение от konamityan Посмотреть сообщение
я ничего не знаю
так учитесь

konamityan, это:
C++
1
int mas[n]; // объявление статического массива
размер статического массива по стандарту С++ должен быть известен на этапе компиляции.
то есть такая запись будет правильной:
C++
1
2
const int n=10;
int mas[n];
такая - нет:
C++
1
2
cin >> n;
int mas[n];
поэтому
Цитата Сообщение от Yetty Посмотреть сообщение
при вводе размера с клавиатуры применяется не статический, а динамический массив
C++
1
int *a = new int[n]; // объявление динамического массива
1
0 / 0 / 0
Регистрация: 12.10.2020
Сообщений: 202
18.11.2020, 17:48  [ТС] 12
Yetty, хорошо, спасибо, я почитаю об указателях и динамическом массиве

а не могли бы Вы сказать, как правильно добавить строку, где отрицательные элементы будут заменяться абсолютными их значениями? и как все же изменить ограничение, чтобы были числа хотя бы от -1000 до 1000? у меня постоянно высвечиваются ошибки о слишком большом аргументе для int rand()
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.11.2020, 17:57 13
Цитата Сообщение от konamityan Посмотреть сообщение
как правильно добавить строку, где отрицательные элементы будут заменяться абсолютными их значениями?
у Вас тоже в принципе правильно, но требуется подключение #include <cmath> (если у Вас работает без #include <cmath> - это не говорит о том что на другом компиляторе будет работать)

поэтому лучше без abs:
C++
1
if(a[i]<0) a[i]=-a[i];
генерация чисел от A до B: (подставляйте нужные Вам значения)
C++
1
rand()%(B-A+1) + A;
1
0 / 0 / 0
Регистрация: 12.10.2020
Сообщений: 202
18.11.2020, 19:55  [ТС] 14
Yetty, я знаю это
Цитата Сообщение от Yetty Посмотреть сообщение
1
rand()%(B-A+1) + A;
но, когда я добавляю это в свой код, то у меня перестают вообще выпадать 0, соответственно, счетчик постоянно "отдыхает"...
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.11.2020, 21:23 15
konamityan, я Вам сбросил рабочий код. вот в него и добавляйте.
0
0 / 0 / 0
Регистрация: 12.10.2020
Сообщений: 202
18.11.2020, 22:08  [ТС] 16
Yetty, я и добавляю в Ваш , спасибо Вам за помощь, не все получается
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.11.2020, 22:22 17
Цитата Сообщение от konamityan Посмотреть сообщение
я и добавляю в Ваш
вводить в заблуждение у Вас не очень получается
Цитата Сообщение от konamityan Посмотреть сообщение
когда я добавляю это в свой код

Цитата Сообщение от konamityan Посмотреть сообщение
не все получается
что там может не получаться ? вместо строки
Цитата Сообщение от Yetty Посмотреть сообщение
a[i]=rand()%16;
пишите
C++
1
a[i]=rand()%2001 - 1000;
Добавлено через 2 минуты
только не понимаю зачем это Вам, так Вы нулей можете и не дождаться
0
18.11.2020, 22:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2020, 22:22
Помогаю со студенческими работами здесь

Генератор случайных чисел генерирует одинаковые числа
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Функция заполнения генерирует одинаковые случайные числа
Помогите, пожалуйста, разобраться. Я написал функцию заполнения массива и вызываю ее при для...

Кол-во нулевых элементов в массиве
Помогите с кодом! ЗАДАНИЕ: посчитать кол во нулевых элементов в массиве по строкам! Зарание...

Неправильно считает кол-во элементов в массиве
Условие задачи: Вычислите сумму элементов, находящихся на пересечении текущей строки и двух...

Выдать на экран кол-во всех нулевых элементов и произведение положительных элементов, имеющих чётный индекс.
Помогите написать программу на Borland Pascal и создать алгоритм… плиз?? Создать числовой массив...

Программа не генерирует числа
Мне нужно написать курсовую работу - тема &quot;Устный счёт&quot;, пользователь должен считать примеры и...


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

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

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