
C/C++
Программирование на c++
Программирование на c++.Товарищи знатоки, что здесь не так? почему такой результат?


Например, vlad[3] в 13 строке - это ссылка на несуществующий элемент массива vlad. Точно неизвестно, что находится в этой ячейке памяти. Вероятно, начало следующего массива. Но это не точно.
Массив birthdays заполнен совсем не так, как тебе кажется. Посмотри из отладчика его содержимое.
Вероятно, birthdays надо объявить так:
int* birthdays[5] = { vlad, … };
Массив birthdays заполнен совсем не так, как тебе кажется. Посмотри из отладчика его содержимое.
Вероятно, birthdays надо объявить так:
int* birthdays[5] = { vlad, … };
#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");
}
#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");
}
Бекболат Агадилов
Функция age не всегда правильно работает. Это баг или фича?
В чём смысл программы?
Похожие вопросы
- Программирование на C++
- Программирование на C++
- Помоги написать лабу по программированию на c++
- Помогите решить задачу по программированию на C++
- Программирование на C. Помогите бездарю
- На каком языке программирования написан C (Си)?
- Программирование на C++
- Помогите с программированием на C++
- Задание по программированию язык C/СИ
- Программирование на c#.