Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
образец выч. практики.docx
Скачиваний:
32
Добавлен:
18.09.2019
Размер:
4.28 Mб
Скачать

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

Программа работает верно.

Список использованных источников.

  1. Шелупанов А.А., Кирнос В.Н. Информатика. Базовый курс / Учебник (в четырех частях). Ч. 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);

}

}

;}

73