Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Met_VCSharp_Forms

.pdf
Скачиваний:
17
Добавлен:
11.05.2015
Размер:
902.59 Кб
Скачать

 

 

 

51

 

3-13.

–1 3 + 23 – 3 3 + … + (–1)

n n3 = (1/8)*(1 – (–1)

n (1–6n 2 – 4n 3))

3-14.

–1 4 + 24 – 3 4 + … + (–1)

n n4 = (–1) n (n4 + 2n3 – n )/2

3-15.

15 + 25 + 35 + … + n5 = (1/12)*n2(n + 1)2(2n2 +2n – 1)

3-16.

15 – 2 5 + 35 – … +(–1)

n–1

n5 = (1/4)(1 + (–1) n (5n2 – 5n 4 – 2n 5 –1))

3-17. 1 + 3 + 5 + … + (2n + 1) = (n + 1) 2

 

3-18.

1 – 3 + 5 – 7 + … +(–1)

 

n(2n + 1) = (–1) n (n + 1)

3-19.

12 + 32 + 52 + … + (2n + 1) 2 = (1/3)(n + 1)(2n + 1)(2n + 3)

3-20.

12 – 3 2 + 52 – … + (–1)

n (2n + 1)2 = (–1) n 2(n + 1)2 – (1 + (–1) n)/2

3-21.

13 + 33 + 53 + … + (2n + 1) 3 = (n + 1)2(2n2 + 4n + 1)

3-22.

1*2 + 2*3 + … + n(n + 1) = (1/3)n(n + 1)(n + 2)

3-23.

1*2*3 + 2*3*4 + … + n(n + 1)(n + 2) = (1/4)n(n +

1)(n + 2)(n +3)

52

Раздел 4. Обработка текстовых файлов

Вприводимых ниже заданиях следует разработать программу

сиспользованием кнопок на форме (см. пример ниже). Данные рекомендуется вводить с использованием объекта richTextBox и сохранять их в текстовом файле формата rtf. Вывод на экран также производить в область richTextBox. В качестве примера приведем выполнение следующего задания:

Дана запись с именем STUDENT, содержащая следующие поля:

Фамилия и инициалы;

Номер группы;

Успеваемость (массив из пяти элементов).

Написать программу, которая выполняет следующие действия:

Ввод с клавиатуры данных из 10 записей типа STUDENT, и занесение их в файл данных;

Чтение данных из файла и вывод их на экран;

Вывод на экран фамилий, номеров групп и оценок для всех студентов, которые являются круглыми отличниками (если таких нет – вывести об этом сообщение);

Список должен быть упорядочен по возрастанию номера группы.

Форма должна иметь примерно такой вид (рис. И-5):

Рис.

И-5

Кр

оме

тог о, дол жн

о

быт

ь

ещ е размещено два объекта – openFileDialog и saveFileDialog . Они нам потребуются для организации диалога при вводе данных в файл (и

53

последующего сохранения), а также при считывании из файла.

При первоначальном запуске данные на форме вносятся в поле richTextBox (в соответствии с той структурой, которая указана в задании), причем в пределах строки – данные одного студента: фамилия студента, номер группы, каждая из оценок вносятся через пробел. Занесем, например, данные, приведенные на рис. И-6 (окно слева).

Ри с. И- 6

Кн

опк

а

«С

охр

ан

ить

»

слу

жит для сохранения данных из окна richTextBox. Функция для кнопки «Сохранить» имеет вид:

private void button3_Click(object sender, EventArgs e) {//сохранение файла

DialogResult res = MessageBox.Show("Сохранить левое окно?", "ВАЖНЫЙ вопрос!", MessageBoxButtons.YesNo);

if (res==DialogResult.Yes) {saveFileDialog1.ShowDialog(); richTextBox1.SaveFile(saveFileDialog1.FileName); }

else {saveFileDialog1.ShowDialog();

richTextBox2.SaveFile(saveFileDialog1.FileName);} }

При нажатии на кнопку «Сохранить» сначала появится окно диалога вида

(рис. И-7):

Рис. И-7

54

А после нажатия на кнопку «Да» (если сохраняем содержимое левого окна) или «Нет» - если правого, откроется окно диалога для сохранения (рис. И-

8):

Рис. И-8

В этом окне нужно будет перейти на нужный диск и в нужную папку, а затем указать имя файла. Рекомендуется указывать у файла расширение rtf.

