- •Задание:
- •Задание:
- •Лабораторная работа 4 Переменные, типы данных и выражения
- •1. Идентификаторы
- •2. Типы данных
- •2.2 Вещественные числа
- •2.3 Преобразование типов в выражениях
- •2.4 Символьный тип
- •2.5 Символьные строки
- •2.6 Типы данных, определяемые пользователем
- •3. Вывод вещественных чисел на экран
- •4. Описания, константы и перечисления
- •4.1 Тип "Перечисление"
- •4.2 Расположение описаний констант и переменных в исходном тексте
- •5. Присваивание и выражения
- •5.1 Краткая форма записи операторов присваивания
- •5.2 Логические выражения и операторы
- •6. Сводка результатов
- •Лабораторная работа 5 Функции и процедурная абстракция
- •1. Назначение подпрограмм
- •2. Определение новых функций
- •3. Способы передачи параметров внутрь функций
- •3.1 Передача параметров по значению
- •3.2 Передача параметров по ссылке
- •4. Полиморфизм и перегрузка функций
- •5. Процедурная абстракция и "хороший" стиль программирования
- •6. Модульное программирование
- •Лабораторные работа 6 Текстовые файлы и потоки ввода/вывода
- •1. Потоки ввода/вывода
- •Создание потоков
- •1.2 Подключение и отключение потоков от файлов
- •2. Проверка ошибок выполнения файловых операций
- •3. Символьный ввод/вывод
- •3.1 Функция ввода "get(...)"
- •3.2 Функция вывода "put(...)"
- •3.3 Функция "putback(...)"
- •4. Проверка достижения конца файла при операциях ввода
- •4.1 Проверка конца файла с помощью функции "eof()"
- •5. Передача потоков функциям в качестве параметров
- •Лабораторные работа 7 Операторы ветвления и циклы
- •1. Логические значения, выражения и функции
- •2. Циклы "for", "while" и "do...While"
- •3. Множественное ветвление и оператор "switch"
- •4. Блоки и область видимости переменных
- •5. Замечание о вложенных циклах
- •6. Сводка результатов
- •Задание:
- •Лабораторные работа 8 Массивы и символьные строки
- •1. Назначение массивов
- •1.1 Объявление массивов
- •1.2 Использование элементов массивов в выражениях
- •2. Передача массивов в качестве параметров функций
- •3. Сортировка массивов
- •4. Двумерные массивы
- •5. Символьные строки
- •5.2 Объявление и инициализация символьных строк
- •5.3 Библиотечные функции для работы с символьными строками
- •5.4 Чтение символьных строк из потока ввода с помощью функции "getline(...)"
- •6. Сводка результатов
Задание:
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");
}
}
Вывод:
В результате выполнения работы научились:
Создавать новый проект в среде Codeblocks
Писать простейшие программы в среде Codeblocks.