Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Пирамидальная сортировка
Пирамидальная сортировка является первым из рассматриваемых методов, быстродействие которых оценивается как O(n log n)
template< class T >
void downHeap(T a[], long k, long n) { // процедура просеивания следующего элемента // До процедуры: a[k+1]...a[n] - пирамида // После: a[k]...a[n] - пирамида T new_elem; long child; new_elem = a[k]; while(k < = n/2) // пока у a[k] есть дети { child = 2*k; if(child < n & & a[child] < a[child+1]) // выбираем большего сына child++; if(new_elem > = a[child]) break; // иначе a[k] = a[child]; // переносим сына наверх k = child; } a[k] = new_elem; } template< class T > void heapSort(T a[], long size) { long i; T temp; // строим пирамиду for(i = size / 2 - 1; i > = 0; --i) downHeap(a, i, size-1); // теперь a[0]...a[size-1] пирамида for(i=size-1; i > 0; --i) { // меняем первый с последним temp = a[i]; a[i] = a[0]; a[0] = temp; // восстанавливаем пирамидальность a[0]...a[i-1] downHeap(a, 0, i-1); }} 32. Си. Символьные строки: объявление символьных строк
Объявить строку = выделить ей место в памяти и присвоить имя.
char s[80]; //выделяется 80 байт, в строке – «мусор»)
char s1[80] = " abc"; //выделяется 80 байт, занято 4 байта (с учетом '\0')
char qqq[] = «Руслан"; // выделяется 7 байт
(с учетом '\0')
Задача: ввести слово с клавиатуры и заменить все буквы «а» на буквы «б».
main()
{
char q[80];
int i;
printf(" Введите строку\n");
scanf(" %s", q);
i = 0;
while (q[i]! = '\0') {
if (q[i] == 'а') q[i] = 'б';
i ++;
}
printf (" Результат: %s ", q);
}
33. Си. Символьные строки: функции для работы со строками
Таблица 1 — Функции для работы со строками и символами
| Функция
| Пояснение
| strlen(имя_строки)
| определяет длину указанной строки, без учёта нуль-символа
| Копирование строк
| strcpy(s1, s2)
| выполняет побайтное копирование символов из строки s2 в строку s1
| strncpy(s1, s2, n)
| выполняет побайтное копирование n символов из строки s2 в строку s1. возвращает значения s1
| Конкатенация строк
| strcat(s1, s2)
| объединяет строку s2 со строкой s1. Результат сохраняется в s1
| strncat(s1, s2, n)
| объединяет n символов строки s2 со строкой s1. Результат сохраняется в s1
| Сравнение строк
| strcmp(s1, s2)
| сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, > 0 – если s1< s2, < 0 — если s1> s2 С учётом регистра
| strncmp(s1, s2)
| сравнивает n символов строки s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, > 0 – если s1< s2, < 0 — если s1> s2 С учётом регистра
| stricmp(s1, s2)
| сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, > 0 – если s1< s2, < 0 — если s1> s2 Без учёта регистра
| strnicmp(s1, s2)
| сравнивает n символов строки s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, > 0 – если s1< s2, < 0 — если s1> s2 Без учёта регистра
| Обработка символов
| isalnum(c)
| возвращает значение true, если с является буквой или цифрой, и false в других случаях
| isalpha(c)
| возвращает значение true, если с является буквой, и false в других случаях
| isdigit(c)
| возвращает значение true, если с является цифрой, и false в других случаях
| islower(c)
| возвращает значение true, если с является буквой нижнего регистра, и false в других случаях
| isupper(c)
| возвращает значение true, если с является буквой верхнего регистра, и false в других случаях
| isspace(c)
| возвращает значение true, если с является пробелом, и false в других случаях
| toupper(c)
| если символ с, является символом нижнего регистра, то функция возвращает преобразованный символ с в верхнем регистре, иначе символ возвращается без изменений.
| Функции поиска
| strchr(s, c)
| поиск первого вхождения символа св строке s.В случае удачного поиска возвращает указатель на место первого вхождения символа с.Если символ не найден, то возвращается ноль.
| strcspn(s1, s2)
| определяет длину начального сегмента строки s1, содержащего те символы, которые не входят в строку s2
| strspn(s1, s2)
| возвращает длину начального сегмента строки s1, содержащего только те символы, которые входят в строку s2
| strprbk(s1, s2)
| Возвращает указатель первого вхождения любого символа строки s2 в строке s1
| Функции преобразования
| atof(s1)
| преобразует строку s1 в тип double
| atoi(s1)
| преобразует строку s1 в тип int
| atol(s1)
| преобразует строку s1 в тип long int
| Функции стандартной библиотеки ввода/вывода < stdio>
| getchar(с)
| считывает символ ссо стандартного потока ввода, возвращает символ в формате int
| gets(s)
| считывает поток символов со стандартного устройства ввода в строку sдо тех пор, пока не будет нажата клавиша ENTER
|
34. Си. Указатели: описание, инициализация, операции с указателями
|