Разнотипные переменные. Динамический и статический способы создания переменных

Страницы работы

Содержание работы

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

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННО БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

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

 ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Учебный Центр Информационных Технологий «Информатика»

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

«Разнотипные переменные. Динамический и статический способы создания переменных» по дисциплине «Информатика и программирование 2 часть»

Направление подготовки: 230105 - «Программное обеспечение вычислительной техники и автоматизированных систем»

Выполнил слушатель:

Вариант: №3

Дата сдачи: 11.06.2016

Преподаватель:

Новосибирск, 2016г.


1.  Цель

Познакомиться с разнотипными переменными и способами их создания.

2.  Вариант задания

Разработать две функции, одна из которых вводит с клавиатуры набор данных в произвольной последовательности и размещает в памяти в переменном формате. Другая функция читает  эти  данные  и выводит на экран. Программа запрашивает и размещает в памяти несколько наборов данных при помощи первой функции, а затем читает их и выводит на экран при помощи второй. Размещение данных производить в статическом массиве байтов фиксированной размерности  с  контролем  его переполнения.

Вариант №3. Последовательность строк символов. Каждая строка предваряется байтом - счетчиком символов. Ограничение последовательности - счетчик со значением 0.

3.  Анализ задачи и алгоритм

1) Анализ задачи

Входные данные: пользователь вводит строки символов

Результат: введенные строки символов помещают в последовательность строк и размещаются в памяти в переменном формате.

Метод решения: реализуем две функции для работы с последовательностью строк символов, первая функция будет введенные строки символов размещает в последовательности и контролировать ее переполнения, а вторая все строки символов, помещенные в последовательность.

2) Алгоритм решения задачи

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

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


4.  Описание программной реализации

1)  Используемые переменные

#define N 100 – размер последовательности;

char arr[N] – последовательность, в которую записываются строки;

char buf[1000] – буфер, в который записывается введенная строка;

int lenStr – длина строки символов;

int i – индекс для обхода строки символов;

int pos – текущая позиция в последовательности;

int nom – номер строки в последовательности;

2)  Используемые функции (процедуры)

void InputSequence(char arr[])

Аргументы процедуры:

char arr[] – последовательность строк символов;

Принцип работы: введенные пользователем строки символов записываются в последовательность при условии, если в последовательности есть место для записи этой строки.

void ShowSequence(char arr[])

Аргументыпроцедуры:

char arr[] – последовательность строк символов;

Принцип работы: вывод на экран всех записанных строк символов в указанной последовательности

5.  Пример работы программы

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

Тест №1

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

Тест №2

В данном случае демонстрируется контроль переполнения последовательности строк символов и пользователю предлагается ввести строку короче

Тест №3

В данном случае демонстрируется ввод строк символов в последовательность и контроль переполнения последовательности.


6.  Выводы

В ходе выполнения лабораторной работы были рассмотрены основные принципы работы с разнотипными переменными, способы их создания.

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

В результате получили консольное приложение, которое позволяет записывать строки символов в произвольном формате в последовательность и выводить на экран все записанные строки.


Приложение 1. Исходный код

#include <stdio.h>

#include <string.h>

#include <Windows.h>

#define N 100

void InputSequence(char arr[]) {

int lenStr, i, pos;

char buf[1000];

printf("----------Ввод последовательности строк символов----------\n");

printf("*Для выхода введите пустую строку\n");  

for(i = 0; i < N; i++)

if (arr[i] == 0)  {

pos = i;

break;

while(1) {

if ((N - pos) <= 2) {

printf("Последовательность текстовых строк полностью заполнена!\n");

return;

}   

printf("Введите строку символов:");

fflush(stdin);

gets_s(buf, 1000);

lenStr = strlen(buf);

if(lenStr == 0)

return;   

if(lenStr > 255) {

printf("Нельзя записать в одну строку больше 255 символом!\n");

continue;

}

if((N - pos - 2) < lenStr) {

printf("Нельзя записать строку из %d символом!\n

Для записи доступно - %d байт\n", lenStr, (N - pos - 2));

continue;

}

arr[pos++] = lenStr;

for(i = 0; i < lenStr; i++)

arr[pos++] = buf[i];

arr[pos] = 0;

printf("Введенная строка успешно записана в последовательность\n");

}

}

void ShowSequence(char arr[]) {

int lenStr, i, pos, nom;

printf("----------Вывод последовательности текстовых строк----------\n");

pos = 0;

nom = 0;

while(1) {

lenStr = arr[pos++];

if(lenStr == 0) break;

printf("[%d] ", nom++);

for(i = 0; i < lenStr; i++)

printf("%c", arr[pos++]);

printf("\n");

}

}

void main() {

char arr[N] = {0};

SetConsoleCP(1251);

SetConsoleOutputCP(1251);  

InputSequence(arr);

printf("\n");

ShowSequence(arr);

getchar();

}

Похожие материалы

Информация о работе