Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабник по C.pdf
Скачиваний:
74
Добавлен:
01.06.2015
Размер:
876.9 Кб
Скачать

– 33 –

char c; /* ответ, на вопрос о продолжении работы */ do{

printf("\nВведите исходную строку: "); gets( s );

DelSym = DelBlank( s ); printf("Вот что получилось: %s",s);

printf("\nудалено: %d символов", DelSym ); printf("\nПродолжить ? (Y/N)[Y]:");

} while(! ((c=getch())=='N'||c=='n') ); }/* main */

int DelBlank( char* ss ) /*********** DelBlank **********

Действие:

Функция удаляет пробелы и табуляции в строке. Параметры:

ss - указатель на входную строку Возвращает:

количество удаленных символов Замечания:

модифицирует входную строку, помещая туда результат

*/

{

char *sd; /* указатель строки-приемника */ int d; /* счетчик удаляемых символов */ for( sd=ss, d=0; *sd=*ss; ss++ )

if(!(*ss==' '||*ss=='\t')) sd++; else d++;

return( d ); }/* DelBlank */

Варианты заданий

1.Объединение двух строк в одну, причем вторая присоединяется к первой, начиная с n-го элемента первой.

2.Обмен содержимого двух строк.

3.Сравнение двух строк с возвращением номера элемента, на котором произошло несовпадение.

4.Копирование в новую строку части исходной, начиная с элемента с заданным номером.

5.Подсчет в строке слов, состоящих только из цифр.

6.Подсчёт в строке слов, состоящих только из русских букв.

10.3. СТРУКТУРЫ И МАССИВЫ СТРУКТУР

Цель работы

Лабораторная работа предназначена для изучения структур в языке С. В работе следует написать функцию, выполняющую упорядочение массива структур с помощью простых алгоритмов сортировки. Массив и его размер должны быть параметрами функции.

Массив можно задать в функции main с помощью операторов присваивания.

Пример выполнения работы

Написать функцию, которая удаляет в строке все пробелы и табуляции. Возвращает количество удаленных символов.

#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct{

© 1998 Калачев Д.П., Лутай В.Н.

– 34 –

int IntField;

char StringField[10]; } Str;

void SortFunc( Str*, int ); /* прототип функции */

void main(){

Str m[100]; /* сортируемый массив */

Str *pm; /* указатель на элемент массива */ char s[80]; /* буфер строки */

int Count; /* количество введенных элементов */

/* Ввод исходных данных */ printf("\n");

for( Count=0, pm=m; ; Count++, pm++ ){

printf("Введите строку (завершение ввода-пустая строка): "); gets( s );

if( *s == '\0' ) break;

strncpy( pm->StringField, s, 9 ); pm->StringField[9]='\0'; printf("Введите целое: ");

gets( s );

pm->IntField = atoi( s );

}

/* Сортировка */ SortFunc( m, Count );

/* Вывод результатов */ printf( "\nРезультат" ); for( pm=m; Count--; pm++ )

printf( "\nЦелое: %d Строка: %s", pm->IntField, pm->StringField ); }/* main */

void SortFunc( Str* p, int N) /*********** SortFunc **********

Действие:

Функция сортирует по возрастанию массив структур. Ключ сортировки - поле ...

Алгоритм сортировки - ...

Параметры:

p - указатель на сортируемый массив, N - количество элементов в массиве.

Возвращает: - Замечания:

модифицирует входной массив

*/

{

/* ...*/

}/* SortFunc */

Варианты заданий

1.Фрагмент телефонного справочника с указанием фамилии абонента, адреса, номера телефона. Ключ сортировки – фамилия, алгоритм сортировки – любой.

2.Названия рек и их протяжённость. Ключ сортировки – длина реки, алгоритм сортировки – простой выбор.

3.Названия аудиторий и их вместимость. Ключ сортировки – вместимость, алгоритм сортировки – простые вставки.

4.Выходные данные монографий: фамилия автора, название, год издания. Ключ сортировки

любой, алгоритм сортировки – пузырек.

©1998 Калачев Д.П., Лутай В.Н.