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