Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Математические функции.






Прототипы математических функций описаны в заголовочном файле math.h.

ceil(x) –округляет число к ближайшему большему целому.

fabs(x)- возвращает абсолютное значение х.

floor(x)- округляет число х к ближайшему меньшему целому.

fmod(x, y) –возвращает число с плавающей точкой, являющееся остатком от деления х на у, с тем же знаком, что х. У не может быть 0. Эта функция позволяет находить остаток от деления чисел с плавающей точкой.

pow(x, y)- возвращает значение х, возведённое в степень у. Если х меньше или равно нулю, у должен быть целым. Если х=0, у не может быть отрицательным.

sqrt(x) – возвращает квадратный корень числа х. Значение х должно быть больше нуля либо равно нулю.

С помощью функции можно вычислить корень n-ой степени числа, возведя это число в степень 1/n.

Root=pow(65.0, (1.0/4.0))

Функция pow требует в качестве аргументов числа с плавающей точкой.

Для тригонометрических функций cos(x), sin(x), tan(x) значение х задаётся в радианах. Перевод в радианы угла 45 градусов: (45*3.14)/180.

exp(x) –экспоненциальная функция.

log(x) –натуральный логарифм.

log10(x)- десятичный логарифм.

Рассмотрим пример сортировки строк фамилий в алфавитном порядке. В такой программе одним из главных инструментов является функция strcmp(), так как её можно использовать для определения старшинства двух строк.

#include < stdio.h>

//#include < iostream.h>

#include < string.h>

#define SIZE 10

#define LIM 5

//#define HALT " "

ststr(char *strings[], int num); //прототип функции сортировки строк с использованием указателей

void main()

{

char input[LIM][SIZE]; //массив для запоминания строк

char *ptstr[LIM]; // массив указателей вводимых строк

int k;

int ct=0; // счётчик вводимых строк

printf(" Введите строку, (менее 20 символов, включая пробелы)\n");

printf(" После ввода строки нажмите на клавишу Enter\n");

while (ct < LIM)

{

gets(input[ct]);

printf(" Введенная Вами строка: \n%s\n", input[ct]);

ptstr[ct]=input[ct]; // указывает на ещё не отсортированный массив.

ct++;

}

ststr(ptstr, ct); //вызов функции сортировки массива

printf(" вот отсортированный список\n");

for(k=0; k< ct; k++)

puts (ptstr[k]);

}//конец функции main

/*функция сортировки строк с использованием указателей

ststr(char *strings[], int num)

{

char *temp;

int top, seek;

for (top=0; top< num-1; top++)

for(seek=top+1; seek< num; seek++)

if(strcmp(strings[top], strings[seek])> 0)

{temp=strings[top];

strings[top]=strings[seek];

strings[seek]=temp;

}

return(0);

} // конец функции ststr

Можно осуществить обмен с помощью поразрядной операции.

*strings[i]^ = * strings[j]^ =* strings[I]^ =*strings[j]^;

Рассмотрим пример вычисления арифметического выражения, представленного строкой символов. Вводится строка символов арифметического действия типа 2+4, надо преобразовать в числа и вычислить.

//sim_arif.cpp

#include< stdio.h>

#include< string.h>

#include< iostream.h>

#include< stdlib.h>

#define N 7

void main()

{

char input[N]; //массив для хранения строки 8-5

char *ptr, *ptr1, *ptr2; //указатели на символы

const char gn[4]={'+', '-', '*', '/'}; //массив арифм. операций

int i, res;

printf(" введите строку\n");

gets(input);

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

{

ptr1=strchr(input, gn[i]); //ф-ия возвращает указ. на первое

if (ptr1! =NULL) //вхождение символа в строку или 0

ptr2=ptr1;

}

cout< < ptr2< < endl; //проверка

cout< < *(ptr2-1)< < *ptr2< < *(ptr2+1)< < endl; //печать выражения

switch(*ptr2) //вычисление результата в

{ //зависимости от операции

case '+': res=atoi(ptr2-1)+atoi(ptr2+1);

break;

case '-': res=atoi(ptr2-1)-atoi(ptr2+1);

break;

case '*': res=atoi(ptr2-1)*atoi(ptr2+1);

break;

case '/': res=atoi(ptr2-1)/atoi(ptr2+1);

break;

}

cout< < atoi(ptr2-1)< < " ЗНАК " < < atoi(ptr2+1)< < endl;

cout< < res;

}

Пример: В каждом элементе массива строк перечислены через пробелы названия предпрятия, фонд заработной платы, количество работающих на предприятии людей, например: “IBM 400 80”. Приписать к каждому элементу среднюю заработную плату.

Для решения этой задачи необходимы следующие функции:

strrchr –поиск в строке последнего вхождения заданного символа, возвращает указатель.

strchr – поиск в строке первого вхождения заданного символа, возвращает указатель.

strncpy –копирует заданное число байтов из одной строки в другую

strncat –добавляет часть одной строки к другой, последний параметр –целое.

#include < stdlib.h>

#include< stdio.h>

#include< iostream.h>

#include< string.h>

#idefine SIZE 30

#idefine LIM 2

void main()

{

char input[LIM][SIZE]; // исходный массив строк

char s[LIM] ][SIZE], f[LIM][SIZE]; //симв. массивы

int p[LIM]; // массив для средней зараб. платы

int ct=0;

char *ptr1, *ptr2; // указатель на символьную переменную

printf(“введите строку\n”);

printf(“После ввода нажмите enter\n”);

while(ct< LIM)

{

gets(input[ct]); // ввод очередной строки массива

ptr1=strrchr(input[ct], ’ ‘); // функция ищет последний пробел

ptr2=strchr(input[ct], ’ ‘); // функция ищет первый пробел

strncpy(s[ct], (ptr2+1), ptr1-ptr2-1); // копирует в символьный массив s часть строки между двумя пробелами

p[ct]=atoi(s[ct]/atoi(ptr1+1); // находим среднюю зараб. плату

itoa(p[ct], f[ct], 10);

strncat(input[ct], ” “, 1);

strncat(input[ct], f[ct], strlen(f[ct])); // присоединяем среднюю зар. плату

cout< < ””< < input[ct]< < endl;

ct++;

}//конец цикла

}// конец main


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.009 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал