В програмке заложена маленькая ошибочка,и пусть препод решает ,принять ее или нет.Если нет,то вам придется самой разобраться вней.
Главное при создании текстового документа,после каждой строчки нажимать ЕНТЕР,
чтобы вставился символ /n,а после последней записи ничего не нажимая,закрываете документ и система поставит сама признак конца файла.
В принцыпе прога может искать любую последовательность по трем критериям.
Во время приглашения на ввод нужно задать критерии через пробел(три) и нажать на ЕНТЕР.
Из динамики ,использован список,можно было массив использовать,для чего нужно ввводить доп переменное поле счетчика,который бы явился строкой в столбце ,которой по мере необходимости выделялась бы память.Файл нужно назвать TEST.txt
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
string s1,s2,s3,s;
char buf[50];
const char spis[50]="Список сотрудников по указанным телефонам";
struct sotrud{
char fio_tel[50];
sotrud *sled;
};
void dob(sotrud **pkon,char *ps);
sotrud *first(const char *sp);
sotrud *pnach,*pkon;
int cim;
int main(){
ifstream in("test.txt",ios::in);
if (!in){
cout<<"cannot open file TEST.txt for reading"<<endl;
return 1;
}
cout<<"Введите три первые значащие цифры на 3 телефона через пробел "<<endl;
cin>>s1>>s2>>s3;
sotrud *pnach=first(spis);
sotrud *pkon=pnach;
while(!in.eof()){
in.get(buf,50,'\n');
cim=in.gcount();
// cout<<endl;for(int c=0;c<50;c++)cout<<buf[c];
in.get();
s.assign(buf,cim);
int i=s.find(s1);
int j=s.find(s2);
int k=s.find(s3);
//cout<<i<<" "<<j<<" "<<k<<endl;
if((i<50&&i>=0&&s.at(i-1)==' '||i==0)||
(j<50&&j>=0&&s.at(j-1)==' '||j==0) ||
(k<50&&k>=0&&s.at(k-1)==' '||k==0))
dob(&pkon,buf);
}
sotrud *ukaz=pnach;
cout<<endl;
while(ukaz){
for (int pr1=0;pr1<50;pr1++)
cout<<ukaz->fio_tel[pr1];
ukaz=ukaz->sled;cout<<endl;
}
return 0;
}
sotrud * first(const char *sp){
sotrud * ukaz=new sotrud;
for (int pr=0;pr<50;pr++)
ukaz->fio_tel[pr]=spis[pr];
ukaz->sled=0;
return ukaz;
}
void dob(sotrud **pkon,char *ps){
sotrud *ukaz=new sotrud;
for (int d=0;d<50;d++)
ukaz->fio_tel[d]=buf[d];
ukaz->sled=0;
(*pkon)->sled=ukaz;
*pkon=ukaz;
}