Файл: УМК_Практические работы.pdf

ВУЗ: Не указан

Категория: Методичка

Дисциплина: Информатика

Добавлен: 21.10.2018

Просмотров: 1966

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

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)  


background image

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. Запись массива в файл 


background image

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"); 


background image

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),  исследовать  ее 

работу, объяснить результат. Придумать пример по аналогии. 


background image

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)  и  способы  их  обработки  скрыты  от