|
Программирование >> Процедурные приложения
faverage = fsum/iv; cout << \nСреднее равно << faverage << \n ; Тип результата: void Поскольку с функциями, возвращающими значения типа void, мы уже познакомились, рассмотрим чуть более сложный пример. Как вы знаете, в C/C++ можно выводить числовую информацию в шестнадцатеричном, десятичном и восьмеричном формате, но не в двоичном. В следующей программе функция vbinary() преобразовывает полученное десятичное значение в двоичную форму и выводит его на экран. Цифры, составляющие двоичное число, не объединены в единое значение, а представляют собой массив данных. * voidf.c * Эта программа на языке С находит двоичный эквивалент заданного * десятичного числа. #include <stdio.h> void vbinary(int idata) ; int main () int ivalue; printf ( Введите десятичное число: ); scanf( %d ,Sivalue) ; vbinary (ivalue); return (0); } void vbinary (int idata) int t = 0; int iyourarray [50]; while (idata != 0) { iyourarray [t]= (idata % 2); idata /= 2; t++; ) printf( \n ); for( ; t >= 0; t-- ) printf( %d ,iyourarray[t]); } Преобразование числа в систему счисления более низкого порядка реализуется довольно простым математическим алгоритмом. Например, чтобы перевести десятичное число в двоичную систему, нужно разделить его на основание новой системы - 2 - максимально возможное количество раз. На каждом шаге результатом деления будет дробное число, состоящее из целой части и остатка. Целая часть используется для следующего деления на 2, а остаток определяет цифру двоичного числа в позиции, соответствующей номеру шага. В двоичной системе используются цифры 0 и 1. В функции vbinary() этот алгоритм реализуется в цикле while. В результате операции деления по модулю (%) остаток от деления (0 или 1) заносится в массив iyourarray[]. Целая часть, полученная при делении, присваивается переменной idata. Этот процесс продолжается до тех пор, пока целая часть результата деления (переменная idata) не станет равной нулю. Тип результата: char В следующей программе на языке С функция clowercase() принимает аргумент типа charи возвращает значение такого же типа. Предполагается, что вводится буква в верхнем регистре. В функции clowercase() вызывается библиотечная функция tolower(), прототип которой находится в файле CTYPE.H, она переводит символ в нижний регистр. * charf.c * Эта программа на языке С преобразует символ из верхнего регистра в нижний. #include <stdio.h> #include <ctype.h> char clowercase(char c) ; int main () { char clowchar, chichar; printf( Введите букву в верхнем регистре. \n ); chichar = getchar(); clowchar = clowercase(chichar); printf( %c\n ,clowchar); return(0); char clowercase(char c) { return(tolower(c)); Тип результата: bool Ниже дан пример использования двух функций, is upper() и is lower(), которые возвращают значения типа bool, проверяя, представлен ли переданный им символ в верхнем или нижнем регистре соответственно. Этот тип данных специфичен для языка C++. boolf.cpp Эта программа на языке C++ демонстрирует возможность возвращения функциями значений типа bool. #include <iostream.h> bool is upper(void) ; bool is lower(void) ; int main () { char cTestChar = T; bool bIsUppercase, bIsLowercase; bIsUppercase = is upper (cTestChar) ; bIsLowercase = is lower(cTestChar); cout << Буква << (blsUppercase ? является : не является << прописной.\n ; cout<< Буква << {bIsLowercase? является : не является ) << строчной.\п ; return(0); } bool is upper(int ch) { return(ch>= A&& ch <= Z); } bool is lower(int ch) { return(ch >= a&& ch <= z); } В этой программе для выбора выводимого сообщения применяется оператор ?:, что позволяет каждую операцию вывода записать в одну строку и не использовать многострочную инструкцию if /else. Тип результата: int В следующем примере функция icube() принимает целое число, возводит его в куб и возвращает результат тоже в виде целого числа. * intf.c * Эта программа на языке С возводит целое число в куб. #include <stdio.h> int icube(int ivalue); int n(ain() int k, inumbercube; for(k=0;k < 20;k += 2) { inumbercube = icube(k); printf( Ky6 числа%d равен%d\n ,k, inumbercube) } return(0); int icube(int ivalue) return(ivalue * ivalue * ivalue); Тип результата: long В следующей программе, написанной на языке C++, функция Ipower() получает целочисленный аргумент, возводит число 2 в степень, заданную аргументом, и возвращает значение типа long. longf .cpp Эта программа на языке C++ демонстрирует возможность возвращения функциями значений типа long. Функция Ipower() получает целое число. и возводит 2 в степень, определяемую этим числом. #include <iostream.h> long Ipower(int ivalue); int main() int k; long lanswer; for(k =0;k < 20; k++) { lanswer = Ipower(k); cout<< 2 в степени << k<< равно << ianswer<< \n return(0); } long Ipower(int ivalue) . int t; long Iseed = 1; for(t =0;t < ivalue; t++) Iseed *= 2; return(Iseed); В функции Ipower() используется цикл, повторяющийся заданное число раз, в котором число 2 последовательно умножается само на себя. На практике для этого лучше применять стандартную функцию pow(), объявленную в файле МАТН.Н. Тип результата: float В следующем примере в функцию fproduct () передается массив чисел типа float и возвращается значение того же типа. Данная программа, написанная на языке C++, вычисляет произведение всех элементов массива. floatf.cpp Эта программа на языке C++ демонстрирует возможность возвращения функциями значений типа float. Функция fproductO получает массив данных типа floatи возвращает произведение элементов массива. #include <iostream.h> float fproduct(float farray[]); int main() float fmyarray[7] = (4.3,1.8,6.12,3.19,0.01234,0.1,9876.2}, float fmultiplied; fmultiplied = fproduct(fmyarray) ; cout<< Произведение всех элементов массива равно: << fmultiplied << \n ; return(0); } float fproduct(float farray[])
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.077
При копировании материалов приветствуются ссылки. |