Выполнение программы в пошаговом режиме
Отобразите в окне Watch имена всехпеременных, используемых в программе.
Выполните пошаговое выполнение программы (F10) для следующих исходных данных:
1 2 –3
1 2 1
1 2 3
0 2 3
0 0 2
0 0 0
Определите сами, какой ответ должна выдавать программа для каждого из этих наборов. Внимательно посмотрите, какие строчки выполняются в том или ином случае, какие значения принимают переменные. Убедитесь, что программа выполняет именно те действия, которые она должна выполнять для текущего набора данных, и выдает именно тот ответ, который должен быть.
Задание для самостоятельного выполнения
Создайте новый проект под своей фамилией с индексом 2 (например Ivanov2). Помните, что имя программы должно быть записано латинскими буквами.
Напишите программу для решения системы двух линейных уравнений:
Используйте формулы:
Программа должна выдавать один из трех вариантов ответов:
Если , то и
иначе если , то “бесконечное множество решений”,
иначе “решений нет”.
(Правда, следует отметить, что во втором случае для системы типа
должен выдаваться ответ “нет решений”. )
Организуйте повторение программы.
Отобразите в окне наблюдения (Watch) все переменные, используемые в программе, и выполните программу в пошаговом режиме для следующих наборов данных:
1) 2 3 –5 2) 2 -2 3 3) 2 -2 3
3 -2 12 4 -4 6 4 -4 7
Определите, что должна выдавать программа в каждом из этих случаев и проверьте правильность работы программы.
Продемонстрируйте результаты своей работы преподавателю.
Часть 2
Ветвление в программе с помощью оператора switch
В качестве примера используем программу, которая подсчитывает во входном потоке количество русских букв 'а', 'у', 'о' и количество остальных символов.
Напечатайте текст нижеследующей программы.
#include<iostream> //!!! Потоковый ввод/вывод
#include <math.h>
#include <conio.h>
#include <windows.h>
using namespace std;
//!!! Используем стандартное пространство имён
int main()
{
if(SetConsoleCP(1251)==0)
//проверка правильности установки кодировки символов для ввода
{
cerr<<"Fialed to set codepage!"<<endl;
/* если не удалось установить кодовую страницу, вывод сообщения об ошибке */
}
if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода
{
cerr<<"Failed to set OUTPUT page!"<<endl;
}
cout<<"Введите строку: "<<endl;
char ch=0;
// счетчики, которые будут хранить количество букв:
int counta = 0, countu = 0, counto = 0, count = 0;
while((ch=cin.get())!='\n')
{
switch (ch)
{
case 'а':
case 'А': counta++; break;
case 'у':
case 'У': countu++; break;
case 'о':
case 'О': counto++; break;
//подсчитываются только видимые символы:
default: if (ch>32 || ch < 0) count++;
}
}
cout<<"Количество букв \"а\" = " << counta << endl;
cout<<"Количество букв \"у\" = " << countu << endl;
cout<<"Количество букв \"о\" = " << counto << endl;
cout<<"Количество остальных символов = " << count << endl;
_getch();
/* Используйте вызов этой функции при запуске программы клавишей <F5>, чтобы в режиме отладки не закрывалось окно, в котором отображаютcя результаты работы программы*/
return 0;
}
В этой программе оператор switch повторяется командой while. При каждой проверке условия цикла из входного потока считывается один символ функцией get(). Прочитанный символ сравнивается с символом '\n' , который соответствует нажатию клавиши <Enter>. Если нажата клавиша <Enter>, ввод заканчивается и программа выдает результат на экран.
Выполните программу в пошаговом режиме.
Задание для самостоятельного выполнения
Напишите программу, которая считывает с клавиатуры число типа double, затем символ, обозначающий знак операции (+ - * / % ^) и второе число типа double. С помощью оператора switch организуйте проверку символа и выполнение соответствующей операции для заданных чисел (если это возможно). Знак ^ используйте для обозначения возведения в степень. Возведение в степень в C выполняется функцией pow(x,y), которая возводит x в степень y. Для того, чтобы использовать эту функцию, не забудьте вставить в начало файла #include <math.h>
Организуйте повторение всей программы до нажатия клавиши <Esc>.
Продемонстрируйте результаты своей работы преподавателю.
Лабораторная работа №2
Тема: “Программы, использующие команды повторения (циклы). Рекуррентные соотношения“
Часть 1