0

I was going through walkthoroughs as a practice for my final and i came across this question. Although i was able to do it correctly, I was not able to get the presence of a colon in one of the lines(line 35):

#include <iostream>
using namespace std;
class base{
    int *x;
    int sz;
public:
    base(int cnt) { x = new int [sz = cnt];
                    seed(2); }
    ~base(){ if(x) delete [] x; }
    void seed(int val){ for(int i = 0; i < sz; i++)
                            x[i] = val + i; }
    void seed(const int v[]){ for(int i = 0; i < sz; i++)
                            x[i] = v[i]; }
    int term(int n) const{
        int *p = new int [sz];
        int i, tmp;
        for(i = 0; i < sz; i++)
            p[i] = x[i];
        tmp = p[0];
        for(int k = 0; k < n;  k++){
            for(i = 1; i < sz; i++){
                tmp += p[i];
                p[i - 1] = p[i];
                }
            p[i - 1] = tmp;
            tmp = p[0];
            }
        delete [] p;
        return tmp;
        }
    };

ostream &operator<<(ostream &os, const base &x){
    for (int i = 0; i < 7; i++)
        os << (i > 0 ? ", " : " " ) << x.term(i); //<- colon in question
    return os;
    }

class deranged: public base{
public:
    deranged(int n, int m) : base(2) {
        int sval[2];
        sval[0] = n; sval[1] = m;
        seed(sval);
        }
    };

int main(){
    base x(3);
    deranged fib(4, 5);
    cout << x << '\n' << fib << '\n';
    return 0;
    }

Could somebody please enlighten me in what that line means. I complete my walkthrough by ignoring the " " following the colon and it was correct too.

4
Contributors
6
Replies
8
Views
8 Years
Discussion Span
Last Post by jbennet
2

In your case, if "i" is larger than zero, you send a ", " to the stream, otherwise you send a blank. So, ":" works like "else".

Votes + Comments
Very helpful And clear
1

Indeed, this statement is like a an if statment its equivelent would look something like this.

string myIF(int a){
    if(a > 0){
        return ", ";
    }else{
        return " ";
    }
}

Hope that makes sense
Chris

Votes + Comments
Superbly Explained!!
0

In your case, if "i" is larger than zero, you send a ", " to the stream, otherwise you send a blank. So, ":" works like "else".

Indeed, this statement is like a an if statment its equivelent would look something like this.

string myIF(int a){
    if(a > 0){
        return ", ";
    }else{
        return " ";
    }
}

Hope that makes sense
Chris

That is as clear as it could be!! Thanks guys!!

0

Mark as solved?

sorry forgot to mark it! thanks for reminding!

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.