Техническое задание на курсовой проект
Санкт-Петербургский Государственный Электротехнический Университет
Им. В.И. Ульянова «ЛЭТИ»
Курсовая работа
По «Программированию»
Студент 1 курса (группа 3091 )
Дорошков А.Д.
Научный руководитель:
Анисимов В. И.
Содержание
Техническое задание на курсовой проект. . . . . . . . . . . . . | 3 |
Блок-схема разработанной программы. . . . . . . . . . . . . . | 4 |
Текст разработанной программы. . . . . . . . . . . . . . . . . | 5 |
Техническое задание на курсовой проект
Разработать и отладить программу, содержащую меню и обеспечивающую:
1. Выполнение задачи 1.
2. Выполнение задачи 2.
3. Выполнение задачи 3.
4. Выполнение задачи 4.
5. Выполнение задачи 5.
6. Выполнение задачи 6.
7. Вывод информации о программе и её разработчике.
8. Выход из программы.
9. Аварийное завершение программы в случае ошибочного ввода пункта меню.
Содержание задач 1-6.
1. Ввод текстовой строки.
2. Вывод введённого текста в строку.
3. Вывод введённого текста в столбец.
4. Вывод введённого текста по строкам, каждая из которых содержит единственное слово.
5. Реверсирование введённого текста, и обработку реверсированного текста согласно п. п. 2-4.
6. Формирование таблицы y=f(x,n), строки которой соответствуют аргументу x, а столбцы – аргументу n. Заполнение таблицы расчётными значениями осуществляется согласно выражению y=2.5e-3*n*(exp(x/0.025)-1)+2.0*s, где ы=1+2+…+n. Для аргумента x установить диапазон изменения от 0.1 до 0.5 с шагом 0.1, а для аргумента n – диапазон изменения от 1 до 7 с шагом 1.
Блок-схема программы
На рисунке 1 изображена блок-схема разработанной программы.
Начало |
Ввод пункта меню s |
s==’1’ |
s==’2’ |
s==’8’ |
s==’7’ |
s==’6’ |
s==’3’ |
s==’4’ |
s==’5’ |
Конец |
Вывод в строку |
Ввод пункта меню s |
Ввод строки str |
Вывод в столбец |
Вывод по словам |
Реверсирование строки |
Формирование таблицы |
Вывод инф. о программе |
Да |
Нет |
Да |
Да |
Да |
Да |
Да |
Да |
Да |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Нет |
Рисунок 1. Блок-схема разработанной программы.
Текст разработанной программы
#pragma hdrstop
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <string.h>
#include <iomanip>
#include <math.h>
using namespace std;
char s[1000];
#ifndef RUS_H // Обеспечивает перекодировку символов кириллицы в кодировку DOS для корректного вывода кириллицы на экран.
#define RUS_H
#include <windows.h>
void InputStr(); // Функция ввода строки
void InputStr()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale (LC_CTYPE,"Russian");
char ch;
memset(s, '\0', sizeof(s) - 1);
do s[strlen(s)] = fgetc(stdin);
while ((s[strlen(s)-1] != '\n') && (strlen(s)<1000));
fflush(stdin);
}
#endif
void OutStolb(); // Функция вывода строки в столбец.
void OutStolb()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
setlocale (LC_CTYPE,"Russian");
for (int i = 0; i <= strlen(s)-1; i++) {
setlocale (LC_CTYPE,"Russian");
cout<<s[i];
cout<<endl;
}
}
void OneWord(); // Функция вывода текста по строкам - одно слово в строке.
void OneWord()
{
setlocale (LC_CTYPE,"Russian");
for (int i = 0; i <= strlen(s)-1; i++) {
setlocale (LC_CTYPE,"Russian");
cout<<s[i];
if(s[i]==' ') cout<<endl;
}
}
void Table(); // Функция вывода таблицы.
void Table()
{
setlocale (LC_CTYPE,"Russian");
cout<<setw(5)<<" "; // Вывод верхней строки.
for (int i = 1; i <= 7; i++) {
setlocale (LC_CTYPE,"Russian");
cout<<setw(8)<<"n="<<i;
}
cout<<endl;
float xn, s;
for (float x = 0.1; x <= 0.5; x+=0.1) {
cout<<"x="<<x<<" ";
float s=0;
for (float n = 1; n <= 7; n++) {
setlocale (LC_CTYPE,"Russian");
s+=n;
xn=2.5e-3*n*(exp(x/0.025)-1)+2.0*s;
cout<<setw(10)<<setprecision(3)<<xn;
}
cout<<endl;
}
}
int main(int argc, char* argv[])
{
using namespace std;
setlocale (LC_CTYPE,"Russian");
while (true) // Зацикливание
{
cout<<endl<<endl<<endl<<endl<<endl;
cout<<"Выберите пункт меню:"<<endl;
cout<<"1. Ввод текстовой строки."<<endl;
cout<<"2. Вывод введённого текста в строку."<<endl;
cout<<"3. Вывод введённого текста в столбец."<<endl;
cout<<"4. Вывод введённого текста по строкам, каждое из которых содержит одно слово."<<endl;
cout<<"5. Реверсирование введённого текста."<<endl;
cout<<"6. Формирование таблицы y=f(x,n)."<<endl;
cout<<"7. Вывод информации о программе и её разработчике."<<endl;
cout<<"8. Выход из программы."<<endl;
switch (getch()) { // Выбор действия в зависимости от введённого числа.
case '1': cout<<endl<<"Введите строку:"<<endl; InputStr(); cout<<endl<<"Строка введена"<<endl;break;
case '2': cout<<endl<<"Результат:"<<endl; puts(s); break;
case '3': cout<<endl<<"Результат:"<<endl; OutStolb(); cout<<endl; break;
case '4': cout<<endl<<"Результат:"<<endl; OneWord(); break;
case '5': strrev(s); cout<<endl<<"Строка реверсирована."<<endl; break;
case '6': cout<<endl; cout<<"Вывод таблицы значений функции y=f(x,n)"<<endl<<"y=2.5e-3*n*(exp(x/0.025)-1)+2.0*s"<<endl<<endl; Table(); break;
case '7': cout<<endl<<"Данная программа написана на языке C++ Builder с помощью интегрированной среды разработки Microsoft Visual Studio 2010 по техническому заданию на курсовой проект."<<endl;
cout<<"Автор программы Дорошков Артем Демьянович. Группа 3091. ЛЭТИ."<<endl<<"2014"<<endl; break;
case '8': exit(0); break; // Выход без ошибки.
default: exit(1); // Выход с ошибкой.
}
setlocale (LC_CTYPE,"Russian");
}
return 0;
}