- •Институт математики, экономики и механики кафедра математического обеспечения компьютерных систем в. С. Макогон, и. Н. Лисицына
- •Оглавление
- •Введение
- •Основныетипы данных, операции и выражения
- •Описание переменных.
- •Операции , выражения и операторы.
- •3. Операторы управления программой. Базовые управляющие структуры.
- •Операторы ветвления Условный оператор if
- •Оператор - переключатель
- •Операторы повторения (цикла).
- •4. Программирование алгоритмов линейной структуры.
- •5. Программирование разветвляющихся алгоритмов (оператор if).
- •6. Программирование разветвляющихся алгоритмов (оператор switch)
- •Оператор for
- •Цикл с постусловием do -while
- •8. Итерационные циклы
- •Задачи для самостоятельного решения
- •9. Программирование алгоритмов с использованием функций
- •Основные понятия численного решения уравнений
- •10. Программирование алгоритмов с использованием массивов
- •11. Символьные переменные и строки. Обработка строк.
- •Другие средства ввода-вывода символов и строк
- •Массивы строк
- •12. Указатели
- •Массивы указателей
- •2. Описание метода трапеций
- •3. Программный комплекс
- •13. Структуры
- •Указатели на структуры
- •14. Файлы. Потоковый ввод-вывод
- •Функции для работы с файлами
- •Открытие файловых потоков
- •Закрытие файловых потоков
- •Удаление файлов
- •Переименование файлов
- •Реинициализация
- •Функции для ввода-вывода по символам
- •1 Вариант) содержит только буквы исходной строки
- •2 Вариант) перевернута по отношению к исходной
- •Двоичные (бинарные) файлы. Блочно-ориентированный ввод-вывод.
5. Программирование разветвляющихся алгоритмов (оператор if).
Условный оператор if аналогичен условным операторам других языков программирования и может использоваться в сокращенной и полной формах, которым соответствуют схемы:
if (условие) оператор;
if (условие) оператор_1; else оператор_2;
В сокращенной форме условного оператора вычисляется выражение-условие и, если его значение отлично от нуля, выполняется следующий за условием оператор, в противном случае не производится никаких действий.
В полной форме условного оператора при ненулевом значении выражения-условия выполняется оператор_1 с последующим переходом к следующему оператору программы, а при нулевом значении выражения-условия выполняется оператор_2 с переходом к следующему оператору программы.
Задача 10.Ввести трёхзначное числоа и определить, делится ли оно без остатка на сумму своих цифр. Результат вывести на экран.
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
int a, z1, z2, z3;
cout<<"Введи трёхзначное число ";
cin>>a; //Ввод числа
z3=a%10; // последняя цифра
z1=a/100; // первая цифра
z2=a/10%10; // средняя цифра
if(a%(z1+z2+z3)==0)
cout<<"Результат деления = "<<a/(z1+z2+z3);
else
cout<<"Не делится";
getch();
return 0;
}
Задача 11.Приведем более представительный пример. Слелующая программа распознает, какая из клавиш была нажата: латинская или русская буква, или цифра).
// Программа отлажена вVisual Studio 2008
// Raspozn_Bukw.cpp : Распознаватель букв и цифр
// в частности - распознает русские и выводит их
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{ unsigned char ch;
wcout.imbue ( locale( "rus_rus.866"));
m1:
{
wcout<<L"\nВведи символ "; ch=_getch();
if(ch >= '0' && ch <= '9')
wcout<<(char)ch<<L"-Это цифра"<<endl;
else if(ch >= 'A' && ch <= 'Z' ||ch >= 'a' && ch <= 'z')
wcout<<(char)ch<<L"-Это латинская буква"<<endl;
else if( ch >= 128 && ch <= 159 // А..Я
|| ch >= 160 && ch <= 175 // а..п
|| ch >= 224 && ch <= 241) // р..ё
wcout<<(char)ch<<L"-Это русская буква"<<endl;
else wcout<<(char)ch<<L"Не знаю..."<<endl;
wcout<<L"\nПродолжать(y/n)?"; ch=_getch();
}
if(ch != 'n' && ch != 'N') goto m1;
return 0;
}
Задача 12.Врачи советуют контролировать собственный вес Вашего тела, руководствуясь значением так называемого индекса массы:k = ,гдеm— вес тела вкг,h— рост в метрах. Еслиk<= 27, то всё в норме; если 27 <k<= 30, то имеет место ожирение; если жеk> 30, то требуется лечение от ожирения. Составить программу, которая вводит по запросу Ваш вес и рост, а затем выводит на экран соответствующий результат тестирования. Ввод и вывод в стиле языка С.
#include<stdio.h>
#include <conio.h>
int main()
{
floatm,h,k;
m1: clrscr();
printf("введи свой вес в кг и рост в м ");
scanf("%f %f",&m,&h);
if(m<=0 || h<=0)
{
printf("не шути\n");
gotoxy(10,23);
printf("Для продолжения нажать Enter");
getch();
goto m1;
}
k=m/(h*h);
if(k<27)
printf("%f - норма\n",k);
// почему без else плохо?
else
if(k>=27 && k<30)
printf("%f-ожирение\n",k);
else
//if(k>=30)
printf("%f-надо лечиться\n",k);
gotoxy(10,23);
printf("Для продолжения нажать Enter");
getch(); return 0;
}
Задача 13. Ввести координаты некоторой точки (x,y). Выяснить и сообщить, попадает ли она внутрь правой полуокружности круга радиуса R=3 с центром в начале координат
#include <conio.h>
#include <iostream.h>
voidmain()
{
floatx,y,R;
clrscr();
cout<<"Введи x "; cin>>x;
cout<<"Введи y "; cin>>y;
R=3; //радиус
if(x >= 0 && sqrt(x*x + y*y) <= R)
cout<<" Точка ("<<x<<","<<y<<")"<<" в полукруге"<<endl;
else
cout<<" Точка ("<<x<<","<<y<<")"<<" вне полукруга"<<endl;
getch();
}
Задача 14.Значения переменныхa, bиcпоменять местами так, чтобы выполнялось соотношениеa≤ b≤c.
// Программа отлажена в Visual Studio 2008
// po_vozr2 расположить a, b, c по возрастанию
#include<conio.h>
#include <iostream>
using namespace std;
int main()
{
int r, a=9, b=7, c=3;
if (a>b)
{ r=a; a=b; b=r;
cout<<a<<b<<c<<endl;
}
if (b>c)
{ r=b; b=c; c=r;
cout<<a<<b<<c<<endl;
}
if (a>b)
{ r=a; a=b; b=r;
cout<<a<<b<<c<<endl;
}
getch(); return 0;
}
Задача 15. Вычислить и вывести на экран последовательность из М чисел Фибоначчи: 1, 1, 2, 3, 5, 8, 13, 21,... (первые два числа равны 1, а каждое следующее равно сумме двух предыдущих). В программе реализован простейший цикл с помощью операторов if и goto.
// Программа отлажена в Borland C++ Builder 6
#pragma argsused
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include "d:\\My_C_Builder_6\\rus.h"
int main()
{
unsigned long f1,f2,f;
int i, M;
printf(rus("ВВЕДИ M <= 46 "));
scanf("%d",&M);
f1=1; f2=1;
i=3;
metka:
{
f=f1+f2;
printf("%d-e = %ld\n", i, f);
f1=f2; f2=f;
i++;
}
if(i<=M) goto metka;
getch(); return 0;
}