Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Пример2. Вычисление площади треугольника по длинам трех сторон.





// Площадь треугольника

#include <iostream.h>

#include <math.h>

voidmain()

{floata,b,c,p,s;

cout<<\na="; cin>>a;

cout<<"\nb="; cin>>b;

cout<<"\nc="; cin>>c;

if(a>0 && b>0 && c>0 && a+b>c && a+c>b && b+c>a)

{ p=(a+b+c)/2;

s=sqrt(p*(p-a)*(p-b)*(p-c)) ;

соut<<"\nПлощадь треугольника="<<s;

} elsecout("\n Неверные исходные данные.");}

Данные символьного типа

 

Тип данных char является подтипом типа int. Данные символьного типа имеют 2 формы представления:

Тип Бит диапазон
unsigned char 0 ... 255
signed char -128... 127

По умолчанию тип char всегда имеет знак

При использовании типа char символы русского алфавита коди­руются отрицательными числами. Чтобы коды символов одно­значно соответствовали кодировке ASCII сле­дует использовать тип unsigned char.

Описание данных символьного типа

Данные символьного тапа описываются служебным словом char. Например:

char a=’A’, b, c;

Значением переменной символьного типа является код соответствующего типа.

Символьной константой называется символ, заключенный в одинарные кавычки. Например:

b=’B’;

 

 

Программирование циклов

В Си, как и в Паскале, существуют все три типа операторов цикла: цикл спредусловием, цикл с постусловием и цикл с па­раметром.

Цикл с предусловием.Формат оператора цикла с предусловием:

while(выражение) оператор;

Цикл повторяет свое выполнение, пока значение выражения от­лично от нуля, т. е. заключенное в нем условие цикла истинно.

 

Пример

Программа вычисления факториала целого положительного числа N!.

 

include <iostream.h>

voidmain()

{ long int F;

inti,N;

cout<<"N=";

cin>>N;

F=i=l;

while(i<=N) F=F*i++;

cout<<"\n"<<N<<"!="<<F;

}

 

Интересно свойство следующего оператора:

while(1);

Это бесконечный пустой цикл. Использование в качестве вы­ражения константы 1 приводит к тому, что условие повторения цикла все время остается истинным и работа цикла никогда не заканчивается.

 

Пример

Вычислить сумму гар­монического ряда: 1 +1/2+1/3+... с заданной точностью е



#include<iostream.h>

#include <limits.h>

voidmain()

{

intn=l;

doubleS=0, eps;

cout<<"Tочность: ";

cin>>eps;

while(1.0/n>eps && n<INT_MAX)

S+=l./n++;
cout<<"\nCyммa="<<S;

}

Файл limits.h, подключаемый препроцессором, содержит оп­ределения предельных констант для целых типов данных. В част­ности, константа с именем int_max равна максимальному значе­нию типа int в данной реализации компилятора.

Цикл с постусловием.Формат оператора цикла с постусловием:

do оператор while (выражение);

В отли­чие от оператора repeat ...until, используемого в Паскале, где в конце пишется условие выхода из цикла, в операторе do ... while в Си в конце пишется условие повторения цикла.

При­мер

Программа вычисления факториала целого положительного числа N!

#include <iostream.h>

voidmain()

{ long int F;

inti,N;

cout<<"N=";

cin>>N;

F=i=l;

doF*=i++; while(i<=N);

cout<<"\n"<<N<<" ! ="<<F;

}

 

 

Цикл с параметром.Формат оператора цикла с параметром:

for (выражение_1; выражение_2; выражение_3)

оператор;

Выражение 1 выполняется только один раз в начале цикла. Обыч­но оно определяет начальное значение параметра цикла (инициа­лизирует параметр цикла). Выражение 2 — это условие выполне­ния цикла. Выражение 3 обычно определяет изменение параметра цикла, оператор — тело цикла, которое может быть простым или составным. В последнем случае используются фигурные скобки.

Алгоритм выполнения цикла for представлен на блок-схеме.

С помощью цикла for нахождение N!можно организовать следующим обра­зом:

F=l;

for(i=l;i<=N;i++) F=F*i;

Используя операцию «запятая», мож­но в выражение 1 внести инициализа­цию значений сразу нескольких пере­менных:

for(F=l,i=l;i<=N;i++) F=F*i;

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

Ниже показан еще один вариант вычисления N!. В нем на месте тела цикла находится пустой оператор, а вычислительная часть внесена в Выражение3.

for(F=l,i=l;i<=N;F=F*i,i++) ;

Этот же оператор можно записать в следующей форме:

for(F=l,i=l;i<=N;F*=i++) ;

В языке Си оператор for является достаточно универсальным средством для организации циклов. С его помощью можно про­граммировать даже итерационные циклы, что невозможно в Пас­кале. Вот пример вычисления суммы элементов гармонического ряда, превышающих заданную величину е:

for (n=l, S=0; 1.0/n>eps && n<INT_MAX; n++) S+=1.0/n;

И наконец, эта же самая задача с пустым телом цикла:

for(n=l,S=0;1.0/n>eps && n<INT_MAX; S+=l . 0/n++) ;

Операторcontinue. Если выполнение очередного шага цикла требуется завершить до того, как будет достигнут конец тела цик­ла, используется оператор continue.

Операторgoto. Оператор безусловного перехода goto суще­ствует в языке Си, как и во всех других языках программирования высокого уровня. Однако с точки зрения структурного подхода к программированию его использование рекомендуется ограничить.

Формат оператора:

gotoметка;

Метка представляет собой идентификатор с последующим дво­еточием, ставится перед помечаемым оператором.

При использовании оператора безусловного перехода необхо­димо учитывать следующие ограничения:

• нельзя входить внутрь блока извне;

• нельзя входить внутрь условного оператора (if ...else...);

• нельзя входить внутрь переключателя;

• нельзя входить внутрь цикла.

 





Рекомендуемые страницы:

Воспользуйтесь поиском по сайту:



©2015- 2021 megalektsii.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.