Да се състави програма (C++) чрез която се въвеждат две естествени числа N1,N2.
N1 е дълго число с брой цифри [10..110], a N2 е от интервала [10..99]. Да се осъществи търсене на естествено число в дълго число.
Програмата да изведе съобщение дали числото N2 се съдържа в дългото число, както и неговата позция. Да се продължи (в следващите цифри) с търсене на числото 101.
Да се изведе съобщение, ако дългото число не е цяло число, т.е. в записа му се съдържа десетична точка.
Пример: 12345671010102, 45 Изход: 4, 8, естествено число
Решение
// и двете числа се разглеждат като стринг
#include <iostream>
#include <string>
using namespace std;
bool tochka( string chis1, string chis2)
{bool da;
size_t poziciq;
int dyl1,dyl2;
dyl1=chis1.size();//dylvina
dyl2=chis2.size();
poziciq=chis1.find('.');
if (poziciq!=string::npos) da=true;
else
{da =false;
//tyrsi w cqloto chislo - string
poziciq=chis1.find(chis2);
if (poziciq!=string::npos)
{ cout << "Pyrwata otkrita poziciq e: "<<int(poziciq)+1<<endl;
}
//tyrsene sled poziciqta na I-to otkriwane
poziciq=chis1.find("101",poziciq+1,dyl2);
if (poziciq!=string::npos)
{ cout<<"Wywedenoto chislo sysydrva 101 w poziciq: "<<int(poziciq)+1<<endl;
}
}
return da;
}
int main ()
{ string chis1,chis2;
bool da;
cout<<"Da se systawi programa, chez koqto se wywevdat dwe estestweni\n";
cout<<"chisla N1,N2. Pyrwoto e dylgo chislo e s broj cifri [10..110], a \n";
cout<<"wtoroto e ot interwala [10..99]. Programata da izwede dali N1\n";
cout<<"wkliuchwa N2. Ako N2 se sydyrva w N1 se prowerqwa za chisloto 101.\n";
cout<<"Ako N1 ne e cqlo chislo da se izwede syobshenie.\n";
cout<<"Primer: 12345671010102, 45 Izhod: 4, 8, estestweno chislo\n";
cout<<"Wywedete dylgo chislo: ";cin>>chis1;
cout<<"Wywedete chislo [10..99]: ";cin>>chis2;
da=tochka( chis1, chis2);
if (da)
cout<<"Wywedenoto chislo sydyrva desetichna tochka: \n";
else cout<<"Estestweno chislo.\n";
system("pause");
return 0;
}