пчелка, здесь все вам рады, и вашу самокритику читать мы не хотим. Лучше вместо "я плохая" ответить "я переделала так:" и привести улучшенный вариант. Я изначально писал на паскале, С/С++ изучал по книжке Старуструпа; её и советую. Что касается комментов - они нужны даже в маленькой программе (хотя бы краткое "to do"). Тем более если вы хотите чтобы в вашем коде разобрался другой человек. Про намётки и первые шаги можно было написать там же.
слово friend обозначает декларацию "друга" класса. Он будет иметь доступ к секциям private и protected, но являться внешним по отношению к классу (у функций не будет this). Пример:
Код:

class A {
public:
A(int a) : _a(a) {}
friend void friend_foo(const A&);
void foo(const A&);
friend struct B;
private:
int _a;
};
void outer_foo(const A&);
void friend_foo(const A& class_A)
{
// доступ к this->_a:
// неизвестная переменная _a
_a = class_A._a + 1; // ошибка, т.к. в friend_foo не передаётся this
}
void A::foo(const A& class_A)
{
// доступ к this->_a:
_a = class_A._a + 1; // всё в порядке
}
void outer_foo(const A& class_A);
{
// доступ к this->_a и class_A._a:
// переменная _a не определена
// нет доступа к private a._a
_a = class_A._a + 1; // ошибка
// вообще outer_foo отличается от friend_foo только тем, что friend_foo имеет права доступа к class_A
}
// структура B, описанная как friend, может из своим методов обращаться к скрытым членам A.
istream& operator>>(istream&, Tomat&) - это переопределение оператора сдвига для класса потока информации istream с аргументом Tomat&, который вернёт потом istream&. Вызов оператора может выглядеть так: cin >> mat; При этом так как результат сдвига - тоже istream, можно сделать так: cin >> mat >> c1; то есть прочитать 2 матрицы сподряд в одной строке кода.
То же самое с оператором <<. В стандартной библиотеке опеределены операторы сдвига потока для всех стандартных типов аргументов, и для новых типов рекомендуется доопределять. А сделать этот оператор другом нужно для доступа к скрытым членам аргумента. Хотя при продуманном дизайне класса можно обойтись и без друзей. Тогда меньше гемора при вносе изменений во внутреннюю структуру класса.