С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 6

Обработка текстовых файлов

07.06.2011, 16:19. Показов 2068. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В приводимых ниже заданиях следует разработать програм-
му с использованием кнопок на форме (см. пример ниже). Дан-
ные рекомендуется вводить с использованием объекта Memo и
сохранять их в текстовом файле. Вывод на экран также произво-
дить в область Мемо. В качестве примера приведем выполнение
следующего задания:
Дана запись с именем STUDENT, содержащая следующие поля:
· Фамилия и инициалы;
· Номер группы;
· Успеваемость (массив из пяти элементов).
Написать программу, которая выполняет следующие действия:
· Ввод с клавиатуры данных из 10 записей типа STUDENT, и
занесение их в файл данных;
· Чтение данных из файла и вывод их на экран;
· Вывод на экран фамилий, номеров групп и оценок для всех
студентов, которые являются круглыми отличниками (если таких нет –
вывести об этом сообщение);
· Список должен быть упорядочен по возрастанию номера группы.
Обратите внимание на два объекта – openFileDialog и saveFileDialog .
Они нам потребуются для организации диалога при вводе данных в файл
(и последующего сохранения), а также при считывании из файла.
При первоначальном запуске данные на форме вносятся в поле
richTextBox (в соответствии с той структурой, которая указана в задании),
причем в пределах строки – данные одного студента: фамилия студента,
номер группы, каждая из оценок вносятся через пробел.
Кнопка «Сохранить» служит для сохранения данных из окна
richTextBox. Функция для кнопки «Сохранить» имеет вид:
C++
1
2
3
4
5
private: System::Void button3_Click(System::Object^
sender, System::EventArgs^ e) {
saveFileDialog1->ShowDialog();
richTextBox1->SaveFile(saveFileDialog1-
>FileName);
При этом откроется окно диалога
В этом окне нужно будет перейти на нужный диск и в нужную папку, а за-
тем указать имя файла. Рекомендуется указывать у файла расширение rtf.
Затем рекомендуется поле Memo очистить с помощью кнопки «Очи-
стить», функция для которой имеет вид:
C++
1
2
3
4
private: System::Void button2_Click(System::Object^
sender, System::EventArgs^ e) {
richTextBox1->Clear();
}
Далее следует файл открыть – кнопкой «Открыть», имеющей функцию:
C++
1
2
3
4
5
6
private: System::Void button1_Click(System::Object^
sender, System::EventArgs^ e) {
openFileDialog1->ShowDialog();
richTextBox1->LoadFile(openFileDialog1-
>FileName);
}
При выполнении этой функции появится аналогичное окно диалога (рис.
И-8). И здесь нужно будет перейти в соответствующий каталог (папку) и
выбрать нужный для открытия файл. Обратите внимание, что мы здесь за-
ранее ограничили список файлами текстового типа (rtf). Такой фильтр
обеспечивается выполнением (при запуске приложения, т.е. при открытии
формы) функции вида:
240
C++
1
2
3
4
5
6
private: System::Void Form1_Load(System::Object^
sender, System::EventArgs^ e) {
// фильтр списка файлов
openFileDialog1->Filter="RTF|*.rtf";
saveFileDialog1->Filter="RTF|*.rtf";
}
Теперь данный список (из открытого файла) вновь появится в поле
richTextBox и его можно обрабатывать. Например, для сортировки (упоря-
дочения по номеру группы) следует нажать кнопку «Сортировать», со-
держащую функцию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
private: System::Void button4_Click(System::Object^ sender,
System::EventArgs^ e) {
int gr[20]; int i,j; String^ s;
int n=richTextBox1->Lines->Length; //n- число строк
for ( i=0;i<n;i++)
{int ns=richTextBox1->Lines[i]->Length;//ns– длина i-й строки
s =richTextBox1->Lines[i]; //вычленение i-й строки
int k0=s->IndexOf(" "); //поиск положения 1-го пробела
int k1=s->IndexOf(" ",k0+1); //положение 2-го пробела
String^ sgr=s->Substring(k0+1,k1-k0);//выделение подстроки
//между 1-м и 2-м пробелами - номер группы
gr[i]=Int32::Parse(sgr); //номер группы (в числовом виде)
}
//собственно сортировка поиском максимума
// и запоминанием порядка максимумов в массиве m
int k=0; int nmax, max, m[20];
for ( i=0;i<n;i++)
{ max=0;
for (j=0;j<n;j++)
{if (gr[j]>max) {max=gr[j];nmax=j;}}
m[k]=nmax;k=k+1;
gr[nmax]=0;}
richTextBox2->Clear();
// вывод упорядоченных строк в новое окно richTextBox2
for ( j=0;j<n;j++)
{richTextBox2->Text=
richTextBox2->Text+"\n"+richTextBox1->Lines[m[j]];
} }
Внимательно изучите данную функцию. Обратите внимание, например,
как вычисляется длина каждой строки.
Для преобразования номера группы (который в строке записан сим-
волами) в целое число используется функция Int32::Parse.
При нажатии на данную кнопку получим результат в отдельном окне
richTextBox
Далее потребуется отфильтровать список (в данном случае выделить от-
личников). Для этого служит кнопка «Отфильтровать» с функцией:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
private: System::Void button5_Click(System::Object^ sender,
System::EventArgs^ e) {
String^ s; String^ soc; int i,j; int oc[20][5];
int n=richTextBox1->Lines->Length; //n- число строк в окне RichTextBox
for ( i=0;i<n;i++)
{int ns=richTextBox1->Lines[i]->Length;//ns–длина i-й строки
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);
}
richTextBox2->Clear();
//отбор отличников
for ( i=0;i<n;i++)
{ int sum=0;
for (j=1;j<=5;j++)
{ if ((oc[i][j])==5) sum++;}
if (sum==5)
richTextBox2->Text=
richTextBox2->Text+"\n"+richTextBox1->Lines[i];
}
}
243
Здесь сначала вычленяются оценки каждого студента и подсчитывается их
количество. Поскольку заранее известно, что всего оценок пять штук, то
круглый отличник должен иметь пять «пятерок». В результате соответст-
вующую строку и выводим в поле richTextBox2 . Нажмем на эту кнопку
«Отфильтровать» и получим отдельно список отличников
Можно, кстати, такой отфильтрованный список записать в новый файл.
Для этого надо воспользоваться кнопкой «Сохранить» (но обратите вни-
мание, что мы выводим отличников в новом окне richTextBox2, поэтому
нужно будет поправить функцию для кнопки “Сохранить”). При нажатии
на нее потребуется указать имя (другое) файла и перейти, если нужно, в
другую папку. Потом уже отфильтрованный список можно открыть и про-
вести для него сортировку (т.е. упорядочить отдельно отличников).





Дана запись с именем WORKER, содержащая следующие поля:
· Фамилия и инициалы работника;
· Название занимаемой должности;
· Год поступления на работу.
Написать программу, которая выполняет следующие
действия:
· Ввод с клавиатуры данных из 10 элементов типа WORKER,
и занесение их в файл данных;
· Чтение данных из файла и вывод их на экраны
· вывод на экран фамилий работников, чей стаж работы в
организации превышает значение, введенное с клавиатуры
(если таких нет – вывести об этом сообщение);
· Список должен быть упорядочен по алфавиту фамилий.

 Комментарий модератора 
Используйте теги форматирования кода!
В следующий раз увижу настолько криво отформатированный код, да ещё без тегов - выдам карточку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.06.2011, 16:19
Ответы с готовыми решениями:

Обработка текстовых файлов
Пусть на МД имеется текстовый файл ID.DAT, который содержит числовые значения вещественного типа по два числа в каждой строке - значения...

Обработка текстовых файлов
Здравствуйте, у меня следующий вопрос по обработке текстовой информации есть текстовый файл следующего вида. и есть другой файл...

Обработка текстовых файлов
Всем доброго времени суток. Не могу найти литературу по данной теме. Не подскажете где взять?! Мне для отчёта надо в курсовую работу....

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2011, 16:19
Помогаю со студенческими работами здесь

Обработка текстовых файлов
Структура записи исходного документа имеет вид: **************************************************** * Ном. бригады * Ном. в бригаде *...

Обработка текстовых файлов
Помогите написать, Найти в текстовом файле все симметричные слова. Примеры симметричных слов: Anna, anpna.

Обработка текстовых файлов
помогите пожалуйста!!! есть программа: Дан исходный текстовый файл: Муз.Произведения в котором: -Название -Автор -Год -Стиль ...

обработка текстовых файлов
Товарищи,есть текстовый файл. в нем строка $$$ADDQUANTITY полсле неё идут строки,вида(первое длинное число уникально) после них...

Обработка текстовых файлов.
Помогите, а то я в них вообще запутался.... Добавлено через 1 час 2 минуты Ну помогите, кто может... var Form1: TForm1; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru