С, С++

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Алгоритмічні мови та програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра САПР Звіт до лабораторної роботи №5 на тему «МАСИВИ СИМВОЛІВ (РЯДКИ) В МОВІ ПРОГРАМУВАННЯ С» з курсу «Проблемно-орієнтовані мови програмування» ЛЬВІВ 2011 Мета роботи Навчитися використовувати символьні масиви для розв’язання задач роботи зі стрічками. Теоретичні відомості На відміну від інших мов програмування у C не визначено спеціального типу для опрацювання рядків. Масив символів (чи рядок або стрічка) розглядається як масив елементів типу char, який закінчується символом '\0' (нуль-символ) що є ознакою кінця рядка. Такі рядки називають ASCII-рядками. Сталі типу рядок записують у лапках, наприклад, "Львівська політехніка", "студенти", “ “ - рядок, що містить один символ-пропуск. У сталих рядках нуль-символ дописується автоматично. Під час оголошення символьного масиву необхідно до фактичної довжини рядка додати одиницю для нульового символу (але не у всіх компіляторах). Якщо масив символів оголошують й ініціалізують одночасно, то довжину можна не зазначати, компілятор визначить її. Оскільки рядки є масивами символів, то назва рядка є вказівником на його перший елемент (на перший символ). У бібліотеці conio.h визначені стандартні функції введення-виведення рядків. Наприклад, getc ( ), getchar ( ) зчитують по одному символу рядка, введеного з клавіатури, putc ( ) та putchar ( ) виводять окремі символи рядка тощо. У бібліотеці stdio.h описані функції для введення gets ( ) та виведення puts ( ) усього рядка. Детальніше про ці та інші функції написано у довідниках. Для опрацювання масивів символів у мові C є стандартні функції, які описані у модулі string.h. Розглянемо деякі з них: strlen(<рядок>) - визначає фактичну кількість символів у рядку, застосовується у виразах; strcat(r1, r2) - команда з'єднання рядків ґі, г2 в один рядок, результат присвоює змінній r1; strncat(r1, r2, п) - до змінної г1 додає перших n символів рядка г2, strcpy(r1, r2) - копіює символи з рядка г2 в рядок г1, strncpy(r1, r2, n) - копіює перших n символів рядка г2 в рядок г1, strchr(r1, <символ>) - визначає перше входження деякого символу у рядок г1 так: повертає рядок, який починається від першого входження заданого символу до кінця рядка М, застосовується у виразах; strrchr(r1, <символ>) - визначає останнє входження заданого символу у рядок, застосовується у виразах; strspn(r1, r2) - визначає номер першого символу, який входить у рядок г1, але не входить у рядок г2, застосовується у виразах; strstr(r1, r2) - визначає в рядку г1 підрядок, що починається з першого входження рядка г2 у рядок ґі, застосовується у виразах; strtok(r1, r2) - визначає частину рядка г1, яка закінчується перед першим однаковим символом рядків r1 та г2; strnset(r1, <символ>, n) - вставляє n разів заданий символ перед рядком г1, застосовується у виразах; strupr(r1) - перетворює усі малі літери рядка у великі; strlwr(rl) - перетворює усі великі літери рядка у малі; strrev(rl) - записує рядок у зворотному порядку. Текстові функції застосовуються для розв'язування задач кодування даних з метою збереження секретності інформації. Існує наука - криптографія, де вивчаються і створюються різні алгоритми кодування інформації. Основні задачі криптографії - це шифрування тексту, передача його на відстань і дешифрування. Це використовується у банківських справах, у воєнних цілях, у діяльності різних фірм, під час пересилання інформації в локальних чи глобальних мережах тощо. Давньоримський імператор Цезар кодував свої секретні вказівки так: кожна літера тексту замінювалась на четверту після неї літеру з алфавіту. Такий шифр називається в криптографії шифром зі сталим зміщенням (тут 4), або шифром з одним ключем. Задача 4 (про шифр Цезаря). Скласти програму для кодування деякого тексту до 50 символів шифром Цезаря, замінивши кожну літеру на k-ту (наприклад, четверту) після неї літеру з алфавіту. Під алфавітом розуміти таблицю кодів ASCII. Індивідуальне завдання Ввести прізвище, ім'я та по батькові як одне текстове дане. Визначити довжину даного і кількість букв "а" у ньому. Розв'язати задачу відповідно до вашого варіанта двома способами: а) використовуючи функції з бібліотеки string.h; б) розглядаючи введений текст як масив символів. 6. Вивести ім'я та кількість букв у прізвищі. Текст програми а) #include <stdio.h> #include <conio.h> #include <string.h> #define N 60 main () { char str[N]; char n,s,f; char* words[3]; int i,K=0,count=0,b; printf("ENTER surname, name and fathername \n\n"); gets(str); printf("\n\n Dovgyna vvedenoho ryadka: %d",strlen(str)); char* word=strtok(str," "); while(word&&count<3) { words[count++]=word; word=strtok(NULL," "); } for(b=0; b<3; b++) { for(i=0;i<strlen(words[b]);i++) if(words[b][i]=='a') K++; } printf("\n\n Kil'kist bukv a v ryadku = %d", K); printf("\n\n Kilk. bukv u prizvishchi= %d \n",strlen(words[0])); printf("\nDruge slovo (name) \n\n"); printf("%s",words[1]); getch (); return 0; } б) #include <stdio.h> #include <conio.h> #define N 60 main () { char str[N]; char n,s,f; int i,K,a,b,q,v,p; printf("ENTER surname, name and fathername \n\n"); for (i=0,K=0;str[i-1]!='.';i++,K++) { str[i]=getch(); printf("%c",str[i]); } K=K-1; printf("\n\n Dovgyna vvedenoho ryadka: %d", K); for(i=0,a=0;i<K;i++) if((str[i]=='a') | (str[i]=='A')) a++; printf("\n\n Kil'kist bukv a v ryadku = %d", a); b=0; for(i=0;str[i-1]!=' ';i++) b++; b=b-1; printf("\n\n Kilk. bukv u prizvishchi= %d \n",b); for(i=0,q=0;str[i-1]!='.';i++) { if(str[i]==' ') { q=q+1; if(q==1) v=i; if(q==2) { p=i; break; } } } printf("\nDruge slovo (name) \n\n"); for(i=v+1;i<p;i++) printf("%c",str[i]); getch (); return 0; } Результати обчислень  Висновок: Я навчився використовувати символьні масиви для розв’язання задач роботи зі стрічками.
Антиботан аватар за замовчуванням

29.05.2013 13:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!