Программирование >>  Процедурные приложения 

1 ... 39 40 41 [ 42 ] 43 44 45 ... 150


int i;

float fpartial;

fpartial = farray[0]; for (1 = 1; i < 7; i++) fpartial *= farray[i]; return (fpartial); }

Значение первого элемента массива присваивается переменной fpartial еще до начала цикла for. Вот почему цикл начинается с индекса 1, а не 0.

Тип результата: double

В следующем примере функция dtrigcosine() находит значение косинуса угла, заданного в градусах.

* doublef.c

* Эта программа на языке С последовательно находит косинусы углов

* от 0 до 90 градусов с интервалом в пять градусов.

#include <stdio.h> #include <math.h>

const double dPi = 3.1415 92 6535 9; double dtrigcosine(double dangle); int main() { int j;

double dcosine;

for(j= 0; j < 91;j+=5) {>

dcosine = dtrigcosine((double) j);

printf( Косинус угла%d градусов равен%.3f\n ,j, dcosine); }

return(0);}

double dtrigcosine(double dangle) { double dpartial;

dpartial = cos((dPi/180.0) * dangle); return(dpartial);}

Для вычисления косинуса в функции dtrigcosine() вызывается стандартная функция cos(),объявленная в файле МАТН.Н. Но предварительно необходимо преобразовать величину угла из градусов в радианы. Для этого параметр dangleделится на 180 градусов и умножается на число пи, заданное в программе как константа dpi.

Аргументы командной строки

В языках C/C++ имеются средства ввода данных посредством командной строки. Аргументами командной строки называются числовые или строковые значения, которые указываются пользователем вслед за именем приложения при запуске его из командной строки. Подобный механизм позволяет передавать программе информацию, избегая выдачи всевозможных подсказок и приглашений. Вот синтаксис командной строки:

имя программы аргумент1, аргумент2 ...

Аргументы командной строки обрабатываются в функции main(),котoрая принимает два параметра: argc и argv[ ]. Целочисленный параметр а где содержит число аргументов командной строки плюс 1 - с учетом имени программы, которое, в принципе, тоже является аргументом. Вторым параметром является указатель на массив строковых указателей. Все аргументы представляют собой строки, поэтому массив argv[ ] имеет тип char*. Имена параметров - argc и argv- не являются стандартными элементами языка, но называть их именно так - общепринятое соглашение, широко применяемое большинством программистов

на C/C++.

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

Текстовые аргументы



Аргументы, задаваемые в командной строке, всегда передаются в программу в виде наборов символов, что облегчает работу с ними. В следующей программе на языке С от пользователя ожидается ввод в командной строке ряда аргументов. При запуске программы проверяется значение параметра argc. Если оно меньше двух, то пользователю будет предложено перезапустить программу.

* sargv.c

* Эта программа на языке С демонстрирует процесс

* считывания строковых аргументов командной строки.

#include <stdio.h>

#include <process.h>

int main(int argc, char *argv[]) {

int t;

if(argc < 2) {

printf( Необходимо ввести несколько аргументов командной строки.\п ); printf( Повторите запуск программы.\n );

exit (1);

forft =1;t < argc; t++)

. printf( Аргумент№%d - %s\n , t, argv[t] );

exit(0);

Все аргументы, введенные в командной строке, выводятся на экран в той же последовательности. Если были введены числовые значения, они все равно будут рассматриваться как ASCII-символы.

Целочисленные аргументы

Часто в командной строке нужно указывать числовые значения. В таком случае необходимо выполнить преобразование строк в числа. Следующая программа на языке C++ читает из командной строки символьный аргумент и преобразовывает его в целое число с помощью стандартной функции atoi(). Полученное число сохраняется в переменной ivalueи передается в функцию vbinary(), которая выводит его двоичный эквивалент. В функции main() отображаются также восьмеричный и шестнадцатеричный эквиваленты числа.

iargv.cpp

Эта программа на языке C++ преобразует аргумент

командной строки в целое число.

#include <iostream.h>

#include <stdlib.h>

void vbinary (int idigits);

int main (int argc, char *argv[]) {

int ivalue;

if (argc != 2) {

cout<< Введите в командной строке целое число. \n ; cout<< Это число будет преобразовано в двоичный, \n cout<< восьмеричный и шестнадцатеричный форматы . \n ; return (0);

ivalue = atoi(argv[1]); vbinary(ivalue) ;

cout << В восьмеричном формате: << oct << ivalue << \n ;

cout << В шестнадцатеричном формате: << hex<< ivalue << \n

return(0) ; }

void vbinary (int idigits)



int t = 0; int iyourarray[50]; while(idigits != 0) { iyourarray[t]= (idigits % 2); idigits /= 2;

t++; }

t- ;

cout<< В двоичном формате: ; for(; t >= 0; t-)

cout << dec << iyourarray[t] ; cout << \n ; }

Функция vbinary() и алгоритм нахождения двоичной формы числа уже были рассмотрены нами, только на примере языка С. Здесь же интересно проанализировать, как происходит преобразование числа в восьмеричную и шестнадцатеричную формы.

Для вывода числа в восьмеричном формате используется следующая запись:

cout<< В восьмеричном формате: << oct << ivalue << \n ;

Чтобы вывести то же число в шестнадцатеричном формате, достаточно просто поменять флаг oкна флаг hex:

cout<< В шестнадцатеричном формате: << hex << ivalue << \n ;

При отсутствии дополнительного форматирования шестнадцатеричные цифры а, b, с, d, e и f будут отображаться в нижнем регистре. Более подробно о средствах форматирования, используемых в языке C++, рассказано в главе Основы ввода-вывода в языке C++ . Среди прочего в ней объясняется, как управлять выводом шестнадцатиричных цифр в верхнем и нижнем регистре.

Аргументы с плавающей запятой

Следующая программа на языке С принимает в командной строке несколько значений углов в градусах. Полученные данные используются для вычисления косинусов.

* fargv.c

* Эта программа на языке С демонстрирует процесс считывания аргументов

* командной строки с плавающей запятой.

#include <stdio.h> #include <math.h> #include <process.h>

const double dPi = 3.14159265359;

int main(int argc, char *argv[]) {

int t;

double ddegree; if(argc< 2) {

printf( Введите в командной строке значения углов в градусах.\n ) , printf( Программа вгчислит косинусы углов.\n ),

exit(l);

for(t= 1; t < argc; t++) { ddegree = atof<argv[t]);

printf( Косинус угла %f равен %.3f\n , ddegree,

cos((dPi/180.0) * ddegree)); )

exit(0);

Функция atof() преобразовывает строковые значения в значения типа double. Для вычисления косинуса используется библиотечная функция cos().



1 ... 39 40 41 [ 42 ] 43 44 45 ... 150

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика