C/C++

Программирование на c++

Программирование на c++.Товарищи знатоки, что здесь не так? почему такой результат?
Например, vlad[3] в 13 строке - это ссылка на несуществующий элемент массива vlad. Точно неизвестно, что находится в этой ячейке памяти. Вероятно, начало следующего массива. Но это не точно.
Массив birthdays заполнен совсем не так, как тебе кажется. Посмотри из отладчика его содержимое.
Вероятно, birthdays надо объявить так:
int* birthdays[5] = { vlad, … };
Bek Jainakov
Bek Jainakov
58 065
Лучший ответ
#include <iostream>
#include <string>
using namespace std;
struct Birthday {
int d, m, y;
Birthday() : d(14), m(2), y(1918) {}
Birthday(int d, int m, int y) : d(d), m(m), y(y) {}
int age(const Birthday& b)const {
auto n = b.y - y;
if (b.m < m) --n;
if (b.d < d) --n;
return n;
}
string short_date()const {
string str = d < 10 ? "0"s : ""s;
str += to_string(d);
str += m < 10 ? ".0"s : "."s;
str += to_string(m) + "."s + to_string(y);
return str;
}
friend ostream& operator<<(ostream& out, const Birthday& b) {
return out << b.short_date();
}
};
int main() {
Birthday current{ 24, 10, 2021 };
Birthday vlad{ 13, 8, 2004 };
Birthday dima{ 22, 10, 2003 };
Birthday vasya{ 10, 6, 2004 };
Birthday egor{ 12, 2, 2004 };
Birthday ilya{ 9, 7, 2004 };
system("chcp 1251 > nul");
const string bd = "День рожденья ";
cout << "Сегодня: " << current << '\n'
<< "1) " << bd << "Влада: " << vlad << " ему " << vlad.age(current) << " лет\n"
<< "2) " << bd << "Димы: " << dima << " ему " << dima.age(current) << " лет\n"
<< "3) " << bd << "Васи: " << vasya << " ему " << vasya.age(current) << " лет\n"
<< "4) " << bd << "Егора: " << egor << " ему " << egor.age(current) << " лет\n"
<< "5) " << bd << "Ильи: " << ilya << " ему " << ilya.age(current) << " лет\n";
system("pause > nul");
}
Виталий Чубо
Виталий Чубо
84 542
Бекболат Агадилов Функция age не всегда правильно работает. Это баг или фича?
В чём смысл программы?
MR
Maxsim Rogalev
1 347