Лабораторная. Карпутов_Абс-123 (лаба строки). Лабораторная работа 3 по дисциплине Информатика Символы. Строки Группа абс123 Студент Карпутов Н. В
Скачать 39.85 Kb.
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТИЕТ Лабораторная работа №3 по дисциплине «Информатика» Символы. Строки Группа: АБс-123 Студент: Карпутов Н.В. Преподаватель: Борин В.М. НОВОСИБИРСК 2021 ЗаданиеФункция переписывает строку. Если она находит в строке число, то вместо него она переписывает в выходную строку соответствующее по счету слово из входной строки. Повторять этот процесс, пока в строке не останется чисел. Отследить возможное зацикливание, когда два слова ссылаются друг на другую. Теоретические сведенияСтрока - это последовательность ASCII или UNICODE символов. Строки в C, как и в большинстве языков программирования высокого уровня рассматриваются как отдельный тип, входящий в систему базовых типов языка. Так как язык C по своему происхождению является языком системного программирования, то строковый тип данных в C как таковой отсутствует, а в качестве строк в С используются обычные массивы символов. Проектирование программыИдея Программа должна выполнять полный анализ строки, представленной на входе путём поэтапного рассмотрения каждого элемента введённой строки, если она находит в строке число, то вместо него она переписывает в выходную строку соответствующее по счету слово из входной строки. Внутреннее представление данных в программе Для упрощения и оптимизации работы с ресурсами памяти воспользуемся созданием небольшой функции, целью которой будет нахождение количества «слов» т.е сочетаний, обособленных пробелами. Введём переменные для обозначения массивов строк и несколько вспомогательных переменных-счётчиков, а именно переменные str, arr, i, j. В функцию также вложим две переменные типа int: k, n. Первой частью программы является непосредственно функция, описанная пунктом выше Второй и последней частью является поиск цифр, а точнее символов, имеющих кодировку цифр от 0 до 9 по таблице ASCII. Затем предполагается перестановка слов согласно требуемому заданию. Выстраивание текста программы из компонент п.4 с использованием технологии нисходящего пошагового структурного проектирования ШАГ0. «Тело программы» и обозначение переменных #include #include int func(char* str, char* arr, int i, int j) { … } int main() { int i, j; char arr[1000]; char str[1000]; } ШАГ1. Функция { int k, n = 0; k = arr[i] - '0'; for (i = 0; i < strlen(arr); i++) { if (arr[i] == ' ') n++; if (n == k) { i--; while (i >= 0 && arr[i] != ' ') { str[j] = arr[i]; i--; j++; } break; } } return j; } ШАГ2. Реализация функции на введённой строке { int i, j; char arr[1000]; char str[1000]; gets(arr); j = 0; for (i = 0; i < strlen(arr); i++) { if (arr[i] >= 48 && arr[i] <= 57) { j = func(str, arr, i, j); } else { str[j] = arr[i]; j++; } } str[j] = '\0'; printf("%s\n", str); Текст программы#include #include int func(char* str, char* arr, int i, int j) { int k, n = 0; k = arr[i] - '0'; for (i = 0; i < strlen(arr); i++) { if (arr[i] == ' ') n++; if (n == k) { i--; while (i >= 0 && arr[i] != ' ') { str[j] = arr[i]; i--; j++; } break; } } return j; } int main() { int i, j; char arr[1000]; char str[1000]; gets(arr); j = 0; for (i = 0; i < strlen(arr); i++) { if (arr[i] >= 48 && arr[i] <= 57) { j = func(str, arr, i, j); } else { str[j] = arr[i]; j++; } } str[j] = '\0'; printf("%s\n", str); } Результат работы (строка: aaa bb1bb cc2cc). |