МІНІСТЕРСТВО ОСВІТИ І НАУКИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра інформаційних
систем та мереж
Лабораторна робота №8
на тему:
Засоби мови Cі для роботи з рядками символів.
Назва роботи:
Засоби мови Cі для роботи з рядками символів.
Мета роботи:
Здобуття практичних навичок опрацювання текстових даних за допомогою бібліотечних функцій мови Сі.
Завдання лабораторної роботи:
Кожне завдання складається із двох варіантів, розміщених у частинах 1 та 2.
Під терміном “речення” слід розуміти послідовність слів, розділених декількома пропусками та знаками пунктуації;
Введення-виведення символьних даних виконувати за допомогою бібліотечних функцій із файла-заголовка stdio.h; використовувати різні функції форматованого та безформатного введення-виведення;
Для роботи з символами та рядками символів використати бібліотечні функції, прототипи яких розміщено у файлах включення ctype.h, string.h, stdlib.h (див. табл. 15, 16);
Для звернення до окремих символів рядка перевагу надавати використанню вказівників замість індексів;
При оголошенні масивів рядків граничні розмірності задавати макро- константами. Реальні розмірності масивів рядків можна вводити з клавіатури;
Введення-виведення вхідних даних та результатів обчислень супроводжувати відповідними повідомленнями.
Блок-схема:
Програма 1
Програма 2
Текст програми:
Програма 1
#include <string.h>
#include <conio.h>
#include <stdio.h>
#define false 0
#define true 1
void main ()
{char *p,*s1,*s2; int bool=false;
textbackground(15);
textcolor(BLACK);
clrscr();
textcolor(17);
cputs("Введiть задане слово:\n\r");
gets(s1);
cputs("\nВведiть речення:\n\r");
gets(s2);
p=strtok (s2," ");
cputs("\nСлова речення, якi не мiстять лiтер заданого слова:\n\r");
while (p!= NULL)
{
if (strpbrk(p,s1)==NULL)
{printf ("%s ",p); bool=true;}
p=strtok (NULL, " ");
}
textcolor(RED);
if (bool==false) cputs("Таких слiв немає!!!\n\r");
getch();
}
Програма 2
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <alloc.h>
#define N 5
void main ()
{char *stud[N][255]; char s[25],zl[7],*cc[255]; float sb[N]; int i,j,mt,op,la,is,kl,c;
*stud[0]="Лановський_Є.С. /1234567 /57 /91 /64 /60 /67";
*stud[1]="Литовська_О.О. /7654321 /50 /50 /50 /50 /50";
*stud[2]="Рахмаїл_О.Р. /3526713 /74 /78 /88 /71 /90";
*stud[3]="Лотоцька_Г.I. /5328543 /76 /73 /55 /72 /96";
*stud[4]="Кошинський_О.Б. /9876543 /90 /92 /95 /86 /91";
textbackground(15);
textcolor(BLACK);
clrscr();
for(i=0;i<N;i++){
sscanf(*stud[i],"%s /%s /%d /%d /%d /%d /%d",&s,&zl,&mt,&op,&la,&is,&kl);
sb[i]=(float)(mt+op+la+is+kl)/5;
}
for (j=0; j<N-1; j++)
for (i=0; i<(N-1)-j; i++)
if (sb[i]<sb[i+1])
{
c=sb[i+1];
sb[i+1]=sb[i];
sb[i]=c;
*cc=*stud[i+1];
*stud[i+1]=*stud[i];
*stud[i]=*cc;
}
puts("Прiзвища студентiв по спаданню середнього балу:\n");
for (i=0; i<N; i++){
sscanf(*stud[i],"%s ",&s);
printf("%d. ",i+1);
printf("%s\n",s);
//printf(" =%.0f\n",sb[i]);
}
getch();
}
Результати виконання програми:
Програма 1
Програма 2
Висновки:
Я здобув практичні навички опрацювання текстових даних за допомогою бібліотечних функцій мови Сі.