Начало работы в среде «Microsoft Visual Studio 2010»

Выполнить: Зайдите в меню «ПУСК» на панели инструментов и из списка «Все программы» выберите пункт «Microsoft Visual Studio 2010» и в следующем выпадающем меню – пункт «Microsoft Visual Studio 2010» (см. рис.1). После этого выйдет окно Microsoft Visual Studio 2010, отображенное на рис.2.

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Рис. 1. Открытие программы Microsoft Visual Studio 2010

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Рис. 2. Окно приложения Microsoft Visual Studio 2010

В открывшемся окне в меню «File» выберите команду «New Project…» (см. рис. 3).

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Рис. 3. Создание нового проекта

В появившемся диалоговом окне на панели «Resent templates» выберите пункт «Visual C++», на среднем поле выбрать Win32 Console Application и в поле ввода Name напечатайте имя файла, например «Proba», нажмите клавишу “OK” (см. рис.4). Далее в следующей появившейся форме выбираем подпункт Application Settings и отмечаем радиокнопку Console application и чек-бокс кнопку Empty project (см. рис.5)

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Рис. 4. Окно New Project

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Рис. 5. Настройка приложения

На панели Solution Explorer выделяем левой кнопкой Sourse Files, затем щелкнув правой кнопкой в контексном меню выбираем команду Add, затем New Item…(см. рис. 6.). В окне Add New Item отмечаем С++ File(.cpp) и заполняем поле Name (см. рис. 7.)

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Рис. 6. Панель Solution Explorer.

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Рис. 7. Окно Add New Item

В появившемся окне редактора печатаем текст программы. Первая программа: сложение двух целых чисел (см. рис. 8).

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Рис 8. Программа вычисления суммы двух целых чисел

Во время набора внизу в окне «Errors list» появляется список сообщений об ошибках, рядом с ошибкой пояснение на английском языке, какого рода ошибка (см. рис. 9).

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Рис. 9. Сообщения об ошибках компиляции

Существует 2 вида ошибок: ошибки «errors» и предупреждения «warnings» (см. рис. 9). Ошибки типа «errors» указывают на явные ошибки, без исправления которых не будет создан исполняемый файл. Ошибки типа «warnings» не препятствуют созданию исполняемого файла, но также должны быть внимательно изучены, так как они могут указывать на логические ошибки программиста. Если в программе есть ошибки, подведите курсор мыши к строке с сообщением об ошибке и дважды щелкните левую кнопку мыши. В верхнем окне курсор встанет на строку, содержащую эту ошибку.

После того как набрали текст программы в окне редактора С++,нужно отправить программу на компиляцию. Войдите в меню «Debug» и запустите пункт «Start debugging F5» или щелкните левой кнопкой мыши на кнопке Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru на панели инструментов. После устранения всех ошибок откроется консольное окно, которое предложит ввести исходные данные input number a= и input number b= после ввода которых, в окне выведется результат (см. рис. 10).

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru Рис. 10. Консольное окно вывода результатов вычислений

Рассмотрим подробно набранную в рабочем окне программу. В программу включены комментарии. Символы «//» открывают комментарий на одну строку. Если комментарий состоит из нескольких строк, можно расположить его между символами «/*» и «*/». Комментарии не обрабатываются компилятором и служат для пояснений пользователю.

Каждая программа должна содержать функцию main. Левая фигурная скобка отмечает начало тела main. В строке int a, b, c; происходит объявлением переменных. Символы a, b и c являются именами переменных.

Переменная – это область в памяти компьютера, где может храниться некоторое значение для использования его в программе. Данное объявление определяет, что переменные a, b, c имеют тип данных int; это значит, что эти переменные всегда будут содержать целые значения, т.е. целые числа, такие как, например, 7, -11, 0, 31, 914. Переменные должны объявляться с указанием имени и типа данных в любом месте программы, но раньше, чем они будут использованы в программе. Для объявления переменных, используются следующие типы данных:

