Задача 7. Решението на задачата изисква да се въведат данни от клавиатурата, след което да се запишат във файл.
За въвеждане на данните от клавиатурата са нужни съответни променливи, в които те да се съхранят. Тъй като единствената обработка на данните е те да бъдат записани във файл, то всички те могат да се представят като низ.. Така може да се използва само една променлива от тип низ, в която да се въвежда съответната стойност от клавиатурата, след което тази стойност да се записва във файла. Следващата стойност се записва в същата променлива и отново се записва във файла, и т.н.
Данните за всеки човек се въвеждат на един ред, разделени с интервал.
Решение:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char str[21]; /*Въвеждането се извършва
само в една низова променлива*/
ofstream file_out; //Файлова променлива за запис
int i;
file_out.open("MyFile.txt");
for(i=0;i<10;i++)
{
cin>>str;
//Въвежда в file_out второто поле до срещане на интервал
file_out<<str<<" ";
cin>>str;
//Въвежда в file_out третото поле до срещане на интервал
file_out<<str<<" ";
cin>>str;
//Въвежда в file_out четвъртото поле
file_out<<str<<'\n';
}
file_out.close();
return 0;
}Задача 8. В задачата е необходимо да се отворят два файла. Първият от тях (MyFile.txt) ще се ползва за четене, а вторият – за запис (MyFile1.txt). Както в предходната задача, и тук ще се ползва една низова променлива, в която ще се записва всяка стойност от първия файл, след което тази стойност ще се записва във втория файл.
Решение:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char str[21];
ofstream file_out;
ifstream file_in;
int i;
//Отваряне на файл за четене на данните
file_in.open("MyFile.txt");
//Отваряне на файл за запис, в който се копират данните
file_out.open("MyFile1.txt");
for(i=0;i<10;i++)
{
//Копиране на името
file_in>>str;
file_out<<str<<" ";
//Копиране на презимето
file_in>>str;
file_out<<str<<" ";
//Копиране на фамилията
file_in>>str;
file_out<<str<<" ";
//Копиране на ЕГН
file_in>>str;
file_out<<str<<'\n';
}
//Затваряне на двата файла
file_in.close();
file_out.close();
cout<<"Копирането завърши.";
return 0;
}Задача 9. Задачата може да се реши по няколко начина. Едно от решенията е следното:
1) Дефинира се структура Book.
2) Въвежда се броят на книгите.
3) Данните за всяка книга се въвеждат последователно в масив от тип Book.
4) Отваря се файл за запис и в него се записват всички книги от масива, след което файлът се затваря.
5) От клавиатурата се въвежда ISBN номер.
6) Файлът се отваря за четене. В цикъл се извличат последователно всички елементи (всички полета на елемент от тип Book). За всеки запис се извършва сравнение на ISBN номера с този, въведен от клавиатурата. Когато се намери съвпадение на номерата, цикълът се прекратява.
7) Проверява се стойността на брояча. Ако тази стойност е по-малка от броя на книгите, то е намерена книга, съответстваща на въведения ISBN номер. Извежда се подходящо съобщение. В противен случай се извежда съобщение, че не е намерена такава книга.
Решение:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Book
{
char title[51];
char author[51];
double price;
char ISBN_num[16];
};
int main()
{
Book books[50];
int i,n;
cout<<"Въведи брой книги:";
cin>>n;
//Въвеждане на книгите в масива books
for(i=0;i<n;i++)
{
cin.get();
cout<<"Заглавие:";
cin.getline(books[i].title,51);
cout<<"Автор:";
cin.getline(books[i].author,51);
cout<<"Цена:";
cin>>books[i].price;
cout<<"ISBN номер:";
cin>>books[i].ISBN_num;
}
ofstream file_out;
//Отваряне на файл за запис, в който се копират данните
file_out.open("file_1.txt");
//Въвеждане на книгите във файла
for(i=0;i<n;i++)
{
file_out<<books[i].title<<'\n';
file_out<<books[i].author<<'\n';
file_out<<books[i].price<<'\n';
file_out<<books[i].ISBN_num<<'\n';
}
//Затваряне на файла
file_out.close();
char buf_str[51],isbn[16];
double buf;
ifstream file_in;
//Отваряне на файл за четене
file_in.open("file_1.txt");
cout<<"Въведи ISBN номер:";
cin>>isbn;
for(i=0;i<n;i++)
{
file_in.getline(buf_str,51);
file_in.getline(buf_str,51);
file_in>>buf;
file_in>>buf_str;
if(strcmp(buf_str,isbn)==0)break;
}
if(i<n)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
file_in.close();
return 0;
}