Void main(). set_i::iterator is, isbegin, isend;
{
map_ss m;
map_ss::iterator im;
set_i::iterator is, isbegin, isend;
string word;
int num = 1;
ifstream in ("1.txt");
if (!in)
{
cout << "Cannot open input file.\n";
exit(1);
}
while (wordread(in, word, num))
{
im = m.find(word);
if (im == m.end())
im = m.insert(map_ss::value_type(word,
set_i())).first;
(*im).second.insert(num);
}
for (im = m.begin(); im != m.end(); im++)
{
cout << setiosflags(ios::left ) <<
setw(15) << (*im).first.c_str();
isbegin = (*im). second.begin();
isend = (*im).second.end();
for (is = isbegin; is != isend; is++)
cout << " " << *is;
cout << endl;
}
}
Допустимо, вхідний файл 1.txt містить наступний текст:
#include <fstream>
#include <iostream>
#include <iomanip>
#include <string>
#include <set>
#include <map>
const const
В цьому випадку програма виведе на екран:
const 7
fstream 1
include 1 2 3 4 5 6
iomanip 3
iostream 2
map 6
set 5
string 4
Розглянемо роботу програми докладніше. Функція wordread зчитує чергове слово з вхідного файлу, вважаючи, що в слово можуть входити алфавітно-цифрові символи і знак підкреслення, а також формує номер поточного рядка. Створювана вказівка зберігається в словнику, що складається з пар "рядок – множина". Рядок є ключем, в ньому міститься окреме слово з вхідного файлу. Безліч цілих чисел зберігає номери рядків, в яких зустрічається дане слово. І множина, і словник без нашої участі забезпечують швидкий пошук і впорядковане зберігання елементів без дублікатів. Для кожного слова за допомогою функції find перевіряється, чи міститься воно в словнику. Якщо слова немає (функція повернула end()), в словник за допомогою функції insert додається пара, яка складається з цього слова і порожньої множини (виклик конструктора set_i()). Функція insert повертає пару, першим елементом якої (first) є ітератор на вставлений елемент. Він привласнюється змінній im. В наступному операторові відбувається додавання за допомогою функції insert нового елементу в множину, яка є другим (second) елементом словника. Далі виконується виведення словника. Для кожного слова в циклі виводяться елементи множини номерів рядків.
Завдання
Виконати завдання за допомогою контейнерів vector (вектор), deque (черга), list (список).
Перелік варіантів завдань:
Варіант 1
Є вектор цілих чисел, який складається з n елементів. Визначити добуток додатних парних чисел вектору. Якщо таких елементів немає, вивести повідомлення: "Додатних парних елементів у векторі немає".
Варіант 2
Є черга цілих чисел, яка складається з n елементів. Визначити добуток від’ємних чисел черги, що стоять на парних позиціях. Якщо таких елементів немає, вивести повідомлення: "Від’ємних елементів в черзі немає".
Варіант 3
Є список цілих чисел, який складається з n елементів. Визначити суму і кількість непарних чисел списку. Якщо таких елементів немає, вивести повідомлення: "Непарних елементів в списку немає".
Варіант 4
Є вектор цілих чисел, який складається з n елементів. Визначити в ньому суму і кількість чисел, кратних 5. Якщо таких елементів немає, вивести повідомлення: "Елементів кратних 5 у векторі немає".
Варіант 5
Є черга цілих чисел, яка складається з n елементів. Визначити у ній кількість чисел, кратних 2, і чисел, не кратних 3. Якщо таких елементів немає, вивести повідомлення: "Чисел, кратних 2 і чисел не кратних 3 в черзі немає".
Варіант 6
Є список цілих чисел, який складається з n елементів. Визначити кількість і добуток елементів списку, які знаходяться в діапазоні [0; 7]. Якщо таких елементів немає, вивести повідомлення: "Елементів з діапазону [0; 7] в списку немає".
Варіант 7
Є вектор цілих чисел, який складається з n елементів. У ньому визначити середнє арифметичне значення чисел, кратних трьом. Якщо таких елементів немає, вивести повідомлення: "Елементів кратних 3 у векторі немає".
Варіант 8
Є черга цілих чисел, яка складається з n елементів. Визначити середнє арифметичне значення елементів черги, які містяться в діапазоні [-3; 5]. Якщо таких елементів немає, вивести повідомлення: "Елементів, що задовольняють вимозі, в черзі немає".
Варіант 9
Є список цілих чисел, який складається з n елементів. У ньому визначити мінімальний елемент та його порядковий номер.
Варіант 10
Є вектор цілих чисел, який складається з n елементів. Визначити добуток непарних елементів вектору, що стоять на парних позиціях. Якщо таких елементів немає, вивести повідомлення: "Непарних елементів, що стоять на парних позиціях у векторі немає".
Варіант 11
Є черга цілих чисел, яка складається з n елементів. Визначити середнє арифметичне значення елементів черги, кратних восьми. Якщо таких елементів немає, вивести повідомлення: "Елементів кратних 8 в черзі немає".
Варіант 12
Є список цілих чисел, який складається з n елементів. У ньому серед додатних елементів визначити максимальний елемент.
Варіант 13
Є вектор цілих чисел, який складається з n елементів. Визначити добуток додатних елементів вектору та їх кількість. За відсутності додатних чисел вивести повідомлення "Додатних чисел у векторі немає".
Варіант 14
Є черга цілих чисел, яка складається з n елементів. Обчислити кількість елементів черги, кратних семи. За відсутності таких елементів вивести повідомлення "Елементів кратних 7 немає".
Варіант 15
Є список цілих чисел, який складається з n елементів. Визначити середнє арифметичне значення мінімального і максимального елементів списку.
Варіант 16
Є вектор цілих чисел, який складається з n елементів. Визначити суму і добуток додатних чисел, що стоять на парних позиціях.
Варіант 17
Є черга цілих чисел, яка складається з n елементів. Визначити середнє арифметичне значення додатних елементів і середнє арифметичне значення від’ємних елементів.
Варіант 18
Є список цілих чисел, який складається з n елементів. Визначити окремо кількість від’ємних чисел, кількість додатних чисел і чисел, рівних нулю.
Варіант 19
Є вектор цілих чисел, який складається з n елементів. Визначити суму додатних парних чисел вектору. У разі відсутності додатних парних чисел вивести повідомлення "Додатних парних чисел у векторі немає".
Варіант 20
Є черга цілих чисел, яка складається з n елементів. Визначити середнє арифметичне значення чисел черги, що стоять на парних позиціях, і середнє арифметичне значення чисел, що стоять на непарних позиціях.
РОЗДІЛ 11. АЛГОРИТМИ
Дата добавления: 2014-12-26; просмотров: 765;