русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


ЛАБОРАТОРНА РОБОТА № 4


Дата додавання: 2014-11-28; переглядів: 754.


РОБОТА З РЯДКАМИ|

Мета. Отримати тримати практичні навички навички роботи з рядками на С++.

Короткі теоретичні відомості

У С/С++ рядок символів розглядають|розглядується| як звичайний|звичний| масив символів, в якому останнім йде|прямує| символ закінчення рядка ‘\0’ . При цьому довжина масиву визначається на одиницю більше ніж довжина реального рядка.

Функції оброблення рядків описано|перебувають| у модулі string.h. (основні з|із| них див. у додатку А)|посібнику|.

Слід зазначити, що рядок можна розглядати як єдине ціле, а можна використовувати як звичайний масив символів. У останньому випадку необхідно враховувати, що будь - який рядок має завершуватися нульовим символом. Усі функції модуля string.h ураховують останній нульовий символ рядка автоматично.

Наприклад. Необхідно ввести|запровадити| послідовність рядків довільної довжини і вивести їх на екран.

#include<iostream.h>

#include<string.h>

#include<conio.h>//містить прототипи функцій clrscr() і getch()

#include<process.h>//містить прототип функції exit()

 

void main()

{ clrscr();

char* str_temp=new char[255]; /* визначаємо буферний рядок, який може містити максимальну кількість символів */

char** m_str;

int i,j,n;

cout<<"\n Уведіть кількість рядків ";

cin>>n;

m_str=new char*[n]; /* розподіляємо пам'ять під зберігання адреси кожного

рядка, що вводять|запроваджується|. Якщо оператор new повертає як адресу NULL, то повідомляємо користувача про помилку і припиняємо роботу функції main() */

if(!m_str){ cerr<<"\n Помилка під час розподілу пам’яті";

exit(1);}

cin.ignore(); /* функція-член класу cin, яка ігнорує за умовчанням код символа “Enter”, який було натиснуто під час уведення кількості рядків. Функція має два параметри (int, char) – кількість символів ігнорування і символ, який стоїть у кінці|у кінці,наприкінці| цієї послідовності */

for(i=0;i<n;i++)

{ cout<<"\n Уведіть "<<i+1<<"-ий рядок ";

cin.getline(str_temp,255); /* функція-член класу cin, яка дозволяє занести

символи з вхідного потоку до змінної str_temp. Другий параметр визначає максимальну довжину рядка.*/

m_str[i]=new char[strlen(str_temp)+1]; /* розподіляємо пам'ять під зберігання рядка, що вводиться|запроваджується| за допомогою буферного рядка. Оскільки функція strlen() визначає довжину рядка без урахування символа нуля, то додаємо|добавляємо| 1 до реального значення довжини рядка, резервуючи місце для символа завершення рядка */

if(!m_str[i]){ cerr<<"\n Помилка під час розподілу пам’яті ";

exit(1);}

strcpy(m_str[i],str_temp);}

delete[] str_temp; // звільняємо пам’ять, яку було зайнято буферним рядком

cout<<"\n Масив рядків, який введено\n";

for(i=0;i<n;i++)

{ cout<<m_str[i]<<endl; //виводимо рядок на екран

delete[] m_str[i];} /* звільняємо пам’ять, яка була зайнята під рядок, що виведено на екран */.

delete[] m_str; /*звільняємо пам’ять, яку було зарезервовано під зберігання масиву адрес рядків */

getch();

}


<== попередня лекція | наступна лекція ==>
Варіанти завдань до лабораторної роботи №3 | Приклад виконання лабораторної роботи №4


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн