Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет327/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   323   324   325   326   327   328   329   330   ...   466
word += tolower(ch); 
 
in.get(ch);
 
}while (!in.fail() && (isalpha(ch) || ch == '_')); 
if (in.fail()) return false;
 
in.putback(ch); // Егер символ - '\n' 
 return 
true;
}
int main(){ 
 map_ss 
m;
 map_ss::iterator 
im; 
 
set_i::iterator is, isbegin, isend; 
 string 
word; 
 
int num = 1;
 
ifstream in ("some_fi le");
 
if (!in){cout << "Cannot open input fi le.\n"; 

exit(1); 
 
}
 
while (wordread(in, word, num)){ 
 
im = m.fi nd(word); 
 
if (im == m.end())
 
 
im = m.insert(map_ss::value_type(word, 
set_i())).fi rst; 
 
(*im).second.insert(num);
}
 
for (im = m.begin(); im != m.end(); im++){
 
cout << setiosfl ags(ios::left) << setw(15) 

<< (*im).fi rst.c_str();
 
isbegin = (*im).second.begin();
 
isend = (*im).second.end();
 
for (is = isbegin; is != isend; is++)
 
 
 cout << " " << *is; 
 
cout << endl;
 
}
 return 
0;
}
Some_fi le
кіріс файлында келесі мəтін бар делік:


354
class value_compare:
 
public binary_function
 
bool> { 
 
friend class map; protected: 
 Compare 
comp;
 
value_compare(Compare c) : comp(c) {} public: 
 
bool operator() (const value_type& x, 
 
const value_type& y) const { 
 
return comp(x.fi rst, y.fi rst);}
};
Мұнда программа экранға келесі нəтижені шығарады:
binary_function 2 
bool 2 6
c 5
class 1 3
comp 4 5 8
compare 4 5
const 7
fi rst 8
friend 3 
map 3
operator 6
protected 3
public 2 5
return 8
value_compare 1 5 
value_type 2 7
x 7 8
y 7 8
Программаның жұмысын толығырақ қарастырайық. Мысалдағы 
wordread
функциясы кіріс файлдан кезекті сөзді оқиды жəне ағымдағы 
жолдың нөмірін қалыптастырады, мұнда сөздің құрамына алфавиттік-
цифрлық символдар мен астын сызу белгісі болуы мүмкін деп есептеледі.
Құрылатын нұсқауыш «жол – жиын» жұптарынан тұратын сөздікте 
сақталады. Жол кілт болып табылады, мұнда кіріс файлдан алынған бір сөз 
сақталады. Бүтін сандар жиыны осы сөз кездесетін жолдардың нөмірлерін 
сақтайды. Жиын да, сөздік те біздің қатысуымызсыз жылдам іздеуді жəне 
элементтерді дубликаттарсыз (көшірмелерсіз) реттелген түрде сақтауды 
қамтамасыз етеді. 
Əрбір сөз үшін 
fi nd
функциясының көмегімен оның сөздікте бар 
екендігі тексеріледі. Егер жоқ болса (функция 
end()
қайтарды), сөздікке 
insert
функциясының көмегімен осы сөзден жəне бос жиыннан (
set_i()


355
конструкторын шақыру) тұратын жұп қосылады. Осы 


Достарыңызбен бөлісу:
1   ...   323   324   325   326   327   328   329   330   ...   466




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет