- •Загальні положення ...………………………………………………………….........3
- •Загальні положення
- •1 Організація введення і виведення даних та розв’язання задач з простою змінною
- •1.1 Мета роботи
- •1.2 Вказівки до організації самостійної роботи студентів
- •1.2.1 Використання операторів введення
- •#Define sp " "
- •Int main ( )
- •Int main ( )
- •Int main ( )
- •Void main ( )
- •For ( [ вир1 ]; [ вир2] ;[ вир3 ] ) оператор;,
- •Void main ( )
- •Void main ( )
- •1.5 Контрольні питання
- •1.6 Варіанти індивідуальних завдань
- •2 Розв’язання задач c використанням одновимірних і двовимірних масивів
- •2.1 Ціль роботи Прищепити студентам навички розв’язання задач з використанням одновимірних і двовимірних масивів, складних циклів і використання покажчиків.
- •2.2 Методичні рекомендації з організації самостійної роботи студентів
- •Void main( )
- •Void main ( )
- •Void main ( )
- •Void main ( )
- •2.3 Використання покажчиків
- •Наиведемо програму з використанням покажчиків:
- •Int main ( )
- •Void main ( void )
- •2.4 Використання масивів і покажчиків
- •Приклад 2.4 Обчислити середнє значення додатних елементів одновимірного масиву.
- •Int *pmas;
- •2.5 Масиви покажчиків
- •Void main( )
- •2.6 Контрольні питання
- •2.7. Варіанти індивідуальних завдань
- •3 Вирішування задач з використанням даних символьного типу
- •3.2.1 Організація символьного введення - виведення
- •Device . Get (char_var);
- •3.2.2 Рядки як символьні масиви
- •3.2.3 Введення-виведення символьних масивів
- •Void main (void)
- •3.2.4 Основні функції обробки символьних типів
- •Void main (void)
- •Void del (char *st, int k, int n);
- •Void del(char *st, int, int);
- •Void main()
- •Void del(char *st,int k,int n)
- •[ Проміжки ] [знак числа] [ цифри].
- •Void main( )
- •Void main()
- •Void main()
- •Void main(void)
- •3.2 Контрольні питання і завдання
- •3.4 Варіанти індивідуальних завдань
- •4 Вирішувння задач з використанням даних типу структура
- •4.1 Ціль роботи Освоєння заходів розробки і налагодження програм з використанням
- •4.2 Методичні рекомендації з організації самостійної
- •Void main(void)
- •Void qsort (void *base , n , width,
- •Int (*fcmp) ( const void *elem1, const void *elem2) .
- •4.3 Контрольні питання
- •4.4. Індивідуальні завдання
- •5 Використання функцій при розробці програм
- •5.1 Ціль роботи
- •5.2 Методичні вказівки з організації самостійної роботи студентів
- •Void fun ( int p)
- •Void main ( )
- •Void fun (int &р)
- •Void main ( )
- •Void fun2 (int *p)
- •Void main ( )
- •Int main ( )
- •5.2.1 Використання покажчиків на функцію
- •Void main ( )
- •Int god ( const void*, const void * ) ;
- •5.2.2 Використання масивів - параметрів функцій
- •Void fun2 ( int mat [ ] [10], int rows, int cols );
- •Int getnum (const char *elemtype , int low , int high )
- •Int main ( )
- •5.2.4 Звертання до функції і передача результату
- •Int main ( )
- •5.2.5 Перевантаження функцій
- •Int main ( )
- •5.3 Контрольні питання
- •5.4 Варіанти індивідуальних завдань
- •6 Робота з файлами
- •6.1 Ціль роботи
- •6.2 Методичні вказівки по організації самостійної роботи
- •Int main ( )
- •Int main ( )
- •Void main ( )
- •Перелік посілань
- •Навчальне видання
- •61726 Харків, просп. Леніна, 14.
Void main (void)
{
char *tk, *spt =", .!";
char st[] = "Сашко, нехай завжди буде солнце!";
cout << st << endl;
int i = 1;
tk = strtok (st, spt);
while (tk!= NULL)
{
cout << i << " слово-" << tk << " містить " <<
strlen(tk) << "символів" << endl;
tk = strtok (NULL,spt);
i++;
}
}
Для видалення з рядка підрядка або символу з заданої позиції в мові С++ немає спеціальної функції, однак можна написати свою, наприклад:
Void del (char *st, int k, int n);
{ int i;
for ( i = k; i < strlen(st)-n; i++)
st[i] = st [i +n ];
st [i] ='\0'; // Запис '\0' у кінець нового рядка
}
де st вихідний рядок (покажчик на неї);
n кількість символів у підрядку що видаляється ;
k позиція, з якої треба видалити підрядок.
Нижче наведений приклад, що ілюструє реалізацію цієї програми
Приклад 3.5 Скласти програму видалення підрядка в n символів з k - ой позиції в рядку.
//P3_5.CPP видалення підрядка
#include < iostream>
using namespace std;
#include <string.h>
const int n = 50;
const int m = 5;
Void del(char *st, int, int);
Void main()
{
char st [n], st1 [m];
cout << "Введіть рядок"<< endl;
cin. getline(st,n);
cout << "Введіть підрядок"<< endl;
cin >> st1;
if(strstr (st,st1)!=NULL)
{
del(st, strstr (st,st1) - st, strlen ( st1) );
cout << st << endl;
}
}
Void del(char *st,int k,int n)
{
int i;
for( i = k ; i < strlen ( st )-n; i++)
st[i] = st[i+n];
st[i] = '\0';
}
void* memchr (const void *st, int s ,int n); функція шукає символ "s" у рядку *st довжиною n байт, тобто в блоці пам'яті, на який указує покажчик st. Якщо символ s знайдений, функція повертає покажчик на цей символ, у противному випадку повертає NULL.
void* memcmp (const void *st, const void * s , n); і
void* memicmp (const void *st, const void * s ,int count); функції порівнюють n байт із двох буферів на її початок яких указують s1 і s2.
Функція повертає значення
< 0 якщо s1 < s2;
=0 якщо s1 = s2;
>0 якщо s1 > s2;
char *strset (char *st, int ch); функція заповнює рядок st символом ch і повертає покажчик на отриманий рядок.
Функції перетворення рядків у числа і чисел у рядки
Ці функції знаходяться у файлі <stdlib.h>
int atoi (const char *s); перетворить рядок s у число типу int. Повертається отримане число.Число 0, якщо зустрінеться символ, що не може бути перетворений. Рядок повинний містити коректне число, наприклад "2345", і мати наступну структуру:
[ Проміжки ] [знак числа] [ цифри].
long atol (const char *s); перетворить рядок s у число типу long int (аналогічна функції atoi.)
double atof (const char *s); перетворить рядок символів у дійсне число double. Якщо при перетворенні зустрічається символ, що не може бути перетворена функція повертає 0.
Оброблюваний рядок повинний мати структуру:
[проміжки] [знак числа] [цифра. цифра] [літера е,Е,d або D] [знак порядку] [цифри порядку], наприклад ”-12345.123 ” або ”-12. 345123 Е3 ”
char *ecvt (double vl, int n, int *dec, int *sign ); перетворить число vl у рядок символів, кількість яких дорівнює n символів цифр. Положення десяткової крапки від першої цифри числа повертається в змінній, на яку вказує dec. Знак числа повертається в змінну на який указує sign. Якщо sign = 0 число додатнє, інакше від’ємне. Отриманий рядок зберігається у внутрішній пам'яті функції, покажчик повертається на початок сформованого рядка.
сhar *fcvt (double vl, int n, int *dec, int *sign ); аналогічна попередній функції, але для ecvt - параметр dec задають загальна кількість цифр, то для fcvt - кількість цифр після десяткової крапки.
сhar *gcvt (double vl, int n, сhar *buf); перетворить число vl у рядок, що поміщає в буфер, покажчик на початок якого є buf, n число цифр у символічному записі перетвореного числа. Отриманий рядок містить символ знака числа і десяткової крапки, якщо число містить менше десяткових цифр, ніж n. У цьому випадку молодша цифра дробової частини відкидається. Якщо перетворене число не міститься в задану кількість цифр n, функція генерує символьний запис в експонентній формі, включаючи в рядок символ Е и знак порядку. Функція повертає покажчик на початок сформованого рядка.
strlen (st) - повертає довжину st без нуль - термінатора '\0'.
Функції перевірки символів
Ці функції знаходяться у файлі <ctype.h>:
isgraph (s) повертає значення ”істина” тобто не нуль, якщо s є друкованим символом і “неістина ” (тобто 0) , якщо s є проміжком або яким - небудь не відображуваним символом.
isprint (s) повертає значення ”істина” тобто не нуль , якщо s є друкованим символом, включаючи проміжок і ”неістина” (тобто 0) у всіх інших випадках.
ispunct (s) повертає значення "істина" тобто не нуль , якщо s є знаком пунктуації(будь-який друкований символ крім проміжку і “неістина” (тобто 0) в інших випадках.
isdigit (s) повертає значення "істина" тобто не нуль , якщо s є цифрою від 0 до 9 і “неістина” (тобто 0) в інших випадках.
isalnum (s) повертає значення "істина", тобто не нуль, якщо s є цифрою або літерою (заголовною або строковою ) і “неістина” (тобто 0) у всіх інших випадках (тобто перевіряє алфавітні і цифрові символи).,
tolower (s) перетворить символ s до нижнього регістра;
toupper (s) перетворить символ s до верхнього регістра;
atoi (s) перетворить рядок s до ціле число;
atol (s) перетворить рядок s до довгого цілого;
atof (s) перетворить рядок s до числа з крапкою.
Розглянемо ряд прикладів з використанням строкових функцій .
Приклад 3.5 Ввести список прізвищ (рядків) і відсортувати його за алфавитом.
//P3_5.CPP сортування списку прізвищ за алфавитом
#include <string.h>
#include < iostream>
using namespace std;