Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Структуры. Объявление структуры. Пример.




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

/* Пример 45 */

struct student{

char name[30];

int kurs;

char group[3];

int stip;

};

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

Структура объединяет логически связанные данные разных типов. Структурный тип данных определяется следующим описанием:

struct имя_структуры {

Описание_элементов

};

Пример:

struct dinner {

char *plase;

float cost;

struct dinner *next;

};

Структурная переменная описывается с помощью переменной структурного типа.

Примеры:

struct dinner week_days [7]; /* массив структур */

struct dinner best_one; /* одна структурная переменная */

struct dinner *p; /* указатель на структурную переменную */

 

Структуры. Доступ к отдельным элементам структуры. Пример.

Такой доступ осуществляется с помощью специального обозначения для выделенного компонента, имеющего следующий вид:

s.c

где s является именем структуры или значением структуры с компонентом c. s может быть выражением, дающим в результате значение структуры. Например, s может быть вызовом функции со структурой в качестве ее значения. К компонентам определенной выше структуры date1 можно обратиться, указав их обозначения:

date1.year

date1.month

date1.day

Работа с файлами. Открытие и закрытие файла.

Файл – именованный набор байтов, который может быть сохранен на некотором накопителе. Ну, теперь ясно, что под файлом понимается некоторая последовательность байтов, которая имеет своё, уникальное имя, например файл.txt.

Большинство компьютерных программ работают с файлами, и поэтому возникает необходимость создавать, удалять, записывать читать, открывать файлы. Под файлом понимается некоторая последовательность байтов, которая имеет своё, уникальное имя, например файл.txt. Существует такое понятие, как полное имя файлов – это полный адрес к директории файла с указанием имени файла, например: D:\docs\file.txt. Классификация фалов данных: по типу элементов(текстовые, типизированные, нетипизированные), по методу доступа к элементам(файлы последовательного доступа, файлы прямого доступа). Условно файл данных- бесконечная лента, разделенная на ячейки. Имеется указатели с помощью которых идет доступ к этим ячейкам. В файлах последовательного доступа-указатель всегда устанавливается в начале файла. В файлах прямого доступа-указатель устанавливается в любое место файла.

Открытие- FILE*fp=fopen(“C:\my_file.txt”,”w”); Закрытие- fclose(fp);

Работа с файлами. Чтение из фала.

Файлы позволяют пользователю считывать большие объемы данных непосредственно с диска, не вводя их с клавиатуры. Существуют два основных типа файлов: текстовые и двоичные.

Текстовыми называются файлы, состоящие из любых символов. Они организуются по строкам, каждая из которых заканчивается символом «конца строки». Конец самого файла обозначается символом «конца файла». При записи информации в текстовый файл, просмотреть который можно с помощью любого текстового редактора, все данные преобразуются к символьному типу и хранятся в символьном виде.

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

Для работы с файлами используются специальные типы данных, называемые потоками. Поток ifstream служит для работы с файлами в режиме чтения, а ofstream в режиме записи. Для работы с файлами в режиме как записи, так и чтения служит поток fstream.

В программах на C++ при работе с текстовыми файлами необходимо подключать библиотеки iostream и fstream.

Для считывания данных из текстового файла, необходимо:

1. описать переменную типа ifstream.

2. открыть файл с помощью функции open.

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

4. закрыть файл.

Чтение информации из текстового файла

Для того чтобы прочитать информацию из текстового файла, необходимо описать переменную типа ifstream. После этого нужно открыть файл для чтения с помощью оператора open. Если переменную назвать F, то первые два оператора будут такими:

 

1 2 ifstream F; F.open("D:\\sites\\accounts.txt", ios::in);

 

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

Например, для чтения данных из потока F в переменную a, оператор ввода будет выглядеть так:

F>>a;

Два числа в текстовом редакторе считаются разделенными, если между ними есть хотя бы один из символов: пробел, табуляция, символ конца строки. Хорошо, когда программисту заранее известно, сколько и какие значения хранятся в текстовом файле. Однако часто известен лишь тип значений, хранящихся в файле, при этом их количество может быть различным. Для решения данной проблемы необходимо считывать значения из файла поочередно, а перед каждым считыванием проверять, достигнут ли конец файла. А поможет сделать это функция F.eof(). Здесь F — имя потока функция возвращает логическое значение: true или false, в зависимости от того достигнут ли конец файла.

Следовательно, цикл для чтения содержимого всего файла можно записать так:

 

1 2 3 4 5 6 7 8 9 //организуем для чтения значений из файла, выполнение//цикла прервется, когда достигнем конец файла,//в этом случае F.eof() вернет истину while (!F.eof()) { //чтение очередного значения из потока F в переменную a F>>a; //далее идет обработка значения переменной a }
   

Задача 2

В текстовом файле D:\\game\\accounts.txt хранятся вещественные числа, вывести их на экран и вычислить их количество.

Решение

 

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 38 39 #include "stdafx.h"#include <iostream>#include <fstream>#include <iomanip>#include <stdlib.h> using namespace std; int main() { setlocale (LC_ALL, "RUS"); int n=0; float a; fstream F; //открываем файл в режиме чтения F.open("D:\\sites\\accounts.txt"); //если открытие файла прошло корректно, то if (F) { //цикл для чтения значений из файла; выполнение цикла прервется,//когда достигнем конца файла, в этом случае F.eof() вернет истину. while (!F.eof()) { //чтение очередного значения из потока F в переменную a F>>a; //вывод значения переменной a на экран cout<<a<<"\t"; //увеличение количества считанных чисел n++; } //закрытие потока F.close(); //вовод на экран количества считанных чисел cout<<"n="<<n<<endl; } //если открытие файла прошло некорректно, то вывод//сообщения об отсутствии такого файла else cout<<" Файл не существует"<<endl; system("pause"); return 0; }
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...