Тип Размер в байтах Диапазон значений
char От –128 до 127 – символьный тип
unsigned char От 0 до 256 – без знаковый символьный тип
short От –32768 до 32767 короткое целое число
unsigned short От 0 до 65535 без знаковое короткое целое число
int От –2147483648 до 2147483647 – целое число
unsigned int От 0 до 4294967295 - без знаковое целое число
long Совпадает с int – целое число
unsigned long Совпадает с unsigned int – без знаковое целое число
float От 1,2Е-38 до 3,4Е+38 – вещественное число одинарной точности
unsigned float От 0 до 7Е+38 - без знаковое вещественное число одинарной точности
double От 2,2Е-308 до 1,8Е+308 -вещественное число двойной точности
Тип Размер в байтах Диапазон значений
unsigned double От 0 до 4Е+308 - без знаковое вещественное число двойной точности
bool true или false – логический тип
void   Пустой тип

Строка #include <iostream> дает директиву препроцессору подключить библиотечный файл iostream.h, содержащий различные функции ввода и вывода. В нашей программе это объекты cin и cout.

Объекты потоков coutи cinвызывают взаимодействие между пользова­телем и компьютером. Оператор cout<<"input number a="; печатает на экране сообщение input number a=. Оператор cin>>a; получает от пользователя значение переменной a. Оператор присваивания c=a+b; рассчитывает сумму переменных aиbиприсваивает результат переменной c,используя операцию присваивания=. Оператор читается так: «c получаетзначение, равное a + b».Операция поместить в поток (<<) «знает», как выводить каждую единицу данных. Многократное использование операции поместить в поток в одном операторе называется сцепленной операцией поместить в поток. В строкеcout << "sum=" << с << endl; текст, заключенный в кавычки (sum=), печатается без изменения, а вместо символа с печатается числовое значение переменной с, endl - это константа, которая содержит управляющий символ, переводящий курсор на новую строку. В операторах вывода можно также выполнять вычисления. Мы могли бы объединить два предыдущих оператора в один:

cout << "sum=" << a + b << endl;

Функция main обязательно должна вернуть значение, что делает оператор return 0;. Значение 0 говорит об успешном завершении программы. Правая фигурная скобка (}) в данном примере информирует компьютер о том, что функция mainокончена.

В программах могут выполняться арифметические вычисления. Язык С++ содержит арифметические операции сложение (+), вычитание (-), деление (/), умножение (*) и вычисления остатка от деления (%). Приоритет выполнения операций такой же, как и в обычных алгебраических выражениях, т.е. сначала выполняются умножение, деление и вычисление остатка от деления, а затем сложение и вычитание. Приоритет можно изменить, как и в обычной алгебре, с помощью круглых скобок.

Арифметические операции используются как обычно, кроме двух особенностей:

1. целочисленное деление дает целый результат, т.е. если мы делим целое число на целое результат будет целым; например, выражение 7/4 равно 1, а выражение 17/5 равно 3. Заметим, что любая десятичная часть при целочисленном делении просто отбрасывается (т.е. усекается) — округление не производится. Если мы хотим получить в результате число с дробной частью, то после одного из чисел достаточно поставить знак точку; например, записать 7/4. и получить результат 1.75 или результат от 17./5 будет равен 3.4.

2. операция вычисления остатка % используется только для целых чисел, для вещественных чисел используется функция fmod, о которой вы узнаете ниже. Выражение х % у дает остаток от деления х на у. Таким образом, 7 % 4 равно 3; 17 % 5 равно 2. Эта операция используется для определения кратности, чётности, нечётности.

Для использования различных математических функций следует подключить библиотеку встроенных математических функций #include <сmath>

Функции библиотеки “сmath”
Функция Действие
sqrt(x) Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru
log(x) ln x
pow(x,y) Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru
fmod(x,y) остаток от деления “х” на “у” (для вещественных чисел)
fabs(x) |x|
log10(x) lgx
ceil(x) округляет “х” до ближайшего целого, не меньшего“x”, ceil(9.2)=10.0
floor(x) округляет “х” до ближайшего целого, не превышающего “x”, floor(9.2)=9.0
exp(x) Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru
sin(x), cos(x), tan(x), atan(x) тригонометрические функции sinx, cosx, tgx, arctgx

Необходимо выполнить нижеследующие задания для самостоятельной работы на ЭВМ. Результаты выполнения заданий этой и в дальнейшем остальных лабораторных работ оформите в тетради в следующем порядке:

