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

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




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

#include <iostream.h>

#include <math.h>

void main()

{ float a,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;

} else cout("\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>

void main()

{ long int F;

int i,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>

void main()

{

int n=l;

double S=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>

void main()

{ long int F;

int i,N;

cout<<"N=";

cin>>N;

F=i=l;

do F*=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 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...