Затем рекомендуется поле richTextBox очистить с помощью кнопки «Очистить», функция для которой имеет вид:

private void button2_Click(object sender,EventArgs e) {//очистка левого окна

richTextBox1.Clear();

}

Далее следует файл открыть – кнопкой «Открыть», имеющей функцию: private void button1_Click(object sender,EventArgs e)

{//открытие и чтение файла openFileDialog1.ShowDialog(); richTextBox1.LoadFile(openFileDialog1.FileName);

}

При выполнении этой функции также сначала появиться окно диалога —

55

какое содержимое сохранять (левого окна или правого) — см. рис. И-7. Затем появится окно выбора пути и имени файла для открытия (аналогично рис. И-8). И здесь нужно будет перейти в соответствующий каталог (папку) и выбрать нужный для открытия файл. Обратите внимание, что мы здесь заранее ограничили список файлами текстового типа (rtf). Такой фильтр обеспечивается выполнением (при запуске приложения, т.е. при открытии формы) функции вида:

private void Form1_Load(object sender, EventArgs e) {//фильтр списка файлов

openFileDialog1.Filter = "richTextFile|*.rtf"; saveFileDialog1.Filter = "richTextFile|*.rtf";

}

Теперь данный список (из открытого файла) вновь появится в поле richTextBox и его можно обрабатывать. Например, для сортировки (упорядочения по номеру группы) следует нажать кнопку «Сортировать», содержащую функцию:

private void button4_Click(object sender, EventArgs e) {//сортировка по номеру группы по убыванию

int n = richTextBox1.Lines.Length;// число строк string s; int i;

string[] buf; int[,] a = new int[n,5];

int[] gr = new int[n]; string[] fam= new string[n]; double[] sr=new double[n];

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

{int ns=richTextBox1.Lines[i].Length;//длина i-й строки s=richTextBox1.Lines[i];//очередная строка buf=s.Split(' ');//вычленение элементов в строке fam[i]=buf[0]; gr[i]=int.Parse(buf[1]);

}

//сортировка поиском максимума

//и запоминание порядка максимумов в массиве m int k = 0; int nmax, max; int[] m = new int[n]; for (i=0; i<n; i++)

{max = 0; nmax = 0;

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

{if (gr[j]>max) {max=gr[j]; nmax=j;}

}

m[k]=nmax; k++;

gr[nmax]=0;

}

richTextBox2.Clear();

56

//вывод упорядоченных строк в новое окно for (int j=0; j<n; j++)

{

richTextBox2.Text=richTextBox2.Text+"\n"+ richTextBox1.Lines[m[j]];

}

}

Внимательно изучите данную функцию. Обратите внимание, например, как вычисляется длина каждой строки и как далее вычленяются элементы строки: фамилия, номер группы.

Для преобразования номера группы (который в строке записан символами) в целое число используется функция int.Parse.

При нажатии на данную кнопку получим результат в отдельном окне richTextBox (см. рис. И-9, окошко справа). Как видно, список упорядочен по номеру группы в порядке убывания.

Ри с. И- 9

Да

лее

пот

реб

ует

ся

отф

иль

тро вать список (в данном случае выделить отличников). Для этого служит

кнопка «Отфильтровать» с функцией:

private void button5_Click(object sender, EventArgs e) {//отбор отличников и вывод во второе окошко

int n = richTextBox1.Lines.Length;// число строк string s; int i;

string[] buf; int[] a = new int[10];

int[] gr=new int[n]; string[] fam=new string[n]; double[] sr = new double[n]; richTextBox2.Clear();

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

57

{int ns = richTextBox1.Lines[i].Length;//длина i-й строки s = richTextBox1.Lines[i];

buf = s.Split(' ');

fam[i] = buf[0]; gr[i] = int.Parse(buf[1]); long sum=0, kol=0;

for (int j=2; j<buf.Length; j++) {a[j]=int.Parse(buf[j]); sum+=a[j]; kol++; } sr[i]=(double)sum/kol;

if (sr[i] == 5) richTextBox2.Text = richTextBox2.Text + "\n" + richTextBox1.Lines[i];

}

}

Здесь сначала вычленяются оценки каждого студента и подсчитывается их количество. Поскольку заранее известно, что всего оценок пять штук, то круглый отличник должен иметь пять «пятерок». В результате соответствующую строку и выводим в поле richTextBox2 . Нажмем на эту кнопку «Отфильтровать» и получим отдельно список отличников (см. рис. И-10,

пра

вое

око

шк о)

