Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТ...docx
Скачиваний:
12
Добавлен:
21.09.2019
Размер:
695.51 Кб
Скачать

Задание:

1. Изучите краткое руководство по Codeblocks в Приложении. Создайте

проект с именем "AgeCalculator". Создайте исходный файл с именем

AgeCalculator.cpp и наберите в нем исходный текст программы 1. Сохраните

файл на диске и добавьте его в проект. Соберите проект и запустите

программу на выполнение.

Возможно, вы встретитесь со следующими проблемами:

1) В окне программы вместо русских букв выводятся какие-то странные

символы.

Эта проблема объясняется различием таблиц кодировок Windows и

DOS. В этих таблицах русские буквы расположены в разных местах.

Консольные программы при работе используют кодировку DOS, а

текстовый редактор Visual C++ – кодировку Windows. Поэтому вам

придется добавить преобразование строк с русскими буквами из

кодировки Windows в кодировку DOS.

Для этого включите в программу, после файла iostream.h, файл

windows.h с описанием функций операционной системы Windows:

#include <windows.h>

Перед функцией main() создайте новую функцию с именем rus_str(),

которая будет выполнять необходимое преобразование с помощью

специальной функции Windows:

char* rus_str( char* str )

{

static char buf[10][256];

static int idx = 0;

idx++;

if ( idx == 10 )

idx = 0;

CharToOem(str, buf[idx]);

return buf[idx];

}

Во всех строках программы, где на экран выдаются символьные строки с

русскими буквами, укажите преобразование этих строк с помощью новой

функции, например:

cout << rus_str ("Введите текущий год и нажмите ENTER.\n");

2) После завершения работы окно программы закрывается и не удается

увидеть результаты.

Для исправления этого недостатка проще всего предусмотреть в конце

программы ввод произвольного символа. Пока пользователь не нажмет

какую-нибудь символьную клавишу и потом Enter, окно программы будет

оставаться на экране. Для этого потребуется завести символьную

переменную (строку с описанием этой переменной расположите после

строки с описанием целочисленных переменных):

char wait_char;

Перед последней строкой с закрывающей фигурной скобкой "}" добавьте

оператор для ввода символа с клавиатуры:

cin >> wait_char;

Сравните результаты работы своей программы с примером из лекции.

Поэкспериментируйте над улучшением или изменением формата вывода на

экран.

#include <iostream>

#include <windows.h>

using namespace std;

char* rus( char* str )

{

static char buf[10][256];

static int idx = 0;

idx++;

if ( idx == 10 )

idx = 0;

CharToOem(str, buf[idx]);

return buf[idx];

}

int main()

{

int year_now, age_now, another_year, another_age;

cout <<rus("Введите текущий год и нажмите ENTER.\n");

cin >> year_now;

cout << rus("Введите свой возраст (в годах).\n");

cin >> age_now;

cout << rus("Введите год, для которого вы хотите узнать свой возраст.\n");

cin >> another_year;

another_age = another_year - (year_now - age_now);

if (another_age >= 0)

{

cout << "B " << another_year << rus("году вам будет");

cout << another_age << "\n";

}

else

cout << "B " << another_year << rus("вы еще не родились!\n");

}

2. Модифицируйте программу 1, чтобы при превышении переменной

"another_age" значения 150 на экран выводилось сообщение:

Извините, но вы вряд ли доживете до [year] года!

Проверьте работу своей программы для нескольких разных лет.

#include <iostream>

#include <windows.h>

using namespace std;

char* rus( char* str )

{

static char buf[10][256];

static int idx = 0;

idx++;

if ( idx == 10 )

idx = 0;

CharToOem(str, buf[idx]);

return buf[idx];

}

int main()

{

int year_now, age_now, another_year, another_age;

cout <<rus("Введите текущий год и нажмите ENTER.\n");

cin >> year_now;

cout << rus("Введите свой возраст (в годах).\n");

cin >> age_now;

cout << rus("Введите год, для которого вы хотите узнать свой возраст.\n");

cin >> another_year;

another_age = another_year - (year_now - age_now);

if (another_age >= 0)

{

cout << "B " << another_year << rus("году вам будет");

cout << another_age << "\n";

}

if (another_age<0)

cout << "B " << another_year << rus("вы еще не родились!\n");

if(another_age>150)

cout<<rus("Извините, но вы вряд ли доживете до ")<<another_year<<rus(" года!");

}

3. Измените программу из упр.2 так, чтобы в ней учитывались и годы, и

месяцы. На экран программа должна выводить следующие сообщения:

Введите текущий год и нажмите ENTER.

2000

Введите текущий месяц (число от 1 до 12).

10

Введите свой возраст (в годах).

25

Введите месяц своего рождения (число от 1 до 12).

5

Введите год, для которого вы хотите узнать свой возраст.

2006

Введите месяц этого года.

6

Ваш возраст в 6/2006: 31 год и 1 месяц.

Программа должна выдавать корректные сообщения для единственного и

множественного числа лет и месяцев, т.е. должна выводить на экран "25 лет и 1

месяц", но "24 года и 2 месяца".

#include <iostream>

#include <windows.h>

using namespace std;

char* rus_str( char* str )

{

static char buf[10][256];

static int idx = 0;

idx++;

if ( idx == 10 )

idx = 0;

CharToOem(str, buf[idx]);

return buf[idx];

}

int main()

{

int year_now, age_now, another_year, another_age,month_now,month_age,another_month;

cout <<rus_str ("Введите текущий год и нажмите ENTER.\n");

cin >> year_now;

cout<<rus_str("Введите нынешний месяц(от 1 до 12).\n");

cin>>month_now;

cout <<rus_str ("Введите свой возраст (в годах).\n");

cin >> age_now;

cout<<rus_str("Введите месяц своего рождения\n");

cin>>month_age;

cout <<rus_str ("Введите год, для которого вы хотите узнать свой возраст.\n");

cin >> another_year;

another_age = another_year - (year_now - age_now);

another_month=month_now-month_age;

if (another_age >= 0)

{

cout << "B " << another_year <<rus_str(" году вам будет ");

cout << another_age <<another_month<< "\n";

}

if (another_age>=150)

{

cout<<rus_str("Вряд ли вы доживете до")<<another_year<<another_month <<rus_str("года");

}

if(another_age<0)

{

cout << "B " << another_year<<another_month<<rus_str (" вы еще не родились!\n");

}

}

Вывод:

В результате выполнения работы научились:

  1. Создавать новый проект в среде Codeblocks

  2. Писать простейшие программы в среде Codeblocks.