Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Математические функции. ⇐ ПредыдущаяСтр 2 из 2
Прототипы математических функций описаны в заголовочном файле 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
|