Struct doesn't print with cout

Viewed 99

I'm trying to print the structure in an array whose int prejetih member is highest.

#include <iostream>
using namespace std;

struct Tekma {
    int prejetih;
};

Tekma najvec_kosev(Tekma tekme[]) {
    int maksi = 0, index = 0;
    for (int i = 0;i < 2;i++) {
        if (maksi < tekme[i].prejetih) {
            index = i;
            maksi = tekme[i].prejetih;
        }
    }
    return tekme[index];
}

void vpis(Tekma tekme[]) {
    for (int i = 0;i < 2;i++)
        cin >> tekme[i].prejetih;
}

int main() {
    Tekma tekme[2];
    vpis(tekme);
    cout << najvec_kosev(tekme);
}

The compiler reports

C++ no operator matches these operands 
operand types are: std::ostream << Tekma

over cout << najvec_kosev(tekme);

1 Answers

Here using a solution with std::vector and fixing your cout problem:

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

struct Tekma {
    int prejetih;
};

Tekma najvec_kosev(vector<Tekma>& tekme) {
    Tekma lowest = tekme[0]
    for(auto& t : tekme) {
        if(lowest.prejetih < t.prejetih) {
            lowest = t;
        }
    }
    return lowest ;
}

void vpis(vector<Tekma>& tekme) {
    int input;
    while(true) {
        cin >> input;
        // Check if the input is valid else quit the loop.
        if(input == valid) {
            Tekma newStruct = {input};
            tekme.push(newStruct);
        }
        else {
            // Stop the loop
            break;
        }
    }
}

int main() {
    vector<Tekma> tekme;
    vpis(tekme);
    cout << najvec_kosev(tekme).prejetih; // This fixes your error.
}
Related