Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие2013_09_28.doc
Скачиваний:
24
Добавлен:
20.05.2015
Размер:
2.72 Mб
Скачать

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<stdi­o.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;

}