Скачиваний:
16
Добавлен:
15.03.2015
Размер:
23.04 Кб
Скачать

Санкт-Петербургский Университет

телекоммуникаций имени проф. Бонч-Бруевича

ПРОГРАММИРОВАНИЕ НА ЯЗЫКАХ ВЫСОКОГО УРОВНЯ

Лабораторная работа №9

Работа со строками

Студент группы СУ-01

Соловьёв Константин

Вариант № 15

2011 г.

    1. Постановка задачи

Имеется текст, состоящий из n(n <= 20) строк, который вводится с клавиатуры. Длина каждой строки не превосходит 128 символов. В каждой строке содержится не менее двух слов. Количество слов в строке не более 20. Отдельные слова отделяются друг от друга одним или более пробелами. Необходимо выполнить заданную обработку введенного текста. Вид обработки зависит от варианта задания и определяется данными табл. 9.1. Вывод результатов обработки текста должен выполняться только после завершения его ввода. При обработке текста необходимо учитывать возможность наличия во введенной строке ведущих и завершающих пробелов. Количество пробелов во введенном и обработанном тексте может не совпадать. При разработке программы для решения поставленной задачи необходимо в максимальной степени использовать функции.

Задание:

Удалить из каждой строки ее второе слово.

Main файл:

Является главным связующим звеном в выполнении поставленной задачи. Его основная цель - это предоставление пользователю желаемый выбор выполнения операций с массивами и вызов функций для решения поставленных задач.

Код main.c файла:

#include "header9.h"

int main(void) {

int n;

char str[MSTR][MAXLEN];

char vix[MSTR][MAXLEN];

chislo_strok(&n);

printf("\nEnter text of %d lines: \n", n);

input_str(str, n);

printf("-----------------------------------\n");

delete_word(n, str, vix);

return (0);

}

Функция chislo_strok:проверяет количество строк;

int chislo_strok(int *n) {

printf("Enter the number of lines of text: ");

scanf("%d%*c", n);

while (*n > MSTR) {

printf("Range you number [1..%d]\n", MSTR);

printf("You number is: ");

scanf("%d%*c", n);

}

}

Функция input_str:предназначена для ввода строк с клавиатуры;

void input_str(char string[][MAXLEN], int n) {

char* simvol = NULL;

for (int s = 0; s < n; s++) {

fgets(string[s], MAXLEN, stdin);

simvol = strchr(string[s], '\n');

if (simvol != NULL)

*simvol = '\0';

}

}

Функция delete_word:удаляет второе слово из каждой строки и выводит получившиеся строки на экран;

void delete_word(int n, char string[][MAXLEN], char strout[][MAXLEN]) {

printf("\n");

char in[MAXLEN];

for (int i = 0; i < n; i++) {

char out[MAXLEN] = "";

int test = 0;

strcpy(in, string[i]);

char *p = strtok(in, " ");

while (p) {

test++;

if ((test == 1) || (test > 2)) {

strcat(out, p);

strcat(out, " ");

}

p = strtok(NULL, " ");

}

strcat(out, "\n");

strcpy(strout[i], out);

puts(strout[i]);

}

printf("-----------------------------------\n");

}

Заголовочный файл header9.h:

#include <stdlib.h>

#include <stdio.h>

#include<string.h>

#define MAXLEN 129

#define MSTR 20

Тестирование программы:

tyudjfsk mnxvbsh lkjsdf kjhksdf

sfasd ureu kjhkj m,nmn

kjhb kjhbkjb fgfdfg vb

-----------------------------------

tyudjfsk lkjsdf kjhksdf

sfasd kjhkj m,nmn

kjhb fgfdfg vb

-----------------------------------

Соседние файлы в предмете Программирование на языках высокого уровня