1) Пример: Обрабатывается информация о студентах, сведенье о каждом студенте включает в себя: ФИО, год рождения, группа, № курса. Выдать список всех студентов заданного курса. Количество студентов заранее неизвестно.
Void main(void)
{struct stud
{char fio[40];
char gr[10];
int course;}*uk_mas;
int kol_st, i, c;
printf(“количество:”);
scanf(“%d”, &kol_st);
uk_mas=(struct stud*)malloc(kol_st*sizeof(struct stud));
for(i=0;i<kol_st;i++)
{
printf(“Данные для %d студента\n ”, i+1);
printf(“ ФИО:”);
scanf(“%s”,&uk_mas[i].fio);
printf(“год рождения:”);
scanf(“%s”,&uk_mas[i].gr);
printf(“курс:”);
scanf(“%d”,&uk_mas[i].course);
}
printf(“Введите № курса”);
scanf(“%d”,&c);
for(i=0;i<kol_st;i++)
if(uk_mas[i].course==c)
printf(“\n%s”, uk_mas[i].fio);
free(uk_mas);
}
§19 Обработка текстовой информации в языке C и PASCAL
19.1 Строки языка PASCAL
В стандартном языке PASCAL для обработки текстовой информации используются символьные массивы, но во многих реализациях, например Turbo PASCAL появились строковые типы данных.
В Turbo PASCAL тип – строка (стандартный тип string) – последовательность символов произвольной длинны (до 255 символов).
Синтаксис объявления строкового типа:
type<имя типа строка>= string[<константа целого типа>]
<константа целого типа> - задает максимальную длину строки.
Примеры:
type str = string[80];
var s1: str;
s2: string;
Замечания
1) В языке Turbo PASCAL, если размер не указан, он считается равным 255.
2) Стандартный тип string языка Turbo PASCAL позволяет динамически изменять длину строки; в отличии от символьных массивов. Память под переменные строкового типа отводится по максимуму, а используется лишь часть, реально занятая символами строки в данный момент.
3) В языке Object PASCAL кроме коротких строк существуют длинные строки. Короткий строковый тип представляет собой строку символов фиксированной длинны, содержащую максимум 255 элементов. Можно объявить короткую строку одним из двух способов:
- С помощью предопределенного типа shortstring объявить короткую строку длинной 255 байт.
- Воспользовавшись ключевым словом string и операцией индекса, задать в момент объявления необходимый размер:
var str1 : shortstring
str2 : string[20];
Манипулирование эффективно по времени, поскольку размер памяти, выделенной для строк этого типа, остается неизменным.
Длинные строки яз.Object Pascal являются динамическими распределяемыми строковыми объектами. Размер длинной строки ограничен только объемом доступной памяти. Для строк этого типа Object Pascal сам по мере необходимости распределяет и перераспределяет память. Чтобы объявить длинную строку, используют ключевое слово string без указания размера: Var s: string;
Строки яз.Turbo Pascal и короткие строки яз.Object Pascal называют также строками с байтом длины, поскольку их первый элемент содержит длину строки.
Пример Var s: string;
Len: intejer;
begin
s:=’строка’;
Len:=Ord(s[0]); {6}
В этом примере длина строки определяется путем считывания значения s[0] (с помощью функции Ord значение типа Char преобразуется в целочисленное). Кроме того, можно узнать длину короткой строки с помощью функции Length.
Пример Var s: string;
begin
write (‘Введите строку:’);
readln (s);
writeln (‘Строка состоит из’, length (s),’символов’);
end.
Строки могут выводиться на экран монитора с помощью стандартных процедур write и writeln и вводится с помощью стандартных процедур readln, read.
Операции со строками.
В Turbo Pascal существуют два подхода к обработке переменных типа string:
1-й: обработка всей строки как единого целого;
2-й: обработка строки посимвольно.
Первый подход предоставляет возможность:
- присваивать строковой переменной за одну операцию значения целой строки символов;
- позволяет выполнять операции объединения нескольких строк (конкатенации)
- сравнивать строки. Сравнение осуществляется слева направо в соответствии с ASCII-кодами соответствующих символов.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.