Лабораторная работа № .

Условие задачи:

Исходные данные:

Блок-схема:

Код программы:

Результаты вычислений:

(Обозначения элементов блок-схем представлены в приложении 1.)

Задания для самостоятельной работы

1. Дан радиус окружности. Вычислить длину окружности и площадь круга.

2. Даны 2 катета прямоугольного треугольника. Найти гипотенузу и площадь треугольника.

3. Найти площадь кольца, внутренний радиус которого равен 20, а внешний – заданному числу r (r>20).

4. Даны x, y, z. Вычислить a, b, если

А) Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Б) Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

5. Найти площадь равнобочной трапеции с основаниями a и b и углом a при большем основании a.

(Примечание: углы компилятор принимает в радианах).

6. Известны длины трех сторон треугольника. Вычислить площадь треугольника.

7. Даны два целых числа. Найти среднее арифметическое этих чисел и среднее геометрическое их модулей.

8. Вычислить расстояние между двумя точками X1,Y1 и X2,Y2.

9. Дано четырехзначное целое число Х. Определить цифры числа. Ответ выдать в виде, например:

7 – thousands

3 – hundreds

4 – tens

6 - ones

Лабораторная работа № 2

В первой лабораторной работе мы рассматривали линейные или последовательные алгоритмы, т.е. такие алгоритмы, где действия идут последовательно один за другим. Если же перед нами стоит выбор выполнения различных действий, используются разветвляющиеся алгоритмы. Программа в зависимости от выполнения логического условия обязательно должна пойти по одной из ветвей. Одной из альтернатив может и не быть.

 
  Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Для реализации разветвляющихся алгоритмов используется условный оператор “if”. Оператор “if” имеет две формы записи:

1) if (<условие>) <оператор>;

2) if (<условие>) <оператор1>; else <оператор2>;

Рассмотрим первый вид if (<условие>) <оператор>;

Проверяется условие, если оно истинно, то выполняется “оператор”, иначе программа идет далее вниз по тексту.

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru Пример: Дано вещественное число. Если оно отрицательно, то вывести его абсолютное значение.

#include <iostream>

#include <сmath>

using namespace std;

int main() {

double a;

cin>>a;

if (a<0)

cout<<fabs(a)<<endl;

return 0;

}

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru Теперь рассмотрим второй вид

if (<условие>) <оператор1>; else <оператор2>;

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru Здесь проверяется условие, если оно истинно, то выполняется “оператор1”, иначе выполняется «оператор2», далее программа идет вниз по тексту.

Пример: Даны два целых числа.

Вывести наименьшее из них.

#include <iostream>

using namespace std;

int main() { int a, b;

cin>>a>>b;
if(a <b) cout<<”minimum=”<<a<<endl;
else cout<<”minimum=”<<b<<endl;

return 0;
}

Большинство операторов языка С++ в соответствии с синтаксисом могут выполнить только один оператор. В случае если по условию задачи требуется выполнить несколько операторов, они должны быть заключены в фигурные скобки {}. Операторы идущие после блока if, заключённые в фигурные скобки называются ”телом” оператора if.

Имеется более короткий способ записи условного оператора:

(<условие>)?<оператор1>:<оператор2>;

Проверяется условие, если оно истинно, то выполняется “оператор1”, иначе “оператор2”. Применение данного оператора приводит к получению более компактного машинного кода.

Пример: Даны 2 действительных числа. Найти наибольшее из этих 2-х чисел.

#include <iostream>

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru using namespace std;

int main() {

double x, y, max;

cin>>x>>y;

max=(x>y)?x:y;

cout<<”max=”<<max<<endl;

return 0;

}

Для записи условия используют логические операции: >(больше), <(меньше), >=(больше или равно), <=(меньше или равно), = =(равно), !=(не равно) и логические операторы && (логическое и), || (логическое или), ! (отрицание). Условие может принимать 2 значения: true(истина) или false(ложь).

Для определения истинности сложного логического условия (выражения), записанного с помощью логических операций и операторов, применяется таблица истинности, где 1 – истина (true), а 0 – ложь (false).

