Задача 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; }