Добавлен: 21.10.2018
Просмотров: 1966
Скачиваний: 6
31
соut<<"Месяц: "<<d.month<<endl;
соut<<"Год: "<<d.year<<endl;
}
void main(void)
{
d.day=2;
strcpy(d.month,"август"); //копировать название месяца в строку
d.year=1953;
show date(d);
//обращение к функции вывода даты
}
Этап 6.4. Исследование операторов работы с файлом
1. Переписать из листинга № 7 программу, иллюстрирующую механизм
создания текстового файла и записи в него текста, исследовать ее работу,
объяснить результат. Придумать пример по аналогии.
Листинг 7. Создать файл и записать в него текст
#include<fstream.h>
void main(void)
{
ofstream out_file("filel.txt") ;
//открытие файла
out_file<<"3aпись в файл. "<<endl;
out_fi1е<<"Режим создания."<<endl;
out_file.close();
//закрытие файла
};
2. Переписать из листинга № 8 программу, иллюстрирующую механизм
добавления текста в существующий файл, исследовать ее работу,
объяснить результат. Придумать пример по аналогии.
Листинг 8. Добавить текст в файл
#include<fstream.h>
void main(void)
{
ofstream out_file ("filel.txt",ios::app);
out_file<<"Peжим добавления "<<endl;
out_file.close();
}
3. Переписать из листинга № 9 программу, иллюстрирующую механизм
ввода трех первых слов из строки текста, записанного в файле,
исследовать ее работу, объяснить результат. Придумать пример по
аналогии.
Листинг 9. Ввод трех первых слов текста из файла
#include<iostream.h>
#include<fstream.h>
void main(void)
32
{
char a[64],b[64],c[64];
ifstream in_file("filel.txt");
in_file>>a>>b>>c;
cout«"Первая строка файла filel.txt: "<<a<<" "<<b<<" "<<c<<endl;
in_file.close();
}
4. Переписать из листинга № 10 программу, иллюстрирующую механизм
ввода трех первых строк текста, записанного в файле, исследовать ее
работу, объяснить результат. Придумать пример по аналогии.
Листинг 10. Ввод первых трех строк текста из файла
#include<iostream.h>
#include<fstream.h>
void main(void)
{
char a[64],b[64],c[64];
ifstream in_file("filel.txt");
in_file.getline(a,sizeof(a));
in_file,getline(b,sizeof(b));
in_file.getline(c,sizeof(c));
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
in_file.close();
}
5. Переписать из листинга № 11 программу, иллюстрирующую механизм
ввода текста, записанного в файле, исследовать ее работу, объяснить
результат. Придумать пример по аналогии.
Листинг 11. Ввод текста из файла
#include<iostream.h>
#include<fstream.h>
void main(void)
{
char a[64];
if stream in_file("filel.txt");
while(in_file.eof())
{
in_file.getline(a,sizeof(a));
cout<<a<<endl;
}
in_file.close();
}
6. Переписать из листинга № 12 и 13 программы, иллюстрирующие
механизмы записи массива в файл и чтение его из файла, исследовать их
работу, объяснить результат. Придумать пример по аналогии.
Листинг 12. Запись массива в файл
33
#include<fstream.h>
void main(void)
{
int i,x[3]={10,20,30};
ofstream out_file("file2.dat");
for(i=0;i<3;i++)
out_file.write((char *) &x[i],sizeof(x [i]));
out_file.close();
}
Листинг 13. Чтение массива из файла с выводом на экран
#include<iostream.h>
#include<fstream.h>
void main(void)
{
int i, x[3];
ifstream in_file("file2.dat");
for(i=0;i<3;i++)
{
in_file.read((char *) &x[i] ,sizeof(x[i]));
cout<<x[i]<<" ";
}
in_file.close();
}
7. Переписать из листинга № 14 и 15 программы, иллюстрирующие
механизмы записи структуры в файл и чтение ее из файла, исследовать их
работу, объяснить результат. Придумать пример по аналогии.
Листинг 14. Запись структуры в файл
#include<fstream.h>
void main(void)
{
struct date
{
int day;
char month[9];
int year;
}d={25,"ноября", 1958};
ofstream out_file("file3.dat") ;
out_file.write((char *) &d,sizeof(date));
out_file.close();
}
Листинг 15. Чтение структуры из файла с выводом на экран
#include<iostream.h>
#include<fstream.h>
void main(void)
{
struct date
{
int day;
char month[9];
int year;
}d;
ifstream in_file("file3.dat");
34
in_file.read((char *) &d,sizeof(date));
cout<<d.day<<" "<<d.month<<" "<<d. year<<endl;
in_file.close();
}
Этап 6.5. Исследование операций с объектами и классами
1. Переписать из листинга № 16 программу, иллюстрирующую создание
и инициализацию объектов класса, исследовать ее работу, объяснить
результат. Придумать пример по аналогии.
Листинг 16. Создать объекты класса, присвоить начальные значения их
свойствам. Обеспечить к ним доступ извне.
#include<iostream.h>
#include<string.h>
class date
{
public: char name[64];
int day;
char month[9];
int year;
void show_birthday(void)
{
соut<<"Имя: "<<name<<endl;
соut<<"День рождения :"<<day<<" "<<month<<" "<<year<<endl;
};
};
void main(void)
{
date father,mother,daughte;
//объявление объектов
strcpy(father.name,"Юрий");
father.day=25;
strcpy(father.month,"ноября");
father.year=1958;
strcpy(mother.name,"Лидия");
mother.day=14;
strcpy(mother.month,"ноября");
mother.year=1956;
strcpy(daughte.name,"Юлия");
daughte.day=4;
strcpy(daughte.month,"мая");
daughte.year=l982;
father.show_birthday();
//вывод информации
mother.show_birthday();
daughte.show birthday();
}
2. Переписать из листинга № 17 программу, иллюстрирующую
концепцию инкапсуляции данных как сокрытие части свойств путем
объявления элементов класса частными (private), исследовать ее
работу, объяснить результат. Придумать пример по аналогии.
35
Листинг 17. Пример инкапсуляции
#include<iostream.h>
#include<string.h>
class zp
{
private:
//объявление частных элементов
char name[64];
float sal;
public:
//объявление общих элементов
void in_dat(char *,float);
//прототипы функций
void show_sal(void);
float change_sal(float);
void zp::in_dat(char *new_name,float old_sal)
//определение функции
{
strcpy(name,new name);
sal=old_sal;
}
void zp::show_sal(void)
//определение функции
{
cout<<"Оклад "<<name<<": "<<sal<<" рублей, "<<endl;
}
float zp::change_sal(float new_sal) //определение функции
{
if(new_sal<10000)
{
cout<<"Новый оклад "<<name<<" недопустимо мал! "<<endl;
return (0);
}
sal=new_sal;
return(1);
}
void main(void)
{
float new_sal;
zp father;
//объявление объекта father
father.in_dat("Иванов И.А.",20000.0) ;
cout<<"Старый ";
fatner.show_sal() ;
сout<<"Введите новый оклад:";
cin>>new_sal;
if(father.change_sal(new_sal)!=0)
{
Сout<<"Новый ";
father.show sal();
}
}
Главной программе (main) известны лишь методы (in_dat,
show_sal, change_sal), позволяющие работать с объектом
(father). Свойства (name, sal) и способы их обработки скрыты от