Member 12680725 Ответов: 1

Как мне ответить на это это и как изменить его в правильные коды


Используя массивы, предложите пользователю ввести, сколько случайных чисел нужно сгенерировать в диапазоне от -10 до 10. Допустимый вход - от 1-50. Выведите на экран все введенные отрицательные числа, вычислите и выведите сумму всех введенных отрицательных чисел. Кроме того, отобразите все введенные положительные числа, вычислите и выведите произведение всех введенных положительных чисел.

Что я уже пробовал:

        do{
            cout<<"No. of random numbers (-10-10): "<<endl;
            cin>>howmany;
                if(howmany<1 || howmany >50)
                cout<<"INVALID INPUT"<<endl;
        }while (howmany<1 || howmany>50);

    cout<<endl<<endl
    <<"The "<<howmany<<" random numbers from 1-50 are :"<<endl;

srand(time(0));

    for (ctr=0,negativectr=0,positivectr=0; ctr<howmany;>     {
        randnum[ctr]= rand() % 50-1;
        cout<<randnum[ctr]<<"\t";

        if (randnum[ctr] % 2 ==0)
            {
                positive[positivectr]=randnum [ctr];
                positivectr++;
            }

        else
            {
                negative[negativectr]=randnum [ctr];
                negativectr--;
            }

{
    cout<<endl<<endl<<"There are "<<positivectr<<" positive numbers generated"<<endl;
for(ctr=0;ctr<positivectr;ctr++);>
}
    cout<<positive[ctr]<<"\t";
}

cout<<endl;

cout<<"There are "<<negativectr<<" negative numbers generated"<<endl;
for(ctr=0;ctr<negativectr;ctr++)>
{
    cout<<negative[ctr]<<"\t";
}

Patrice T

И в чем же проблема в этом коде ?

1 Ответов

Рейтинг:
2

OriginalGriff

Начните с того, что посмотрите на свой код генерации случайных чисел: генерирует ли он числа в требуемом диапазоне?
Проще говоря: нет.
Ваш код генерирует числа от 0 до 48 включительно, а не значения от -10 до 10 включительно. Помните, что " % "- это оператор модуля: он возвращает остаток от деления, поэтому x % 10 всегда будет возвращать значения ниже 10, то есть от" 0 "до" 9 " включительно.

Попробуйте изменить его на что-то вроде:

eachRandomNumber = (rand() % 21) - 10;

"21" существует, поэтому он генерирует значения от 0 до 20 включительно, а затем вычитает 10, чтобы компенсировать значения в вашем диапазоне от -10 до 10.

А затем используйте отладчик, чтобы выяснить, что еще происходит.