Таблица истинности
x y x&&y x||y !x

Логический оператор “&&” (и) даёт истинное значение логического выражения только в том случае, когда оба операнда этого оператора являются истинными. Например: if ((x==5)&&(y==5)) – это выражение буден истинным только в том случае, когда x=5 и y=5.

Логический оператор “||” (или) даёт истинное значение логического выражения в том случае, когда хотя бы один из операндов этого оператора является истинным. Например: if ((x==5)||(y==5)) – это выражение буден истинным в том случае, когда или x=5 или y=5.

Логические операции так же как и арифметические операции имеют приоритет выполнения. Логические операции ( >, <, <=, >=) имеют больший приоритет, чем логические операторы ( ! , || , &&).

Пример использования логических операторов:

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru Даны 3 действительных числа. Проверить правильно ли выполняется следующее соотношение: Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru a<b<c;

#include <iostream>

using namespace std;

int main() { double a, b, c;

cin>>a>>b>>c;

if ((a<b)&&(b<c))

cout<<”Yes”;

else

cout<<”No”;

return 0;}

Оператор множественного выбора “switch”

В некоторых случаях использование оператора “if” может привести к возникновению конструкций с большим количеством вложений, значительно усложняющих восприятие программы. Для решения этой проблемы, предусмотрен оператор “switch”, который позволяет рассматривать сразу несколько условий.

switch (<выражение>) {

case <первое_значение>: <оператор>; break;

case <второе_значение>: <оператор>; break;

case <n-oe_значение>: <оператор>; break;

default: <оператор>; break;

}

Выражение, заданное в скобках оператора “switch” сравнивается со значениями, указанными за операторами “case”. В случае совпадения значений выражения, выполняется оператор в строке соответствующего оператора “case”. Будут выполняться все строки программы после выбранного оператора “case” до тех пор, пока не закончится тело блока оператора “switch” или не повстречается оператор “break”. Выполнение оператора “break” приводит к выходу из оператора “switch”. Если “break” отсутствует, то управление передаётся следующему оператору “case” или оператору “default”. Если ни одно из значений операторов “case” не совпадает с выражением, то выполняются строки программы, стоящие после оператора “default”. Наличие оператора “default” не обязательно. В случае его отсутствия и несовпадения выражения ни с одним из значений, будет выполнен оператор стоящий после блока оператора “switch”.

Примечание: выражение оператора switch может быть только целочисленного типа или типа char.

Пример: Требуется написать программу, которая по введённой оценке определяет статус учащегося. Решим задачу двумя способами для сравнения.

Программа с использованием вложенных конструкций if/else   Программа с использованием оператора switch  
Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru #include <iostream.h> main() { int mark; cout<<”Enter mark – ”; cin>>mark; if (mark==5) cout<<”Excellent\n”; else if (mark==4) cout<<”Good\n”; else if (mark==3) cout<<”Satisfy\n”; else cout<<”Bad\n”; return 0; }   Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru #include <iostream.h> main() { int mark; cout<<”Enter mark - ”; cin>>mark; switch (mark) { case 5: cout<<”Excellent\n”; break; case 4: cout<<”Good\n”; break; case 3: cout<<”Satisfy\n”; break; default: cout<<”Bad\n”; } return 0; }  

Выполнить на ЭВМ и оформить в тетради задания для самостоятельной работы.

Задания для самостоятельной работы

1. Даны действительные числа x и y (x!=y). Меньшее из них заменить полусуммой чисел, а большее – удвоенным произведением.

2. Если сумма 3 действительных чисел x,y,z <1, то наименьшее из этих чисел заменить полусуммой двух других, в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений.

3. Дано действительное число а. Вычислить f(a), если

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

4. Даны действительные числа a, b, c. Найти корни квадратного уравнения ax2+bx+c=0, в противном случае ответом должно служить сообщение, что корней нет.

5. Даны действительные числа x, y, z. Выяснить, существует ли треугольник с длинами сторон x, y, z.

6. Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны.

7. Даны действительные числа. Выбрать из них, те которые принадлежат интервалу [1,3].

8. Программа запрашивает у пользователя «Сколько Вам лет?» . Вы вводите положительное число до 100. Программа должна выдать полный ответ « Вам Х (или лет или года или год).

