- •Задания:
- •Часть1. Задания для среды MathCad:
- •Часть 1. Интегрированная система MathCad предназначена для решения математических задач. Сущность задачи состоит в самостоятельном изучении MathCad и выполнения задач вычислительной практики.
- •1.Практические задания.
- •Часть 3. Задать функцию f(X), график которой будет рисовать соответствующую последовательность символов. Построить график на интервале, изображающем последовательность символов.
- •Часть 1.
- •Часть 2. Рассчитать методом трапеций интеграл заданной функции, с разбиением заданного интервала на 10 отрезков. Сравнить полученный результат с точным значением, рассчитанным символьным методом.
- •Часть 2. Считать из файла sys.Txt систему линейных алгебраических уравнений и решить её. Рассчитать определитель матрицы свободных коэффициентов. Ответ сохранить в файл sysx.Txt в виде:
- •Часть 2.
- •2. Практические задания.
- •3. Практические задания.
- •4. Практические задания.
- •5. Практические задания.
4. Практические задания.
Задание № 3.3
В приводимых ниже заданиях организовать вычисление с помощью полосы прокрутки для различных n. Причём, предусмотреть вычисление, как в цикле, так и по формуле, приведенной в правой части выражения.
1 + 3 + 5 + … + (2n – 1) = n2
Внешний вид формы:
Рисунок №4.1
На форме расположены следующие компоненты:
Label – 2 штуки. Присутствует для отображения какой-то информации. В данной программе отображается значение n получаемой в результате прокручивания полосы прокрутки, а также значения полученные в результате вычислений по формуле.
TextBox – 3 штуки. Присутствует для ввода данных.
Во время работы программы сущность подсчёта не видна. Для этого следует посмотреть болк-схему алгоритма программы. Так как при прокручивании бегунка мы видим лишь результат вычислений, а нам необходимо узнать как именно шел подсчёт данных.
Окно программы во время работы:
Рисунок №4.2
Рисунок №4.3
Прокручивая полосу прокрутки мы получаем значения n. Полученные значения n мы считаем исходя из формул в правой и левой части (см. условие). Как происходит подсчёт смотри блок схему vScrollBar1_Scroll .
Исходный код представлен в приложении В.
Вывод textBox3->Text=(hScrollBar1->Value).ToString();
Начало
Ввод n=int::Parse(textBox3->Text);
k=1;
i=1;i<=n;i++
k*=-1;
x2=(n*n)
Вывод textBox2->Text=x2.ToString();
k=1;x1=0;
i=1;i<=n;i++
x1=2*n-1
Вывод textBox1->Text=x1.ToString();
Конец
Рисунок №4.4
private: System::Void hScrollBar1_Scroll(System::Object^ sender, System::Windows::Forms::ScrollEventArgs^ e) {
textBox3->Text=(hScrollBar1->Value).ToString();
double x1,x2,i,k,n;
n=int::Parse(textBox3->Text);
//считаем по формуле во 2ое поле
k=1;
for(i=1;i<=n;i++)k*=-1;
x2=(n*n);
textBox2->Text=x2.ToString();
//считаем циклом
k=1;x1=0;
for(i=1;i<=n;i++){
x1=2*n-1;}
textBox1->Text=x1.ToString();}};}
5. Практические задания.
Задание №4.3.
Дана запись с именем STUDENT, содержащая следующие поля:
- Фамилия и инициалы;
- Номер группы;
- Успеваемость (массив из пяти элементов);
Написать программу, которая выполняет следующие действия:
- Ввод с клавиатуры данных из 10 записей типа STUDENT, и занесение их в файл данных;
- Чтение данных из файла и вывод их на экран;
- Вывод на экран фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2 (если таких нет – вывести об этом сообщение);
Список студентов должен быть упорядочен по алфавиту фамилий.
Внешний вид формы
Рисунок №5.1
На форме расположены следующие компоненты:
richTextBox – 2 штуки (выделены желтым прямоугольником и имеют метку 2). Компонент предназначен для ввода текста. В данной программе он предназначен для ввода сведений о студентах, затем их сохранение, сортировка и т.д.
Buttton – 6 штук (выделены красным прямоугольником и имеют метку 1). Присутствует для вызова события. В данной программе вызываются разные события. Смотри блок-схемы.
Окна программы во время работы
Рисунок №5.2
Рисунок №6.3
При загрузке формы активными являются только две кнопки «Открыть» и «Выход». Как только мы начнём вводить какую – то информацию активными становятся остальные кнопка. Это было сделано из соображений логики. Так как мы только начинаем работу, то нам нечего фильтровать, сортировать и т.д. В процессе работы мы можем сохранять данные. Открыть уже заранее сделанный файл. Отсортировать данные по алфавиту. Отфильтровать данные. Исходный код представлен в приложении Г.
Блок-схема алгоритма программы
начало
button2->Enabled=false button3->Enabled=false button4->Enabled=false button5->Enabled=false openFileDialog1->Filter="RTF|*.rtf" saveFileDialog1->Filter="RTF|*.rtf"
конец
Рисунок №5.4
Событие
возникающее непосредственно при
гагрузке формы. Устанавливается фильтр
на расширение файлов(то есть открыть
и сохранить можно только RTF
файлы). Делаются неактивными кнопки
«Сохранить», «Фильтровать», «Сортировать»,
«Очистить».
Рисунок №5.5
начало
Close()
конец
Рисунок №5.6
Блок-схема
button6_Click.
Событие возникающее при нажатии на
клавишу «Выход». Вызывается функция
Close(),
что приводит к закрытию окна программы.
начало
button2>Enabled=true button3->Enabled=true button4->Enabled=true button5->Enabled=true
конец
Рисунок №5.7
Событие
возникающее при введении текста в
RichTextBox1.
Делаются активными кнопки «Сохранить»,
«Фильтровать», «Сортировать», «Очистить».
Рисунок №5.8
начало
saveFileDialog1->ShowDialog() richTextBox1->SaveFile(saveFileDialog1->FileName)
конец
Рисунок №5.9
Событие
возникающее при нажатие на кнопку
Сохранить. Вызывается диологовое окно
предлагающее нам ввести имя файла и
место куда следует его сохранить.
Рисунок №5.10
конец
начало
openFileDialog1->ShowDialog() richTextBox1->LoadFile(openFileDialog1->FileName)
Рисунок №5.11
Событие
возникающее при нажатие на кнопку
Сохранить. Вызывается диологовое окно
предлагающее нам открыть файл или
выбрать место где находится нужный нам
файл.
Рисунок №5.12
конец
начало
richTextBox1->Clear() listBox1->Items->Clear() richTextBox2->Clear()
Рисунок №5.13
Событие
возникающее при нажатие на кнопку
Очистить. С помощью функций Clear()
которыми обладают richTextBox
и ListBox
происходит их очистка от введеных
данных.
конец
начало
listBox1->Items->AddRange(richTextBox1->Lines)
Рисунок №5.14
Событие
возникающее при нажатие на кнопку
Сортировать. Данные добавляются в
компонент ListBox
из компонента richTextBox.
В компоненте ListBox
было использовано его свойство Sorted()
в котором мы установили значение true.
Теперь вседанные в компоненте ListBox
будут сортировать по алфавиту.
Рисунок №5.15
начало
richTextBox2->Clear() listBox1->Items->Clear() int
n=richTextBox1->Lines->Length
i=0;i<n;i++
Нет
richTextBox2->Text=richTextBox2->Text+"\n"+richTextBox1->Lines[i]
Да
sum>=1
Нет
sum++
Да
oc[i][j])==2
j=0;j<=5;j++
int
sum=0
i=0;i<n;i++
int
ns=richTextBox1->Lines[i]->Length; s=richTextBox1->Lines[i]; s=s+"
"; int
k0=s->IndexOf("
"); int
k1=s->IndexOf("
",k0+1); int
k2=s->IndexOf("
",k1+1); soc=s->Substring(k1+1,k2-k1); oc[i][1]=Int32::Parse(soc); int
k3=s->IndexOf("
",k2+1); soc=s->Substring(k2+1,k3-k2); oc[i][2]=Int32::Parse(soc); int
k4=s->IndexOf("
",k3+1); soc=s->Substring(k3+1,k4-k3); oc[i][3]=Int32::Parse(soc); int
k5=s->IndexOf("
",k4+1); soc=s->Substring(k4+1,k5-k4); oc[i][4]=Int32::Parse(soc); int
k6=s->IndexOf("
",k5+1); soc=s->Substring(k5+1,k6-k5); oc[i][5]=Int32::Parse(soc);
1
2
Да
richTextBox2->Lines->Length==0
Нет
listBox1->Items->Add("Таких
нет")
Рисунок
№5.16
listBox1->Items->AddRange(richTextBox2->Lines)
конец
Анализ
1 блок-схемы:
Считывается
строка в ней начинают вычленяться
пробелы. Дойдя до нужного нам пробела,
тоесть до места где идут оценки студента
мы добавляем его в двумерный массив.
Дойдя до второй оценки мы опять её
вычлиняем и добавляем во всё тот же
двумерный массив. И так далее.
Анализ
2 блок-схемы:
Как
вычленили все пять оценок начинаем их
проврять на наличие хотя бы одной
двойки. Если получившееся количество
двоек больше 1, то тогда его добавляем
в richTextBox.
Затем если в компоненте richTextBox
число заполненых линий равно нулю, то
в компонент ListBox
добавляем фразу о том, что двоечников
нет. Иначе добавляем в компонент ListBox
содержимое
компонента richTextBox
(Рисунок 4.6).
Рисунок №5.17
Проверка работы программы
Рисунок №5.18
Рисунок №5.19
Рисунок №5.20
Рисунок №5.21
Программа работает верно.
Список использованных источников.
Шелупанов А.А., Кирнос В.Н. Информатика. Базовый курс / Учебник (в четырех частях). Ч. 3. Основы алгоритмизации и программирования в среде Visual C++ 2005. – Томск: В-Спектр, 2009. – 216 с.
2) Кирнос В.Н. Учебно-методическое пособие по вычислительной практике – 127 с.
Приложение 1.
Руководство пользователю.
Для запуска программы необходимо перейти в папку с программой и запустить имеющееся в ней exe файл. Например:
X:\Visual C++\Задание 1\Lab1.exe где Х-метка тома.
Характеристики программ
|
Лаб. Раб. №1 |
Лаб. Раб. №2 |
Лаб. Раб. №3 |
Лаб. Раб. №4 |
Занимаемая память (Кб) |
54 |
53 |
50 |
52 |
Ресурс ОП (Кб) |
4 868 |
5 196 |
5 188 |
4 832 |
Совместимость |
||||
Windows XP (sp3.) |
+ |
+ |
+ |
+ |
Windows Vista (sp1.) |
+ |
+ |
+ |
+ |
Приложение А.
(обязательно)
Листинг.
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {float R,R1,R2;
R1=float::Parse(textBox1->Text);
R2=float::Parse(textBox2->Text);
R=R1+R2;
textBox3->Text=R.ToString()+" Ом";
}
};
}
Приложение Б.
(обязательно)
Листинг.
#pragma endregion
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
Close(); }
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { groupBox2->Enabled=false;
button1->Enabled=false;
button2->Enabled=false;}
private: System::Void textBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {
button2->Enabled=true;
if (! ((e->KeyChar>='0')&&(e->KeyChar<='9')||(e->KeyChar==',')||(e->KeyChar==char(8))||(e->KeyChar=='-')))
{e->KeyChar=Char(0);} }
private: System::Void textBox2_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {
button2->Enabled=true;
groupBox2->Enabled=true;
if (! ((e->KeyChar>='0')&&(e->KeyChar<='9')||(e->KeyChar==',')||(e->KeyChar==char(8))||(e->KeyChar=='-')))
{e->KeyChar=Char(0);} }
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
textBox1->Text=" ";
textBox2->Text=" ";
label4->Text=" ";
radioButton1->Checked=false;
radioButton2->Checked=false;
groupBox2->Enabled=false;
button1->Enabled=false;}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
float a=0.0,b=0.0;
a=float::Parse(textBox1->Text);
b=float::Parse(textBox2->Text);
if (radioButton1->Checked)
{ if (a>b)
{label4->Text="A - max";}
if (b>a)
{label4->Text="B - max";}}
if (radioButton2->Checked)
{if (a<b)
{label4->Text="A - min";}
if (b<a)
{label4->Text="B - min";} }
if (a==b)
{label4->Text="ОШИБКА! числа равны";} }
private: System::Void radioButton1_Click(System::Object^ sender, System::EventArgs^ e) {
button1->Enabled=true; }
private: System::Void radioButton2_Click(System::Object^ sender, System::EventArgs^ e) {
button1->Enabled=true; }
};
}
Приложение B.
(обязательно)
Листинг.
#pragma endregion
private: System::Void hScrollBar1_Scroll(System::Object^ sender, System::Windows::Forms::ScrollEventArgs^ e) {
textBox3->Text=(hScrollBar1->Value).ToString();
double x1,x2,i,k,n;
n=int::Parse(textBox3->Text);
//считаем по формуле во 2ое поле
k=1;
for(i=1;i<=n;i++)k*=-1;
x2=(n*n);
textBox2->Text=x2.ToString();
//считаем циклом
k=2;x1=0;
for(i=1;i<=n;i++){
k*=-1;x1=(2*n-1);}
textBox1->Text=x1.ToString();}
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
}
};
}
Приложение Г.
(обязательно)
Листинг.
#pragma endregion
private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {
button2->Enabled=false;
button3->Enabled=false;
button4->Enabled=false;
button5->Enabled=false;
openFileDialog1->Filter="RTF|*.rtf";
saveFileDialog1->Filter="RTF|*.rtf";}
private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) {
Close();}
private: System::Void richTextBox1_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) {
button2->Enabled=true;
button3->Enabled=true;
button4->Enabled=true;
button5->Enabled=true;}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
saveFileDialog1->ShowDialog();
richTextBox1->SaveFile(saveFileDialog1->FileName);}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
openFileDialog1->ShowDialog();
richTextBox1->LoadFile(openFileDialog1->FileName);}
private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) {
richTextBox1->Clear();
listBox1->Items->Clear();
richTextBox2->Clear();}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
listBox1->Items->AddRange(richTextBox1->Lines);}
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
String^ s; String^ soc; int i,j; int oc[20][5]; int a=0;
richTextBox2->Clear();
listBox1->Items->Clear();
int n=richTextBox1->Lines->Length;
for (i=0;i<n;i++)
{int ns=richTextBox1->Lines[i]->Length;
s=richTextBox1->Lines[i];
s=s+" ";
int k0=s->IndexOf(" ");
int k1=s->IndexOf(" ",k0+1);
int k2=s->IndexOf(" ",k1+1);
soc=s->Substring(k1+1,k2-k1);
oc[i][1]=Int32::Parse(soc);
int k3=s->IndexOf(" ",k2+1);
soc=s->Substring(k2+1,k3-k2);
oc[i][2]=Int32::Parse(soc);
int k4=s->IndexOf(" ",k3+1);
soc=s->Substring(k3+1,k4-k3);
oc[i][3]=Int32::Parse(soc);
int k5=s->IndexOf(" ",k4+1);
soc=s->Substring(k4+1,k5-k4);
oc[i][4]=Int32::Parse(soc);
int k6=s->IndexOf(" ",k5+1);
soc=s->Substring(k5+1,k6-k5);
oc[i][5]=Int32::Parse(soc);}
for (i=0;i<n;i++){
int sum=0;
for(j=0;j<=5;j++)
{if ((oc[i][j])==2) sum++;}
if (sum>=1){
richTextBox2->Text=richTextBox2->Text+"\n"+richTextBox1->Lines[i];}
}
if (richTextBox2->Lines->Length==0) {listBox1->Items->Add("Таких нет");}
listBox1->Items->AddRange(richTextBox2->Lines);
}
}
;}