Главная страница
Навигация по странице:

  • АБс-123 Студент: Карпутов Н.В. Преподаватель: Борин В.М.

  • Внутреннее представление данных в программе

  • Первой частью

  • Выстраивание текста программы из компонент п.4 с использованием технологии нисходящего пошагового структурного проектирования ШАГ0. «Тело программы» и обозначение переменных

  • include include int func(char* str, char* arr, int i, int j) { …} int main()

  • Лабораторная. Карпутов_Абс-123 (лаба строки). Лабораторная работа 3 по дисциплине Информатика Символы. Строки Группа абс123 Студент Карпутов Н. В


    Скачать 39.85 Kb.
    НазваниеЛабораторная работа 3 по дисциплине Информатика Символы. Строки Группа абс123 Студент Карпутов Н. В
    АнкорЛабораторная
    Дата22.02.2022
    Размер39.85 Kb.
    Формат файлаdocx
    Имя файлаКарпутов_Абс-123 (лаба строки).docx
    ТипЛабораторная работа
    #369598

    МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

    НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСТИЕТ

    Лабораторная работа №3 по дисциплине «Информатика»

    Символы. Строки

    Группа: АБс-123

    Студент: Карпутов Н.В.

    Преподаватель: Борин В.М.

    НОВОСИБИРСК 2021

    Задание


    Функция переписывает строку. Если она находит в строке число, то вместо него она переписывает в выходную строку соответствующее по счету слово из входной строки. Повторять этот процесс, пока в строке не останется чисел. Отследить возможное зацикливание, когда два слова ссылаются друг на другую.

    Теоретические сведения


    Строка - это последовательность ASCII или UNICODE символов.

    Строки в C, как и в большинстве языков программирования высокого уровня рассматриваются как отдельный тип, входящий в систему базовых типов языка. Так как язык C по своему происхождению является языком системного программирования, то строковый тип данных в C как таковой отсутствует, а в качестве строк в С используются обычные массивы символов.

    Проектирование программы


    1. Идея

    Программа должна выполнять полный анализ строки, представленной на входе путём поэтапного рассмотрения каждого элемента введённой строки, если она находит в строке число, то вместо него она переписывает в выходную строку соответствующее по счету слово из входной строки.

    1. Внутреннее представление данных в программе

    Для упрощения и оптимизации работы с ресурсами памяти воспользуемся созданием небольшой функции, целью которой будет нахождение количества «слов» т.е сочетаний, обособленных пробелами.

    1. Список стандартных фрагментов и переменных

    • Введём переменные для обозначения массивов строк и несколько вспомогательных переменных-счётчиков, а именно переменные str, arr, i, j. В функцию также вложим две переменные типа int: k, n.

    • Первой частью программы является непосредственно функция, описанная пунктом выше

    • Второй и последней частью является поиск цифр, а точнее символов, имеющих кодировку цифр от 0 до 9 по таблице ASCII. Затем предполагается перестановка слов согласно требуемому заданию.

    1. Выстраивание текста программы из компонент п.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)




    .




    написать администратору сайта