Федеральное агентство по образованию
Арзамасский политехнический институт (филиал)
Государственное образовательное учреждение высшего профессионального образования
"Нижегородский государственный технический университет" им. Р.Е. Алексеева
Кафедра "Прикладная математика"
Курсовая работа
по дисциплине
"Алгоритмические языки и программирование"
Выполнил студент
группы АСПМ 09-1
Балахонова О.В.
Проверил
Преподаватель
Лазарева А.Б
Арзамас 2010
1. Введение
2. Задача № 1
2.1 Блок – схема для ввода данных
2.2 Блок – схема для удаления элемента
2.3 Блок – схема для добавления элемента
2.4 Блок – схема главной функции
2.5 Листинг программы
2.6 Результаты работы программы
3. Задача № 2
3.1 Постановка задачи
3.2 Блок – схема для конструктора
3.3 Блок – схема для конструктора копий
3.4 Блок – схема для деструктора
3.5 Блок – схемы для доступа к закрытым полям
3.6 Блок – схема для перестановки
3.7 Блок – схема для приведения к треугольному виду
3.8 Блок – схема для аппроксимации
3.9 Блок-схема для обратной подстановки
3.10 Блок-схема для вычисления интеграла методом левых прямоугольников
3.11 Блок-схема для вычисления интеграла методом правых прямоугольников
3.12 Блок-схема для вычисления интеграла методом центральных прямоугольников
3.13 Блок-схема для вычисления интеграла методом Симпсона с автоматическим выбором шага
3.14 Листинг программы
3.15 Результаты работы программы
3.16 Теоретические сведения
Список использованных источников
1. Введение
В начале 80–х годов в фирме BellTelephoneLaboratories Бьерном Страуструпом (США) в результате дополнения и расширения языка С был создан язык, получивший название "С с классами". В 1983г. Это название было изменено на С++. В 1998г. Был утвержден окончательный стандарт языка С++.
В настоящее время С++ является одним из наиболее распространенных и востребованных языков программирования. Этот язык представляет собой фундамент, на котором строится современное программирование, поэтому он является обязательным элементом подготовки современных программистов, именно поэтому для студентов специальностей "Прикладная математика" и "Информационные системы и технологии" выбран этот язык.
2. Задача № 1
Постановка задачи
Создать файл и записать в него объекты структуры. Структура должна быть со следующими полями:
· Название команды
· Город
· Количество игроков
· Количество набранных очков
Из объектов структуры создается массив, заносится в файл. Вывести созданный файл на монитор, удалить из файла все элементы с количеством очков меньше заданного. Измененную базу данных записать в другой файл. Добавить К элементов в начало файла.
2.1Блок – схема для ввода данных
2.2 Блок – схема для удаления элемента
2.3 Блок – схема для добавления элемента
2.4 Блок – схема главной функции
2.5 Листингпрограммы
#include <iostream>
#include <string>
#include <cstdio>
#include <windows.h>
#include <fstream>
using namespace std;
struct set
{char name[50];
char city[20];
int pl;
int point;
};
void data(set a1[50],int& kol );
void udal(set a[50],ofstream& f,char str[15],int& kol);
void vvodf(char str[15],ofstream& f,set a[50],int& kol);
void dobav(set a[50],ofstream& f,char str[15],int& kol);
void vivod(set a[50],int& kol);
//главнаяфункция
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
set a[50];
int d;
ofstream f1;
char str1[15];
cout<<"Введитеполноеимяфайла \n"; cin>>str1;
data(a,d);
vvodf(str1,f1,a,d);
udal(a,f1,str1,d);
dobav(a,f1,str1,d);
}
//вводданных
void data(set a1[50],int& kol)
{ cout<<"\n Сколько записей вы хотите ввести? \n";
cin>>kol;
for(int i=0;i<kol;i++)
{
cout<<"\n Введите название команды "<<i+1<<"\n";
gets(a1[i].name);
cin.getline(a1[i].name,sizeof(a1[i].name));
cout<<"\n Введите название города \n";
cin>>a1[i].city;
cout<<"\n Введите количество игроков \n";
cin>>a1[i].pl;
cout<<"\n Введите набранных очков \n";
cin>>a1[i].point;
}
vivod(a1,kol);
}
//вводвфайл
void vvodf(char str[15],ofstream& f,set a[50],int& kol)
{ f.open(str);
if(f.fail()) {cout<<"Ошибкапривводефайла"; exit(1);}
for(int i=0;i<kol;i++)
{ f<<"***********************************************"<<endl;
f<<"Названиекоманды "<<i+1<<":"<<a[i].name<<endl;
f<<"Город: "<<a[i].city<<endl;
f<<"Количество игроков: "<<a[i].pl<<endl;
f<<"Количествоочков: "<<a[i].point<<endl;
f<<endl<<endl;
}
f.close();
}
//удалениеэлемента
void udal(set a[50],ofstream& f,char str[15],int& kol)
{ cout<<"Введите количество очков и все команды с меньшим значением будут удалены ";
int ef; cin>>ef; int z=0;int q=0;int m=0;
for(int i=0;i<kol;i++)
{if(a[i].point<ef) {z=i;
for(int i=z;i<kol;i++)
a[i]=a[i+1];
kol--;
m=1;
}
if (m==1) {i--;m=0;}
}
vvodf(str,f,a,kol);
vivod(a,kol);
}
//добавлениеэлемента
void dobav(set a[50],ofstream& f,char str[15],int& kol)
{
int koldob,nom=0;
cout<<"\n Сколько записей вы хотите добавить? \n"; cin>>koldob;
for(int i=kol-1;i>=nom;i--) a[i+koldob]=a[i];
f.open(str);
if(f.fail()) {cout<<"Ошибкаоткрытиифайла"; exit(1);}
for(int i=nom;i<nom+koldob;i++)
{
cout<<"\n Введите название команды "<<i+1<<" которую вы хотите добавить\n";
gets(a[i].name);
cin.getline(a[i].name,sizeof(a[i].name));
cout<<"\n Введите название города \n";
cin>>a[i].city;
cout<<"\n Введите количество игроков\n";
cin>>a[i].pl;
cout<<"\n Количествоочков \n";
cin>>a[i].point;
}
kol=kol+koldob;
f.close();
vvodf(str,f,a,kol);
vivod(a,kol);
}
void vivod(set a[50],int& kol)
{cout<<endl;
for(int i=0;i<kol;i++)
{cout<<"***********************************************"<<endl;
cout<<"Названиекоманды"<<i+1<<":"<<a[i].name<<endl;
cout<<"Город:"<<a[i].city<<endl;
cout<<"Количество игроков:"<<a[i].pl<<endl;
cout<<"Количествоочков:"<<a[i].point<<endl;
cout<<endl<<endl;
}
}
2.6 Результаты работы программы
Введите полное имя файла
Команда
Сколько записей вы хотите ввести?
4
Введите название команды 1
Спартак
Введите название города
Москва
Введите количество игроков
21
Введите набранных очков
42
Введите название команды 2
ЦСКА
Введите название города
Москва
Введите количество игроков
21
Введите набранных очков
38
Введите название команды 3
Локомотив
Введите название города
Москва
Введите количество игроков
21
Введите набранных очков
30
Введите название команды 4
Томь
Введите название города
Томь
Введите количество игроков
21
Введите набранных очков
26
Название команды1:Спартак
Город:Москва
Количество игроков:21
Количество очков:42
Название команды2:ЦСКА
Город:Москва
Количество игроков:21
Количество очков:38
Название команды3:Локомотив
Город:Москва
Количество игроков:21
Количество очков:30
Название команды4:Томь
Город:Томь
Количество игроков:21
Количество очков:26
Введите количество очков и все команды с меньшим значением будут удалены 38
Название команды1:Спартак
Город:Москва
Количество игроков:21
Название команды2:ЦСКА
Город:Москва
Количество игроков:21
Количество очков:38
Сколько записей вы хотите добавить?
1
Введите название команды 1 которую вы хотите добавить
Спартак
Введите название города
Нальчик
Введите количество игроков
21
Количество очков
28
Название команды1:Спартак
Город:Нальчик
Количество игроков:21
Количество очков:28
Название команды2:Спартак
Город:Москва
Количество игроков:21
Количество очков:42
Название команды3:ЦСКА
Город:Москва
Количество игроков:21
Количество очков:38
Для продолжения нажмите любую клавишу . . .
3. Задача № 2
3.1 Постановка задачи
Дана таблица значений функции. Требуется аппроксимировать ее полиномом 6й степени.
Для решения задачи необходимо решать систему линейных уравнений методом Гаусса или итераций.
Для решения системы линейных уравнений методом Гаусса необходимо создать классы с одномерным динамическим массивом и двумерным динамическим массивом, в которых должны быть:
· Конструктор;
· Конструктор по умолчанию;
· Конструктор копий;
· Деструктор;
· Методы доступа к закрытым полям;
· Метод для инициализации закрытого поля.
Вне классов должны перегружаться операции вставки и извлечения.
Должны быть добавлены функции или дружественные функции для:
1. Левых прямоугольников;
2. Правых прямоугольников;
3. Центральных прямоугольников;
4. Методом Симпсона с автоматическим выбором шага.
3.2 Блок – схема для конструктора
3.3 Блок – схема для конструктора копий
3.4 Блок – схема для деструктора
3.5 Блок – схемы для доступа к закрытым полям
3.6 Блок – схема для перестановки
3.7 Блок – схема для приведения к треугольному виду