С, С++

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра САПР Звіт до лабораторної роботи №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:32

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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