[Solved] Why is My Program not Working [closed]


EUREKA!!!!!!

I finally came up with a working solution. No more errors. I’m calling it version 2.0.0
I’ve uploaded it online, and here’s the link

[version 2.0.0] http://mibpaste.com/3NADgl

All that’s left is to go to excel, and derive the final states of the door and be sure, that it’s working perfectly. Please take a look at my solution, and comment on any error that I may have made, or any way you think that I may optimize the code.I thank you for your help, it allowed me to redesign a working solution to the program. I’m sstarting to think that an Out-of-bounds error, might have caused my version 1 to crash, but the logic was flawed, anyway, so I’m scrapping it.

This is ths code:

/**********************************************************************************************
200 DOOR PROGRAM
Version 2.0.0
Author: Alafin OluwaTobi Department of Computer Science, Babcock University
New Additions: I redrew, the algorithm, to geneate a more logically viable solution,
I additionally, expanded the size of the array, to prevent a potential out of bounds error.
**********************************************************************************************/

//Hello. This a program,I've written to solve a fun mental problem.
//I'll include a full explanation of the problem, below.

/**********************************************************************************************
    *You are in a Hallway, filled with 200 doors . 
    *ALL the doors are initially closed . 
    *You walk along the corridor, *BACK* and *FORTH* reversing the state of every door which you stop at .
    *I.e if it is open, you close it .
    *If it is closed,  you open it .
    *On every nth trip, you stop at every nth door .
    *I.e on your first trip, you stop at every door. On your second trip every second door, On your third trip every third door, etc .

*Write a program to display the final state of the doors .
**********************************************************************************************/

/**********************************************************************************************
                                        SOLUTION
    *NOTE: on even trips, your coming back, while on odd trips your going forwards .
    *2 Imaginary doors, door 0 and 201, delimit the corridor .
    *On odd trips, the doors stopped at will be (0+n) doors .
    *I.e you will be counting forward, in (0+n) e.g say, n = 5: 5, 10, 15, 20, 25
    *On even trips, the doors stopped at will be (201-n) doors.
    *I.e you will be counting backwards in (201-n) say n = 4: 197, 193, 189, 185, 181
**********************************************************************************************/

#include <iostream>
#include <cstdlib>  //Including the basic libraries

bool HALLWAY [202] ; 
/*
    *Declaring the array, for the Hallway, as global in order to initialise all the elements at zero.
    *In addition,the size is set at 202 to make provision for the delimiting imaginary doors, 
    *This also serves to prevent potential out of bound errors, that may occur, in the use of thefor looplater on.
*/

inline void inverse (bool args []) ;
/*
    *Prototyping the function, which will be used to reverse the states of the door.
    *The function, has been declared as inline in order to allow faster compilation, and generate a faster executable program.
*/

using namespace std ;   //Using the standard namespace

int main ()
{
    inverse (HALLWAY) ; //Calling the inverse function, to act on the Hallway, reversing the doors.

    cout << "\t\t\t\t\t\t\t\t\t\t200 DOOR TABLE\n" ;

    for(int i = 1 ; i <= 200 ; i++ )
    //A loop to display the states of the doors.
    {
        if (HALLWAY [i] == 0) 
        //The if construct allows us to print out the state of the door as closed, when the corresponding element of the Array has a value of zero.
        {
            cout << "DOOR " << i << " is\tCLOSED" << endl ;
            for (int z = 0 ; z <= 300 ; z++)
                cout << "_" ;
            cout << "\n" ;
        }

        else if (HALLWAY [i] == 1)
        //The else if construct allows us to print out the state of the door as open, when the corresponding element of the Array has a value of one.
        {
            cout << "DOOR " << i << " is\tOPEN" << endl ;
            for (int z = 0 ; z <= 300 ; z++)
                cout << "_" ;
            cout << "\n" ;
        }
    } 

return 0 ; //Returns the value of zero, to show that the program executed properly
}

void inverse (bool args[])`

{

    for ( int n = 1; n <= 200 ; n++)

    //This loop, is to control the individual trips, i.e trip 1, 2, 3, etc..

    {

        if (n%2 == 0)
        //This if construct, is to ensure that on even numbers(i,e n%2 = 0), that you are coming down the hallway and counting backwards
    {
            for (int b = (201-n) ; b <= 200 && b >= 1 ; b -= n)
            /*
                *This loop, is for the doors that you stop at on your nth trip. 
                *The door is represented by the variable b.
                *Because you are coming back, b will be reducing proportionally, in n.
                *The Starting value for b on your nth trip, will be (201-n)
                * {b -= n} takes care of this. On the second turn for example. First value of b will be 199, 197, 195, 193, ..., 1
            */
                args [b] = !(args [b]) ;
                //This is the actual reversal operation, which reverses the state of the door.
       }

        else if (n%2 != 0)
        //This else if construct, is to ensure that on odd numbers(i.e n%2 != 0), that you are going up the hallway and counting forwards
        {
            for (int b = n ; b <= 200 && b >= 1 ; b += n)
            /*
                *This loop, is for the doors that you stop at on your nth trip. 
                *The door is represented by the variable b.
                *Because you are going forwards, b will be increasing proportionally, in n.
                *The starting value of b will be (0+n) whch is equal to n
                * {b += n} takes care of this. On the third turn for example. First value of b will be 3, 6, 9, 12, ...., 198
            */
                args [b] = !(args [b]) ;
                //This is the actual reversal operation, which reverses the state of the door
        }
    }
}

solved Why is My Program not Working [closed]