9. Даны действительные числа a, b, c.Удвоить эти числа, если a³b³c, и заменить их абсолютными значениями, если это не так.

10. Дано натуральное число n (n³9999). Является ли это число палиндромом (перевертышем) с учетом четырех цифр, как , например, числа 2222, 6116, 0440 и т.д.

Лабораторная работа № 3

Операторы цикла

Операторы цикла используется для организации многократно повторяющихся действий. Любой цикл состоит из:

- тела цикла, т.е. операторов повторяющихся несколько раз;

- начальных значений;

- модификации (изменения) параметра цикла

- проверки условия продолжения цикла.

Один проход цикла называется итерацией. В С++ для удобства, а не по необходимости существует три типа операторов цикла. Это оператор цикла с предусловием while, оператор цикла с постусловием do/while и оператор цикла for. Поставленную задачу можно решить любым из них. Рассмотрим их подробнее.

Оператор цикла с предусловием “while”определяет действие, которое должно повторяться, пока условие в скобках остается истинным. Если условие при первом же шаге ложно, тело цикла не выполнится ни разу.

 
  Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Форма записи оператора:

while (< условие>) { <операторы>};

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru Пример: Вычислить значения функции y=x2+5, если xÎ[0,5] с шагом 1.

#include <iostream>

using namespace std;

int main() {

int x, y;

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru x=0;

while (x<=5)

{

y=x*x+5;

cout<<”x=”<<x<<”y=”<<y <<endl;

x++;

}

return 0; }

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru При использовании оператора цикла с постусловием “do/while”условие проверяется после выполнения тела цикла, это гарантирует выполнение цикла хотя бы один раз, даже если условие всегда ложно.

Форма записи оператора цикла с постусловием “do/while”:

do

{<операторы>}

while(<условие>);

Пример: Вычислить произведение целых чисел от 1 до 5.

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru #include <iostream>

using namespace std;

int main() {

int p, i;

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru p=1; i=1;

{

p*=i;

i++;

} while (i<=5);

cout<<p<<endl;

return 0;

}

Оператор цикл for работает следующим образом:

1) Присваивается начальное значение счётчику цикла, т.е инициализируется счётчик цикла.

2) Выполняется проверка значения счётчика. Если результат проверки равен значению “true”, то сначала выполняется тело цикла, а за тем операция над счётчиком (приращение, уменьшение и т.д.).

Форма записи оператора цикла

for (<инициализация_счётчика>;<проверка>;<операция_над_счётчиком>) операторы;

Пример:

Вычислить значение функции Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru для всех значений “х” в диапазоне xÎ [a;b], где a- нижняя граница диапазона, b- верхняя граница диапазона.

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru #include <iostream>

#include <cmath>

using namespace std;

int main() {

int a,b,x;

cin>>a>>b;

double y;

for (x=a; x<=b; x++)

{

y=2 * pow ( x, 2);

cout<<”y=”<<y<<endl;

}

return 0;

}

Множественная инициализация счётчика цикла for

Синтаксис оператора цикла for позволяет инициализировать несколько переменных счётчиков, проверять сложное условие продолжения цикла и последовательно выполнять несколько операций над счётчиками цикла. Если присваиваются значения нескольким счётчикам или выполняются операции с несколькими счётчиками, то они записываются последовательно, и разделяются запятыми.

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru for ( i=0, j=0 ;i<3 && j<3; i++, j++ ) cout<<i<<j<<endl;

       
  Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru
   
Операция над счётчиком
 

Результатом этого фрагмента программы будет вывод чисел в виде:

Вложенные циклы “for”

Цикл, организованный внутри тела другого цикла, называется вложенным циклом. В этом случае внутренний цикл полностью выполняется на каждой итерации (шаге) внешнего цикла.

for ( i=0; i < 2; i++)

for ( j=0; j < 2; j++)

cout << i << j << endl;

Результатом этого фрагмента программы будет вывод чисел в виде:

Счётчик цикла может быть как целого, так и вещественного типа. В качестве выражения изменения счётчика цикла может быть использовано сложное арифметическое выражение.

