Ввод данных с клавиатуры и вывод на экран

Разработка ввода с клавиатуры и вывода на экран монитора данных с помощью стандартных функций printf и scanf. Ввод количества материальных точек. Работа с линейным списком. Хранение содержимого списка в блоке ячеек памяти с последовательными адресами.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.01.2016
Размер файла 176,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

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

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

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

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

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

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

Заключение

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

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

ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

int main()

{

int n;

//Ввод n

printf("Enter n: ");

scanf("%i",&n);

double x[n],p[n];

//Ввод x и p

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

{

printf("Enter x[%i] and p[%i]: ",i+1,i+1);

scanf("%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), строка вводиться до первого пробела!! т.е. если вы вводите строку "Привет мир!" с использованием функции

scanf() char str[80]; // массив на 80 символов

scanf("%s",str);

то после ввода результирующая строка, которая будет храниться в массиве str будет состоять из одного слова "Привет". Функция вводит строку до первого пробела. Символ пробела в управляющей строке дает команду пропустить один или более пробелов в потоке ввода. Кроме пробела может восприниматься символ табуляции или новой строки. Ненулевой символ указывает на чтение и отбрасывание этого символа. Разделителями между двумя вводимыми числами являются символы пробела, табуляции или новой строки. Знак * после % и перед кодом формата (спецификатором формата) дает команду прочитать данные указанного типа, но не присваивать это значение. Например: scanf("%d%*c%d",&i,&j); при вводе 50+20 присвоит переменной i значение 50, переменной j - значение 20, а символ + будет прочитан и проигнорирован. В команде формата может быть указана наибольшая ширина поля, которая подлежит считыванию. Например:

scanf("%5s",str); указывает необходимость прочитать из потока ввода первые 5 символов. При вводе 1234567890ABC массив str будет содержать только 12345, остальные символы будут проигнорированы. Разделители: пробел, символ табуляции и символ новой строки - при вводе символа воспринимаются, как и все другие символы. Если в управляющей строке встречаются какие - либо другие символы, то они предназначаются для того, чтобы определить и пропустить соответствующий символ. Поток символов 10plus20 оператором scanf("%dplus%d",&x,&y); присвоит переменной x значение 10, переменной y - значение 20, а символы plus пропустит, так как они встретились в управляющей строке. Одной из мощных особенностей функции scanf() является возможность задания множества поиска (scanset). Множество поиска определяет набор символов, с которыми будут сравниваться читаемые функцией scanf() символы. Функция scanf() читает символы до тех пор, пока они встречаются в множестве поиска. Как только символ, который введен, не встретился в множестве поиска, функция scanf() переходит к следующему спецификатору формата. Множество поиска определяется списком символов, заключённых в квадратные скобки. Перед открывающей скобкой ставиться знак %. Пример:

#include <stdio.h>

void main(void)

{

char str1[10], str2[10];

scanf("%[0123456789]%s", str1, str2);

printf("\n%s\n%s",str1,str2);

}

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

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

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

Цикл for имеет следующий синтаксис:

for (инициализирующее выражение; условное выражение;

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

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

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

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

double X=0,sumP=0;

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

X=X+x[i]*p[i];

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

sumP=sumP+p[i];

X=X/sumP;//Центр тяжести

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

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

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

number = i;

number++;

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

double X=0,sumP=0;

For (счетчик <целого числа)

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

For (счетчик < целого числа)

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

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

Считаем, что нулевая точка самая ближняя

For (счетчик < целого числа)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ЗАКЛЮЧЕНИЕ

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

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

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

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

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

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

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

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

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

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

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

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

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

11. Блог начинающих программистов (http://programmado.ru/16-ifc.html)

ПРИЛОЖЕНИЕ. ЛИСТИНГ ПРОГРАММЫ

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

#include <stdio.h>

#include <conio.h>

#include <math.h>

int main()

{

int n;

//Ввод n

printf("Enter n: ");

scanf("%i",&n);

double x[n],p[n];

//Ввод x и p

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

{

printf("Enter x[%i] and p[%i]: ",i+1,i+1);

scanf("%lf %lf",&x[i],&p[i]);

}

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

double X=0,sumP=0;

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

X=X+x[i]*p[i];

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

sumP=sumP+p[i];

X=X/sumP;//Центр тяжести

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

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

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

number = i;

number++;

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

//Выводим результат

printf("Point: %i",number);

getch();

return 0;

}

Размещено на Allbest.ru


Подобные документы

  • Особенности работы с данными с MS Excel. Ввод данных в ячейку из раскрывающегося списка. Проверка содержимого ячеек при вводе с клавиатуры. Поиск ячеек со встроенной проверкой значений. Автоматическая обработка данных. Подведение промежуточных итогов.

    презентация [1,8 M], добавлен 16.10.2013

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

    реферат [14,5 K], добавлен 06.12.2011

  • Ввод данных в ячейку из раскрывающегося списка. Проверка содержимого ячеек при вводе данных с клавиатуры. Отмена проверки значения. Таблица после подведения промежуточных итогов. Консолидация данных и порядок ее выполнения, алгоритм и основные этапы.

    презентация [1,8 M], добавлен 29.09.2013

  • Разработка пользовательского интерфейса и создание базы данных на основе реляционной СУБД Microsoft Access. Процедуры для ввода, корректировки, просмотра входных данных, их обработка и анализ. Формирование запросов и отчетов, их вывод на экран монитора.

    курсовая работа [2,7 M], добавлен 03.05.2014

  • Использование программой функции ввода-вывода данных для реализации дружественного интерфейса с пользователем. Функции консоли и особенности их применения для обеспечения аккуратного ввода информации и упорядоченного вывода. Обзор стандартных функций.

    лабораторная работа [40,4 K], добавлен 06.07.2009

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

    презентация [2,0 M], добавлен 05.02.2014

  • Основная цель этого блока, ввод данных для работы программы. Дополнительная цель, вывод информации. Два условия проверки вводимых данных. Первое условие проверки на количество точек. Второе, на правильность ввода координат точек. Созданные подпрограммы.

    лабораторная работа [154,3 K], добавлен 13.02.2009

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

    реферат [98,9 K], добавлен 24.06.2008

  • Функции ввода с клавиатуры и вывода на экран, алгоритм вывода чисел. Генерация звуковых сигналов в ПЭВМ. Принципы работы видеосистемы: адресация и режимы работы адаптера CGA, режим работы дисплея. Таблица векторов прерываний в работе клавиатуры.

    отчет по практике [700,4 K], добавлен 23.11.2010

  • Понятие класса на языке Java. Ввод с клавиатуры данных в массив, состоящий из десяти объектов типа WORKER. Вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры. Оценка работы программы, ее код.

    курсовая работа [1,2 M], добавлен 20.04.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.