Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

fizz buzz

Name: Anonymous 2012-05-28 0:33


#include <vector>
#include <string>
#include <sstream>
#include <iostream>

class FizzBuzz
{
private:
    std::vector<std::string> container;
    static const int Mod3=0x01;
    static const int Mod5=0x02;
    int upto;
public:
    template<typename T> static inline std::string Stringify(T&);
    FizzBuzz(int upto)
    {this->upto=upto;}
    void Print();
private:
    inline void Process(unsigned int&, int&);
    std::vector<std::string> * Check();
};

template<typename T>
inline std::string FizzBuzz::Stringify(T& parm)
{
    std::stringstream out;
    out << parm;
    return out.str();
}

inline void FizzBuzz::Process(unsigned int& c, int& i)
{
    if(!(i%3))
        c |= Mod3;
    if(!(i%5))
        c |= Mod5;
}

std::vector<std::string> * FizzBuzz::Check()
{
    unsigned int cond;
    for(int i=0; i<upto; ++i, cond=0x0)
    {
        Process(cond, i);
        switch(cond)
        {
        case (Mod3 ^ Mod5):
            container.push_back("FizzBuzz");
            break;
        case Mod3:
            container.push_back("Fizz");
            break;
        case Mod5:
            container.push_back("Buzz");
            break;
        case (Mod3 & Mod5):
            container.push_back(Stringify(i));
            break;
        }
    }
    return &this->container;
}

void FizzBuzz::Print()
{
    std::vector<std::string> * results=Check(); //execute

    //print results
    for(auto iter=results->begin();
        iter!=results->end(); ++iter)
    {
        std::cout << *iter << std::endl;
    }
}

int main()
{
    FizzBuzz * demo=new FizzBuzz(100);
    demo->Print();
    delete demo;
   
    return EXIT_SUCCESS;
}

Name: Anonymous 2012-05-28 7:04


#include <stdio.h>

int main(void)
{
    int fizz = FIZZ;
    int buzz = BUZZ;
    int i;

    for (i = 1; i <= 100; i++)
        switch (i == fizz | (i == buzz) << 1) {
        case 0:
            printf("%d\n", i);
            break;
        case 1:
            puts("fizz");
            fizz += FIZZ;
            break;
        case 2:
            puts("buzz");
            buzz += BUZZ;
            break;
        case 3:
            puts("fizz-buzz");
            fizz += FIZZ;
            buzz += BUZZ;
            break;
        default:
            ;
        }
    return 0;
}

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List