Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторний практикум.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.76 Mб
Скачать

Лабораторна робота №10

Тема роботи: Робота із рядковими та символьними змінними

Мета роботи: Формування навиків роботи із рядковими змінними та розробки алгоритмів їх обробки.

Для виконання роботи необхідно знати:

  • опис рядкових та символьних змінних;

  • функції обробки символьних змінних;

  • функції обробки рядкових змінних;

  • алгоритми обробки рядкових змінних.

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

Рядок - це одномірний масив символів в коді ASCII, що закінчується нульовим символом. Кожний символ рядка можна вибрати по значенню індексу з допомогою оператора циклу, а кінець рядка визначається по значенню '\0'- нульовий стмвол. Наявність нульового символу означає, що кількість комірок масиву повинна бути принаймі на 1 більше, ніж число символів, які необхідно розмістити в пам’яті.

Необхідно розрізняти одиничний символ (символьна змінна), який записується як 'a', 'b' і т.д., та рядок "a", "b" (рядкова змінна). Ряд­ко­ва змінна може бути ініціалізована декількома способами:

  1. Char st[40]

st= "Це рядок";

  1. char st1[]= " Це рядок";

  2. Char st3[100]

gets(st3); // ввід з клавіатури

  1. Char str4[100]

scanf("%s",str4); // ввід з клавіатури

Для вводу-виводу символьних рядків служать наступні функції (заго­ло­вочний файл stdio.h) :

gets()– ввід рядка символів із клавіатури;

scanf()– ввід рядка символів із клавіатури (із форматом %s);

puts()– вивід символьного рядка на екран;

printf()– вивід символьного рядка на екран (із форматом %s).

Для роботи із рядковими змінними служить клас функцій, що зна­ходяться в заго­ловочному файлі string.h (всі вони починаються префіксом str) (див. додаток №8). Для роботи із символьними даними служить клас функцій, що знаходяться в заголовочному файлі ctupe.h (всі вони починаються префіксом is) (див. додаток №9).

Більшість задач обробки рядкових зміних зводяться до аналізу масивів даних з вико­ристанням операторів циклу.

Приклади виконання завдання

Приклад №1

Програма послідовно, в циклі, міняє символи рядка на *, а в кінці роботи виводить довжину символьного рядка.

#include <stdio.h>

#include <conio.h>

#include <windows.h>

Void main()

{

SetConsoleOutputCP(1251);

SetConsoleCP(1251);

// Ініціалізація символьної змінної

char s[]="11001000201044231";

int i=0;

for (i=0;i<strlen(s);i++)

{s[i]='*';printf("%s\n" , s);}

printf("\nДовжина рядка=%i символів",i);

printf("\n");

}

Р езультат роботи програми:

Приклад №2

Програма вставляє заданий із клавіатури символ у вказане місце, зсуваючи всі символи, що стоять лівіше нього на одну позицію. Для вставки використовується окрема функція (insert).

#include <stdio.h>

#include <conio.h>

#include <string.h>

#include <windows.h>

Void insert (char *str, int p, char c)

{

int i;

for (i=strlen(str);i>=p;i--)

str[i+1]=str[i];

str[p]=c;

}

Void main()

{char c,s[100];

int n;

SetConsoleOutputCP(1251);

SetConsoleCP(1251);

puts("Ведіть рядок символів");

gets(s);

puts("Введіть позицію вставки символа");

scanf("%i",&n);

puts("Введіть символ, що буде вставлено");

c=getch();

printf("%c\n",c);