for ( i=0.5; i<100; i/5+10)

Синтаксис цикла “for” позволяет определять счётчик цикла одновременно с его инициализацией.

for ( int i=0; i<5; i++)

Выполнить на ЭВМ и оформить в тетради задания для самостоятельной работы.

Задания для самостоятельной работы

1.Вычислить значение функции Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru при х изменяющемся от 1 до 20 с шагом 0.5.

2. Вычислить значение функции Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru при х изменяющемся от 0 до 16 с шагом 2.

3. Вычислить значение функции

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

a=0.3, n=10, i изменяется от 1 до 10 с шагом 1.

4. Вычислить значение функции

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

a=2.6, b=5, x изменяется от 0 до 10 с шагом 0.5

5. Найти сумму и произведение последовательности 10 целых чисел от 1 до 10.

Использовать оператор do…while

6. Вычислить Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru .

Использовать оператор while

7. Дано действительное число а. Найти среди чисел Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru первое большее а.

Использовать оператор do…while

8. Даны натуральное n и действительное х. Вычислить Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru .

Использовать оператор for

9. Дано натуральное n. Вычислить:

a. Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

b. Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru ;

c. Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru ; n -корней

d. Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

10. Дано натуральное n. Найти Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru , где

х11=1; xi=0.3xi-1; yi=xi-1+yi-1, i=2,3,… Использовать оператор do…while

11. (Песня «Двенадцать дней рождества»)Напишите программу, использующую повторение и структуры switch для печати текста песни «Двенадцать дней рождества». Одна структура switch должна использоваться для печати дня («Первый», «Второй» и т.д.). Другая структура switch должна использоваться для печати остальной части каждого куплета (возможно проще иметь дело с более знакомой песней того же типа «Двенадцать негритят»).

12. Рассчитайте значение πна основании бесконечного ряда

π =4-4/3+4/5-4/7+4/9-4/11+...

Напечатайте таблицу, которая покажет, как значение π аппроксимируется одним членом этого ряда, двумя членами, тремя и т.д. Сколько членов ряда потребовалось для получения значения 3.14? 3.141? 3.1415? 3.14159?

13. Напишите программу, которая читает пять чисел (каждое между 1 и 30). Для каждого просчитанного числа ваша программа должна напечатать строку, содержащую соответствующее число смежных звездочек. Например, если ваша програм­ма прочла число 7, она должна напечатать *******.

14. Напишите программу, которая напечатает следующий ромб. Вы можете использовать операторы вывода, которые печатают или одну звездочку (*), или один пробел. Максимально используйте повторение (с вложенными структурами for) и минимизируйте число операторов вывода.

*

***

*****

*******

*********

*******

*****

***

*

Лабораторная работа №4

Одномерные массивы

Массив– набор однотипных объектов имеющих общее имя и отличающихся местоположением в этом наборе. Элементы массива занимают один непрерывный участок памяти компьютера и располагаются последовательно друг за другом. Нумерация элементов в массиве начинается с 0 и заканчивается n-1 элементом, где n-количество элементов массива.

С++ в отличие от других языков не запрещает запись в любой участок памяти, поэтому программисту самому надо следить за тем, чтобы не произошел выход за границы массива, так как это может привести к прекращению работы операционной системы.

Синтаксис описания одномерного массива:

<Тип элементов массива> <имя_массива>[<количество элементов>];

Например:

int a[5];

Массив из 5 целочисленных элементов, имя массива – а, занимает непрерывный участок памяти размером 20 байтов, нумерация начинается с 0 и заканчивается 4.

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Одновременно с описанием массива можно инициализировать его элементы.

1) int a[5]={ 5, 8, 1, 3, 2 };

2) int a[]={ 5, 8, 1, 3, 2};

Во втором случае компилятор сам определит количество элементов массива по списку значений и выделит соответствующее количество памяти.

Также элементы массива можно инициализировать следующим образом: а[0]=5; a[1]=8; и т.д.

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

for ( i=0; i<5; i++) cin>>a[i]; //Ввод массива

for ( i=0; i<5; i++) cout<<a[i]; //Вывод массива

Стандартные алгоритмы обработки одномерных массивов

1. Поиск суммы и произведения массива:

#include <iostream>

using namespace std;

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru int main() { int A[5], Sum=0, P=1,i;

for (i=0;i<5;i++) cin>>A[i];

for (i=0;i<5;i++) {

Sum+=A[i]; P*=A[i]; }

cout<<”Sum=”<<Sum<<”\nP=”<<P<<endl;

return 0; }

2. Поиск минимального элемента массива:

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru #include <iostream>

using namespace std;

int main() {

int A[100], n, i, min;

cin>>n;

for ( i=0; i<n; i++)

cin>>A[i];

min=A[0];

for (i=1; i<n; i++)

if (A[i]<min)

min=A[i];

cout<<min<<endl;

return 0;

}

3. Поиск максимального элемента массива:

#include <iostream>

using namespace std;

int main( ) {

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru int A[100], n, i, max;

cin>>n;

for (i=0;i<n;i++)

cin>>A[i];

max=A[0];

i=1;

do {

if (A[i]>max)

max=A[i];

i++;

while (i<n);

cout<<max<<endl;

return 0; }

Задания для самостоятельной работы

1. Даны температуры воздуха за неделю. Определить среднюю температуру воздуха за неделю и сколько раз температура опускалась ниже 0 градусов.

2. Даны натуральные числа N, a0, a1,…., a(N-1). Определить количество членов последовательности имеющих четные порядковые номера и являющихся нечетными числами.

3. Определить является ли данная последовательность убывающей (во избежание лишних проверок использовать оператор break) .

9. Информация о количестве выпавших в течение недели осадках задана в виде массива. Определить общее количество осадков за неделю.

10. Информация о температуре воздуха за месяц задана в виде массива. Определить, сколько раз температура опускалась ниже 0 градусов.

11. Дан массив чисел. Определить, сколько в нем пар одинаковых соседних элементов.

12. Дан массив чисел. Найти наибольший элемент, поставить его первым.

Лабораторная работа № 5

Двумерные массивы

В предыдущей лабораторной работе мы рассматривали одномерные массивы, но существуют многомерные массивы. Например, двумерный массив int v[3][7] можно представить как три массива типа int по 7 элементов в каждом. Представим его в виде матрицы размером 3х7:

  0-ой столбец   1-ый столбец 2-ой столбец 3-ий столбец 4-ый столбец 5-ый столбец 6-ой столбец
0-ая строка v[0][0] v[0][1] v[0][2] v[0][3] v[0][4] v[0][5] v[0][6]
1-ая строка v[1][0] v[1][1] v[1][2] v[1][3] v[1][4] v[1][5] v[1][6]
2-ая строка v[2][0] v[2][1] v[2][2] v[2][3] v[2][4] v[2][5] v[2][6]

Нумерация строк и столбцов начинается с 0 и заканчивается n-1. Первый индекс – номер строки, второй индекс - номер столбца.

Объявление двумерного массива:

<тип элементов> массива <имя > [количество строк][количество столбцов];

Например: int A[5][6];

Вместе с объявлением можно проинициализировать:

int A[2][3]={{1,2,3},{4,5,6}};

или int A[2][2]={1, 2, 3, 4};

Ввод двумерного массива c клавиатуры:

for ( i=0; i<5; i++)

for ( j=0; j<5; j++)

cin>>A[i][j];

Вывод двумерного массива в виде таблицы:

for (i=0;i<3;i++)

{

for (j=0;j<3;j++)

cout<<A[i][j]<<” “;

cout<<endl;

}

Алгоритм транспонирования двумерного массива

Дана матрица

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

Получить транспонированную

матрицу

Начало работы в среде «Microsoft Visual Studio 2010» - student2.ru

#include <iostream>

using namespace std;

int main() {

int A[3][3],B[3][3],i,j;

for (i=0;i<3;i++)

for (j=0;j<3;j++)

cin>>A[i][j];

for (i=0;i<3;i++)

for (j=0;j<3;j++)

B[i][j]=A[j][i];

for (i=0;i<3;i++) {

for (j=0;j<3;j++)

cout<<A[i][j]<<” “;

cout<<endl;

}

return 0;

}

Наши рекомендации