Сегодня использование линейных списков довольно актуально, потому что они имеют достаточно широкую область применения: перечень товаров в магазине, расписание поездов, телефонный справочник, расписание дел — все это является самыми распространенными примерами списков.

Содержание

Введение

1.       Описание хода выполнения задания

1.1 Разработка ввода с клавиатуры и вывода на экран монитора данных

.2 Описание функций

.3 Описание цикла

2.       Псевдокод задания

3.      Результат выполнения программы

Заключение

Список используемых источников

Приложение (листинг программы)

ВВЕДЕНИЕ

Сегодня использование линейных списков довольно актуально, потому что они имеют достаточно широкую область применения: перечень товаров в магазине, расписание поездов, телефонный справочник, расписание дел — все это является самыми распространенными примерами списков.

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

Такая структура называется непрерывным списком и является типичной для системы хранения, получаемой, когда программист хранит список в виде массива.

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

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

. Описания хода выполнения задания

ввод данные клавиатура экран

Для осуществления ввода данных с клавиатуры и вывода на экран будет осуществлен с помощью стандартных функций printf и scanf.

.1 Разработка ввода с клавиатуры и вывода на экран монитора данных

main()

{n;

//Ввод n(«Enter n: «);(«%i»,&n);x[n],p[n];

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

//Ввод x и p(int i=0;i<n;i++)

{(«Enter x[%i] and p[%i]: «,i+1,i+1);(«%lf %lf»,&x[i],&p[i]);

}

1.2 Описание функций

Функция printf() является функцией стандартного вывода. С помощью этой функции можно вывести на экран монитора строку символов, число, значение переменной… Функция printf() имеет прототип в файле stdio.h
int printf(char *управляющая строка, …); В случае успеха функция printf() возвращает число выведенных символов.Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и спецификаторы формата, определяющие, как выводить аргументы. Функция printf() это функция форматированного вывода. Это означает, что в параметрах функции необходимо указать формат данных, которые будут выводиться. Формат данных указывается спецификаторами формата. Спецификатор формата начинается с символа % за которым следует код формата. В спецификаторе формата, после символа % может быть указана точность (число цифр после запятой). Точность задаётся следующим образом: %.n<код формата>. Где n — число цифр после запятой, а <код формата> — один из кодов приведённых выше. Например, если у нас есть переменная x=10.3563 типа float и мы хотим вывести её значение с точностью до 3-х цифр после запятой, то мы должны написать: printf(«Переменная x = %.3f»,x); Результат: Переменная x = 10.356. Вы также можете указать минимальную ширину поля отводимого для печати. Если строка или число больше указанной ширины поля, то строка или число печатается полностью. Например, если вы напишите: printf(«%5d»,20); то результат будет следующим: 20 Обратите внимание на то, что число 20 напечаталось не с самого начала строки. Если вы хотите чтобы неиспользованные места поля заполнялись нулями, то нужно поставить перед шириной поля символ 0. Например: printf(«%05d»,20);

Результат: 00020

Функция scanf() — функция форматированного ввода. С её помощью вы можете вводить данные со стандартного устройства ввода (клавиатуры). Вводимыми данными могут быть целые числа, числа с плавающей запятой, символы, строки и указатели. Функция scanf() имеет следующий прототип в файле stdio.h: int scanf(char *управляющая строка); Функция возвращает число переменных которым было присвоено значение. Управляющая строка содержит три вида символов: спецификаторы формата, пробелы и другие символы. Спецификаторы формата начинаются с символа %. При вводе строки с помощью функции scanf() (спецификатор формата %s), строка вводиться до первого пробела!! т.е. если вы вводите строку «Привет мир!» с использованием функции() char str[80]; // массив на 80 символов(«%s»,str);

то после ввода результирующая строка, которая будет храниться в массиве str будет состоять из одного слова «Привет». Функция вводит строку до первого пробела. Символ пробела в управляющей строке дает команду пропустить один или более пробелов в потоке ввода. Кроме пробела может восприниматься символ табуляции или новой строки. Ненулевой символ указывает на чтение и отбрасывание этого символа. Разделителями между двумя вводимыми числами являются символы пробела, табуляции или новой строки. Знак * после % и перед кодом формата (спецификатором формата) дает команду прочитать данные указанного типа, но не присваивать это значение. Например: scanf(«%d%*c%d»,&i,&j); при вводе 50+20 присвоит переменной i значение 50, переменной j — значение 20, а символ + будет прочитан и проигнорирован. В команде формата может быть указана наибольшая ширина поля, которая подлежит считыванию. Например:(«%5s»,str); указывает необходимость прочитать из потока ввода первые 5 символов. При вводе 1234567890ABC массив str будет содержать только 12345, остальные символы будут проигнорированы. Разделители: пробел, символ табуляции и символ новой строки — при вводе символа воспринимаются, как и все другие символы. Если в управляющей строке встречаются какие — либо другие символы, то они предназначаются для того, чтобы определить и пропустить соответствующий символ. Поток символов 10plus20 оператором scanf(«%dplus%d»,&x,&y); присвоит переменной x значение 10, переменной y — значение 20, а символы plus пропустит, так как они встретились в управляющей строке. Одной из мощных особенностей функции scanf() является возможность задания множества поиска (scanset). Множество поиска определяет набор символов, с которыми будут сравниваться читаемые функцией scanf() символы. Функция scanf() читает символы до тех пор, пока они встречаются в множестве поиска. Как только символ, который введен, не встретился в множестве поиска, функция scanf() переходит к следующему спецификатору формата. Множество поиска определяется списком символов, заключённых в квадратные скобки. Перед открывающей скобкой ставиться знак %. Пример:

#include main(void)

{str1[10], str2[10];(«%[0123456789]%s», str1, str2);(«n%sn%s»,str1,str2);

}

Введём набор символов: 12345abcdefg456. На экране программа выдаст:

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Цена курсовой

abcdefg456. При задании множества поиска можно также использовать символ «дефис» для задания промежутков, а также максимальную ширину поля ввода. scanf(«%10[A-Z1-5]», str1); Можно также определить символы, которые не входят в множество поиска. Перед первым из этих символов ставиться знак ^. Множество символов различает строчные и прописные буквы. При использовании функции scanf(), ей в качестве параметров нужно передавать адреса переменных. Обратите внимание на то, что перед str не стоит символ &. Это сделано потому, что str является массивом, а имя массива — str является указателем на первый элемент массива. Поэтому знак & не ставиться. Передаем функции scanf() адрес, str это адрес в памяти компьютера где будет храниться значение первого элемента массива.

1.3 Описание цикла

Цикл for имеет следующий синтаксис: (инициализирующее выражение; условное выражение;

модифицирующее выражение) { выражение1; выражение2; выражениеЗ; выражение-n; }

При обнаружении в программе цикла for первым выполняется инициализирующее выражение, в котором обычно устанавливается счетчик цикла. Это происходит только один раз перед запуском цикла. Затем анализируется условное выражение, которое также называется условием прекращения цикла. Пока оно равно true, цикл не прекращается.

Каждый раз после всех строк тела цикла выполняется модифицирующее выражение, в котором происходит изменение счетчика цикла. Как только проверка условного выражения даст результат false, все строки тела цикла и модифицирующее выражение будут пропущены и управление будет передано первому выражению, следующему за телом цикла. Если тело цикла содержит более одной команды, следует использовать фигурные скобки и руководствоваться определенными правилами оформления, чтобы сделать текст программы более понятным. В C++ допускается объявление переменных прямо в строке инициализации цикла for. В C++ переменные можно создавать непосредственно перед той строкой, где они впервые используются.

Для того, что бы найти номер точки, котрая находится наиболее близко расположена к центру тяжести системы надо с начало найти центр тяжести, посчитать, что нулевая точка самая ближняя. Если новое растояние меньше того что уже имеем — заменяем его на новое значение.X=0,sumP=0;(int i=0; i<n; i++)=X+x[i]*p[i];(int i=0; i<n; i++)=sumP+p[i];=X/sumP;//Центр тяжестиnumber=0;//Считаем, что нулевая точка самая ближняя(int i=0;i<n;i++)(fabs(x[i]-X) < fabs(x[number]-X))//Если новое расстояние меньше того, что мы уже имеем — заменяем= i;++;

2. Псевдокод задания

double X=0,sumP=0;(счетчик <целого числа)

Производим расчет X(счетчик < целого числа)

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

Производим расчет sumP

Расчитываем центр тяжести

Считаем, что нулевая точка самая ближняя(счетчик < целого числа)

Если (новое расстояние < того, что мы уже имеем) — заменяем

числовую константу на = i;

и нарасщиваем числову константу на +1;

3. Результат выполнения программы

Рисунок 1 — Ввод количества материальных точек

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

Рисунок 2 — Введенное количество материальных точек

Вводим с клавиатуры любое число, в данном случае введена цифра четыре.

Рисунок 3 — Ввод значения

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

Рисунок 4 — Введенные значения материальных точек

Количество вводимых с клавиатуры любых значений x и p равно количеству введенных ранее материальных точек.

Рисунок 5 — Результат работы программы

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

После того как ввели значения и нажали на клаввиатуре ввод, появляется результат работы программы. Результатом является вывод номера точки которая наиболее близко расположена к центру тяжести системы. Если таких несколько, то выбрать любую из них в данном примере была выбрана автоматически точка с номером 3.   ЗАКЛЮЧЕНИЕ

Главной целью курсовой работы была разработка программы, которая бы работала с линейным списком, выполняла элементарные операции: ввода с клавиатуры и вывода результата на экран монитора. В ходе выполнения курсовой работы был проведен литературный обзор и раскрыто понятие линейного списка, выбраны алгоритмы для реализации поставленной цели, была разработана программа на объектно-ориентированном языке C++, осуществлены ее тестирование и отладка. В итоге была разработана программа, листинг которой находится в приложении. Поскольку все поставленные задачи были успешно выполнены, я считаю, что цель курсовой работы достигнута.

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

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

1. Дж. Брукшир. Информатика и вычислительная техника.- СПб.:Питер, 2014.

2.      Алексеев Е.Р. Программирование на Microsoft Visual C++ и Turbo C++ Explorer, 2007.

.        Информатика: лекции к курсу: Часть 1. Для направления 654700 — Информационные системы. Ю.Ю.Громов, О.Г.Иванова, Н.А.Земской, А.В.Лагутин, В.М.Тютюнник, В.Н.Точка, Н.Г.Шахов. Тамбов: Першина, 2012.-359с.

.        Герберт Шилдт. Полный справочник по С++. Четвертое издание. Изд-во Вильямс, 2003., 800 с.

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Подробнее

5.      Чибизова Н.В. C && C++ (<http://natalia.appmat.ru/c&c++/lezione4.php>).

.        Клуб любителей С++. Visual C++ для начинающих(<http://doc.marsu.ru/lang/cpp/vcpp/begvc09.html>).

.        Лысаков К.Ф.Дунаев А.А. Учебное пособие по С++. Изд-во Гос. ун-т. Новосибирск, 2010., 80с.

.        CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Программирование на языке Си.

.        Дж. Коплиен. Программирование на С++. 479 с. Питер, 2005 г.

.        Бьерн Страуструп. Язык программирования С++. Специальное издание. 1104 с. Бином-Пресс, 2004 г.

.        Блог начинающих программистов (http://programmado.ru/16-ifc.html)
ПРИЛОЖЕНИЕ. ЛИСТИНГ ПРОГРАММЫ

Код программы:

#include

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

#include

#include main()

{n;

//Ввод n(«Enter n: «);(«%i»,&n);x[n],p[n];

//Ввод x и p(int i=0;i<n;i++)

{(«Enter x[%i] and p[%i]: «,i+1,i+1);(«%lf %lf»,&x[i],&p[i]);

}

//Вычисляем центр тяжести по формуле (x1*p1+x2*p2+…+xn*pn)/(p1+p2+…+pn)

double X=0,sumP=0;(int i=0; i<n; i++)=X+x[i]*p[i];(int i=0; i<n; i++)=sumP+p[i];=X/sumP;//Центр тяжести

int number=0;//Считаем, что нулевая точка самая ближняя

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

if (fabs(x[i]-X) < fabs(x[number]-X))//Если новое расстояние меньше того, что мы уже имеем — заменяем= i;++;

//Итого, в переменной number находится номер точки, расстояние от которой до центра тяжести минимальное

//Выводим результат(«Point: %i»,number);();

return 0;

}

Нужна помощь в написании курсовой?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Наша система гарантирует сдачу работы к сроку без плагиата. Правки вносим бесплатно.

Заказать курсовую

Средняя оценка 0 / 5. Количество оценок: 0

Поставьте оценку первым.

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

90

Закажите такую же работу

Не отобразилась форма расчета стоимости? Переходи по ссылке