Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Вызов стандартных функций сортировки и поиска




Функция qsort выполняют сортировку массива, элементы которого имеют произвольный тип. Эта функция реализует «быстрый алгоритм» сортировки массивов и имеет следующий прототип:

void qsort(void *base, size_t n, size_t size, int (*cmp) (const void *e1, const void *e2));

который описан в заголовочном файле stdlib.h. Кратко опишем назначение параметров этой функции:

base адрес массива,

n количество элементов в массиве,

size длина элемента массива,

cmp указатель на функцию сравнения, которая возвращает:

отрицательное число, если элемент e1 меньше элемента e2;

0, если элемент e1 равен элементу e2;

положительное число, если элемент e1 больше элемента e2.

 

/* функция для сравнения элементов массива */

int comp_int(const int* e1, const int* e2)

{

return (*e1-*e2);

}

 

Функция bsearch выполняет бинарный поиск элемента в отсортированном массиве. Эта функция имеет следующий прототип:

void* bsearch(const void *key, const void *base,

size_t n, size_t size, int (*cmp)(const void *ck, const void *ce);

который также описан в заголовочном файле stdlib.h. Первый параметр key этой функции является указателем на элемент, который нужно найти. Остальные параметры повторяют параметры функции qsort. В случае успешного завершения поиска функция bsearch возвращает адрес найденного элемента, а в случае неудачи NULL.

 

/* функция для сравнения элементов массива */

int comp_int(const int* e1, const int* e2)

{

return (*e1-*e2);

}

 

Перевод чисел из одной системы счисления в другую.

Программа переводит целое число из десятичной системы счисления в систему счисления с другим основанием(от двоичной до шестнадцатеричной)

с точностью до десяти знаков после запятой.

#include <stdio.h>

#include <math.h>

void Revers(char *a,int n)

{
int k;


// Переворачивание элементов массива


for (int i=0;i<n/2;i++)

{
k=a[i];

a[i]=a[n-i-1];

a[n-i-1]=k;

}

}

 

void Psystem(double re, int si,char s[],int *n)

{
int r,i,z=0;

double dre;

unsigned char c_c[]="0123456789abcdef";

double y=modf(re,&dre);

int x=dre;

i=0;
while (x>=si)

{ r=x % si;

x=x / si;

s[i]=c_c[r];

i++; }

s[i++]=c_c[x];

Revers(s,i);
if (y!=0)

{ s[i++]='.';z=0;

do
{ re=modf(re,&dre);

re = re*si;

int j=re;

s[i++]=c_c[j];

z=z+1;

}

while (re!=0 && z!=10);

} *n=i;}

 

void main(void)

{

double re,dre;

int si,n;

char s[100];

printf("Введите основание системы (2..16):");

scanf("%d",&si);

printf("Введите число: ");

scanf("%lf",&re);

Psystem(re,si,s,&n);

PrintArray (s,n);


}

 

14 В Си++ различают символьные и строковые константы и переменные.

Символьная константа – это символ в одинарных кавычках. Она имеет тип char.

Строковая константа – это последовательность символов кода ASCII, заключённая: "...". Она имеет тип char[].

Определение и инициализация строк.

Строкой называется массив символов, который заканчивается символом '\0' (нулевой байт).

Поэтому строка объявляется как обычный символьный массив:

char *str;

char str[10];

Этот вид инициализации является краткой формой стандартной инициализации массива

char str[]={‘T’,’g’,’\0’};

Без символа 0 мы имеем массив символов, а не строку.

Как и для других массивов, имя str является указателем на первый элемент массива:

str == &str[0], *str == 'T', и *(str+1) == str[1] == 'h'

 

 

char heart[ ] = "Программирование на языке Cи++";

char *head = "Программирование на языке Pascal";

Основное отличие состоит в том, что указатель heart является константой, в то время как указатель head - переменной.

В том и в другом случае можно использовать операцию сложения с указателем.

 

Указатели и строки

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

 

 

Для ввода строки с консоли служит функция

char* gets(char *str);

Символ перехода на новую строку не копируется. В конец прочитанной строки помещается нулевой байт. В случае успеха функция возвращает указатель на прочитанную строку, а в случае неудачи NULL.





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


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 596 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лучшая месть – огромный успех. © Фрэнк Синатра
==> читать все изречения...

2257 - | 2143 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.