Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик ПиОА / СправПосЛР89.doc
Скачиваний:
33
Добавлен:
22.03.2015
Размер:
524.8 Кб
Скачать

13.2 Использование специальных диалоговых окон

а) Вывод сообщений

Примеры:

1) ShowMessage(“Строка сообщения”);

2) ShowMessagePos(“Строка сообщения”,50,100);

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

б) Ввод строки

AnsiStringInputBox(“Название окна”, “Название того, что вводится в поле редактирования”, “Начальное значение строки редактирования”);

Функция возвращает строку типа AnsiString, значение которой введено в поле редактирования.

Пример:

AnsiStringst=InputBox(“Ввод исходных параметров”, “Введите значениеa”,” ”);

14. Примеры решения задач

14.1 Пример программирования итерационных задач

Задача.Составить фрагмент программы вычисления выражения

Вывод итерационной формулы:

=

sk = sk-1

Обозначим sk (sk-1) черезs1. Тогда получим следующий фрагмент программы:

s = 1; k = 1;

do{ s1 = - s1 * pow(x,3) / ((3*k-2)*(3*k-1)*3*k);

s += s1; k++; }

while(s1 > 0.0001);

14.2 Пример решения задачи поиска в неупорядоченной последовательности

Задача.Дан массива,размерностьюn. Найти минимальный элемент и определить его индекс.

Фрагмент программы:

inta[10] = {6,9,10,3,2,1,0,5,7,8}; // определение массива и его инициализация

int min = a[0]; int imin, i;

for(i = 1; i<10; i++) if(a[i]<min) {min = a[i]; imin = i;}

cout << min << “ “ << imin;

    1. Создание динамической матрицы

Фрагмент программы:

cin >> n;

inti, **p=newint*[n]; // создание динамического массива указателей

for(i=0;i<n;i++)p[i] =newint[n]; // инициализация массива указателей адресами

// динамических строк

/* Использование массива */

  

for(i=0;i<n;i++)delete[]p[i]; // удаление динамических строк

delete[]p; // удаление массива указателей

    1. Программирование обмена с файлами в стиле Си

Примеры:

1)Вывод данных в файл

#include<ofstream.h>

voidmain(){

ofstreamfile(“Temp.txt”); // создание (открытие) файла с заданным именем и

// объекта-потока с именем file

charbuff[] = “Текстовый массив”;

int vx = 100; float pi = 3.14159;

file << buff << endl << vx << endl << pi << endl;

}

2) Ввод данных из файла

#include <ifstream.h>

void main(){

ifstreamfile(“Temp.txt”); // открытие файла с заданным именем и

// создание объекта-потока с именем file

char buff[100];

int vx; float pi;

file.getline(buff, sizeof(buff));

file >> vx >> pi;

}

3) Обмен структурными объектами

#include <stdio.h>

stud studAP11[10]; int pn=0;

FILE *fp1;

void cleare()

{ for(int i=0;i<pn;i++){

Form1->StringGrid1->Cells[0][i+1]=0;

Form1->StringGrid1->Cells[1][i+1]=" ";

Form1->StringGrid1->Cells[2][i+1]=0;

Form1->StringGrid1->Cells[3][i+1]=" ";

}

}

void __fastcall TForm1::SaveClick(TObject *Sender)

{ fp1=fopen("Fname.txt","w+");

fwrite(&studAP11,sizeof(stud),pn,fp1);

fclose(fp1);

}

void __fastcall TForm1::ReadClick(TObject *Sender)

{ fp1=fopen("Fname.txt","r");

fread(&studAP11,sizeof(stud),pn,fp1);

fclose(fp1);

cleare();

for(int i=0;i<pn;i++){

StringGrid1->Cells[1][i+1]=studAP11[i].Fam;

StringGrid1->Cells[2][i+1]=IntToStr(studAP11[i].GR);

StringGrid1->Cells[3][i+1]=studAP11[i].Sp; }

}

    1. Операции с файлами с помощью компонентов

Работа с текстовыми файлами может осуществляться с помощью методов LoadFromFile и SaveToFile, имеющихся у классов Tstrings и TStringList. Эти классы описывают списки строк и обладают множеством методов, позволяющих манипулировать строками.

Если вы хотите в своем приложении прочитать содержимое некоторого тексто­вого файла, обработать текст и сохранить его в файле, вы можете сделать это сле­дующим образом. Объявите и создайте две глобальные переменные: список типа TStringList, в котором будет храниться текст файла, и строковую переменную типа AnsiString, в которой можете сформировать имя файла. Например:

TStringList *List = new TStringList;

AnsiString SFile = “Test.txt";

He забудьте только, что если требуемый файл расположен не в текущем ката­логе и вам надо указать путь к файлу, то обратные слэши в записи пути должны быть сдвоенные. Например, если вам требуется файл "c:\MyTest\Test.txt", то вы должны записать его как "c:\\MyTest\\Test.txt".

В момент, когда вы хотите загрузить в свой список файл, надо выполнить опе­ратор

List->LoadFromFile(SFile);

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

try{ List->LoadFromFile(SFile); }

catch(...){ShowMessage("Файл V" + SFile + "\" не найден"); }

Если файл нормально загрузился в список List, вы можете работать с его тек­стом. Текст расположен в свойстве списка Strings[int Index], в котором каждая строка имеет тип AnsiString. Индексы начинаются с нуля. Для нашего примера List—>Strings[O] — это первая строка, List—>Strings[l] — вторая и т.д.

Для списков типа TStringList предусмотрено множество методов. При обра­ботке отдельных строк вы можете использовать операции и методы, предусмотрен­ные для строк типа AnsiString.

Если вы хотите сохранить файл после проведенного редактирования, можно выполнить оператор

List->SaveToFile(SFile);

где SFile содержит прежнее или новое имя файла.

При открытии и сохранении файла вы можете воспользоваться стандартными диалогами Windows, вызываемыми через соответствующие компоненты С++Вuilder.

Если вы открываете файл для того, чтобы пользователь мог его просмотреть, что-то в нем отредактировать и сохранить, вы можете обойтись без описанного выше объекта типа TStringList. Для этих целей проще воспользоваться много­строчными окнами редактирования типов ТМеmо или TRichEdit. В последнем случае вы можете работать не только с обычными текстовыми файлами, но и с файлами в обогащенном формате RTF. Свойства Lines этих компонентов имеют тип TStrings, что позволяет применять к ним непосредственно методы LoadFromFile и SaveToFile. Например:

Memol->Lines->LoadFromFile(SFile);

RichEditl->Lines->LoadFromFile(SFile);

Через компоненты C++Builder можно работать не только с текстовыми файла­ми, но и с файлами изображений и мультимедиа.

Соседние файлы в папке Курсовик ПиОА