Ри с. И- 10

Мо

жн о, кст ати

, такой отфильтрованный список записать в новый файл. Для этого надо воспользоваться кнопкой «Сохранить» (при этом, напомним, будет окошко диалога, где и следует указать, что сохраняем содержимое правого окна). При нажатии на нее потребуется указать имя (другое) файла и перейти, если нужно, в другую папку. Потом уже отфильтрованный список можно открыть и провести для него сортировку (т.е. упорядочить отдельно отличников).

58

4-1. Дана запись с именем STUDENT, содержащая следующие поля:

Фамилия и инициалы;

Номер группы;

Успеваемость (массив из пяти элементов).

Написать программу, которая выполняет следующие действия:

Ввод с клавиатуры данных из 10 записей типа STUDENT, и занесение их в файл данных;

Чтение данных из файла и вывод их на экран;

Вывод на экран фамилий и номеров групп для всех студентов, если средний балл студента больше 4 (если таких нет – вывести об этом сообщение);

Список должен быть упорядочен по возрастанию номера группы.

4-2. Дана запись с именем STUDENT, содержащая следующие поля:

Фамилия и инициалы;

Номер группы;

Успеваемость (массив из пяти элементов).

Написать программу, которая выполняет следующие действия:

Ввод с клавиатуры данных из 10 записей типа STUDENT, и занесение их в файл данных;

Чтение данных из файла и вывод их на экран;

Вывод на экран фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5 (если таких нет – вывести об этом сообщение);

Список должен быть упорядочен по величине среднего балла.

4-3. Дана запись с именем STUDENT, содержащая следующие поля:

Фамилия и инициалы;

Номер группы;

Успеваемость (массив из пяти элементов);

Написать программу, которая выполняет следующие действия:

59

Ввод с клавиатуры данных из 10 записей типа STUDENT, и занесение их в файл данных;

Чтение данных из файла и вывод их на экран;

Вывод на экран фамилий и номеров групп для всех студентов, имеющих хотя бы одну оценку 2 (если таких нет – вывести об этом сообщение);

Список студентов должен быть упорядочен по алфавиту фамилий.

4-4. Дана запись с именем AEROFLOT, содержащая следующие поля:

Название пункта назначения рейса;

Номер рейса;

Тип самолета.

Написать программу, которая выполняет следующие действия:

Ввод с клавиатуры данных из 7 элементов типа AEROFLOT, и занесение их в файл данных;

Чтение данных из файла и вывод их на экран;

Вывод на экран номеров рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры (если таких нет – вывести об этом сообщение);

Список должен быть упорядочен по возрастанию номера рейса.

4-5. Дана запись с именем AEROFLOT, содержащая следующие поля:

Название пункта назначения рейса,

Номер рейса,

Тип самолета

Написать программу, которая выполняет следующие действия:

Ввод с клавиатуры из 7 элементов типа AEROFLOT, и занесение их в файл данных

Чтение данных из файла и вывод их на экран

вывод на экран пунктов назначения и номеров рейсов, обслуживаемых самолетом, тип которого введен с клавиатуры (если таких нет – вывести об этом сообщение)

60

Список должен быть упорядочен по алфавиту названий пунктов назначения.

4-6. ДаназаписьсименемWORKER, содержащаяследующиеполя:

Фамилия и инициалы работника;

Название занимаемой должности;

Год поступления на работу.

Написать программу, которая выполняет следующие действия:

Ввод с клавиатуры данных из 10 элементов типа WORKER, и занесение их в файл данных;

Чтение данных из файла и вывод их на экран;

вывод на экран фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры (если таких нет – вывести об этом сообщение);

Список должен быть упорядочен по алфавиту фамилий.

4-7. Дана запись с именем TRAIN, содержащая следующие поля:

Название пункта назначения;

Номер поезда;

Время отправления.

Написать программу, которая выполняет следующие действия:

Ввод с клавиатуры данных из 8 элементов типа TRAIN, и занесение их в файл данных;

Чтение данных из файла и вывод их на экран;

вывод на экран информации о поездах, отправляющихся после введенного с клавиатуры времени (если таких нет – вывести об этом сообщение);

Список должен быть упорядочен по алфавиту пунктов назначения.

4-8. Дана запись с именем TRAIN, содержащая следующие поля:

Название пункта назначения;

Номер поезда;

Время отправления.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]