how to solve this using Arrays?

Viewed 84

I'm new to programming is there a way to solve this:

Take 10 integer inputs from user and print the following

  1. number of positive numbers.
  2. number of negative numbers.
  3. number of odd numbers.
  4. number of even numbers
#include <iostream>
using namespace std;

int main()
{
    int numArray[10];

    cout<<"Enter Number :";
    for(int i=0; i<10; i++)
    {
        cin>>numArray[i];
    }

    for(int i=0; i<numArray[i]; i++)
    {
        if(numArray[i]>0)
        {
            cout<<"Positive Number "<<numArray[i] <<endl;
        }
        else
        {
            cout<<"Negative Number "<<numArray[i]<<endl;
        }

        if(numArray[i]%2==0)
        {
            cout<<"Odd number "<<numArray[i]<<endl;
        }
        else 
        {
            cout<<"even number "<<numArray[i]<<endl;  
        }
    
    }

    return 0;  
}
2 Answers

You could do this without arrays but I'm just gonna stick with your original intent for clarity.

#include <iostream>
#include <array>
using namespace std;

int main()
{
    array<int, 10> numArray; //an array of ints, size 10. this is CPP style array, it is 'safer' than C-style array. (someone correct me)

    //get your 10 inputs.
    cout << "Enter Number :";
    for(size_t i = 0; i < numArray.size(); i++)
    {
        cin >> numArray[i];
    }

    int positive_count = 0;
    int negative_count = 0;
    int even_count = 0;
    int odd_count = 0;
    
    //loop thru your 10 inputs, increment counters accordingly.
    for(size_t i = 0; i < numArray.size(); i++)
    {
        
        if (numArray[i] < 0)
        {
            negative_count += 1;
        }
        if (numArray[i] > 0)
        {
            positive_count += 1;
        }

        if (numArray[i] % 2 == 0)
        {
            even_count += 1;
        }
        else 
        {
            odd_count += 1;
        }
    
    }
    
    cout << "Positive Number " << positive_count << endl;
    cout << "Negative Number " << negative_count << endl;
    
    cout << "even number " << even_count << endl;  
    cout << "Odd number " << odd_count << endl;
    
    return 0;
   
}

You could do it in input loop:

int positives = 0, zeros = 0, odds = 0;
int negatives = 0, evens = 0;
for(size_t i = 0; i < numArray.size(); i++)
{
    cin >> numArray[i];

    // increment number of odds
    odds += numArray[i] & 0x1;
    // odds += numArray[i] % 2;

    // increment number of positives
    positives += (numArray[i] > 0);
    // positives += (numArray[i] > 0 ? 1 : 0);

    // increment zeros
    zeros += !(numArray[i] | 0);
}

evens = 10 - odds;
negatives = 10 - zeros - positives;

cout << "Positive count " << positives << endl;
cout << "Negative Number " << negatives << endl;

cout << "Even number " << evens << endl;  
cout << "Odd number " << odds << endl;

and here is newbie friendly version:

int positives = 0, zeros = 0, odds = 0;
int negatives = 0, evens = 0;
for(size_t i = 0; i < numArray.size(); i++)
{
    cin >> numArray[i];

    // increment number of odds
    if (numArray[i] % 2 == 1)
        odds++;

    if (numArra[i] == 0)
        zeros++;
    else if (numArray[i] > 0)
        positives++;
}

evens = 10 - odds;
negatives = 10 - zeros - positives;

cout << "Positives " << positives << '\n';
cout << "Negatives " << negatives << '\n';

cout << "Evens " << evens << '\n';  
cout << "Odds " << odds << '\n';
Related