Имеется массив объектов студент (фио, факультет, специальность, год рождения).
Массив заполняется из файла.
С отсортировать массив по заданному полю с использованием алгоритмов сортировки STL для нисходящей и восходящей сортировки
использовать разные алгоритмы.
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
int const NUM = 4;
class student
{
public:
string FIO;
string fac;
string spec;
int year_of_birth;
void in(int n)
{
ifstream fin("cppstudio.txt"); // открыли файл для чтения
for (int i = 0; i < n; i++) // пропускаем n - 1 строки
fin.ignore(255, '\n');
fin >> FIO >> fac >> spec >> year_of_birth; // считали первое слово из файла
}
void display()
{
cout << FIO << " " << fac << " " << spec << " " << year_of_birth << endl;
}
};
struct sort_class_x
{
bool operator() (student i, student j)
{
return (i.FIO<j.FIO);
}
} sort_object_FIO;
struct sort_class_x_down
{
bool operator() (student i, student j)
{
return (i.FIO>j.FIO);
}
} sort_object_FIO_down;
void main()
{
vector<student> students(NUM);
for (int i = 0; i < NUM; i++)
{
students[i].in(i);
}
for (int i = 0; i < NUM; i++)
{
students[i].display();
}
cout << "Sort up: " << endl;
sort(students.begin(), students.end(), sort_object_FIO);
for (int i = 0; i < NUM; i++)
{
students[i].display();
}
cout << "Sort down: " << endl;
sort(students.begin(), students.end(), sort_object_FIO_down);
for (int i = 0; i < NUM; i++)
{
students[i].display();
}
}
2. В файле задан текст. С использование алгоритмов STL подсчитать количество букв, наличие заданной подстроки, все слова содержащие заданные буквы (параметры поиска задаются пользователем)
//2. В файле задан текст. С использование алгоритмов STL подсчитать количество букв, наличие заданной подстроки,
//все слова содержащие заданные буквы (параметры поиска задаются пользователем)
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
void main()
{
string buf;
ifstream fin("cppstudio.txt", ios::in | ios::binary);
while (fin)
{
getline(fin, buf);
}
cout << buf << endl;
cout << "Size: " << buf.length() << endl;
char s;
cout << "Enter string" << endl;
cin >> s;
cout << "Num " << s << " = " << count(buf.begin(), buf.end(), s) << endl;
cout << "Character: ";
cin >> s;
istringstream ist(buf);
while (ist >> buf)
if (buf.find(s) != std::string::npos)
cout << buf << endl;
}
3.
// Имеется файл с текстом. С использование алгоритмов STL сгенерировать файл, содержаций текст в обратном порядке.
//В результирующем файле заменить все буквы "A " на "a".
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
const int MAX_SIZE = 1000000;
char buf[MAX_SIZE + 1];
void main()
{
ifstream fin("cppstudio.txt", ios::in | ios::binary);
fin.read(buf, MAX_SIZE);
int num_read = fin.gcount();
fin.close();
reverse(buf, buf + num_read);
char ch;
cout << "enter character:" << endl;
cin >> ch;
for (int i = 0; i < num_read; i++)
{
if (buf[i] == ch)
buf[i] = tolower (buf[i]);
}
ofstream fout("cppstudio1.txt", ios::out | ios::binary);
fout.write(buf, num_read);
fout.close();
}
//4. Имеется файл с текстом, текст содержит повторяющиеся слова. С использование алгоритмов STL сформировать файл в который будет
//скопирован текст без повторений слов.
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
int main()
{
map<string, int> count;
string word;
ifstream fileIn("cppstudio.txt");
while (!fileIn.eof())
{
fileIn >> word;
count[word] += 1;
}
fileIn.close();
ofstream fileOut("cppstudio1.txt");
for (map<std::string, int>::iterator p = count.begin(); p != count.end(); p++)
if (p->second == 1)
fileOut << p->first << '\t';
}
Массив заполняется из файла.
С отсортировать массив по заданному полю с использованием алгоритмов сортировки STL для нисходящей и восходящей сортировки
использовать разные алгоритмы.
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
int const NUM = 4;
class student
{
public:
string FIO;
string fac;
string spec;
int year_of_birth;
void in(int n)
{
ifstream fin("cppstudio.txt"); // открыли файл для чтения
for (int i = 0; i < n; i++) // пропускаем n - 1 строки
fin.ignore(255, '\n');
fin >> FIO >> fac >> spec >> year_of_birth; // считали первое слово из файла
}
void display()
{
cout << FIO << " " << fac << " " << spec << " " << year_of_birth << endl;
}
};
struct sort_class_x
{
bool operator() (student i, student j)
{
return (i.FIO<j.FIO);
}
} sort_object_FIO;
struct sort_class_x_down
{
bool operator() (student i, student j)
{
return (i.FIO>j.FIO);
}
} sort_object_FIO_down;
void main()
{
vector<student> students(NUM);
for (int i = 0; i < NUM; i++)
{
students[i].in(i);
}
for (int i = 0; i < NUM; i++)
{
students[i].display();
}
cout << "Sort up: " << endl;
sort(students.begin(), students.end(), sort_object_FIO);
for (int i = 0; i < NUM; i++)
{
students[i].display();
}
cout << "Sort down: " << endl;
sort(students.begin(), students.end(), sort_object_FIO_down);
for (int i = 0; i < NUM; i++)
{
students[i].display();
}
}
2. В файле задан текст. С использование алгоритмов STL подсчитать количество букв, наличие заданной подстроки, все слова содержащие заданные буквы (параметры поиска задаются пользователем)
//2. В файле задан текст. С использование алгоритмов STL подсчитать количество букв, наличие заданной подстроки,
//все слова содержащие заданные буквы (параметры поиска задаются пользователем)
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
void main()
{
string buf;
ifstream fin("cppstudio.txt", ios::in | ios::binary);
while (fin)
{
getline(fin, buf);
}
cout << buf << endl;
cout << "Size: " << buf.length() << endl;
char s;
cout << "Enter string" << endl;
cin >> s;
cout << "Num " << s << " = " << count(buf.begin(), buf.end(), s) << endl;
cout << "Character: ";
cin >> s;
istringstream ist(buf);
while (ist >> buf)
if (buf.find(s) != std::string::npos)
cout << buf << endl;
}
3.
// Имеется файл с текстом. С использование алгоритмов STL сгенерировать файл, содержаций текст в обратном порядке.
//В результирующем файле заменить все буквы "A " на "a".
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
const int MAX_SIZE = 1000000;
char buf[MAX_SIZE + 1];
void main()
{
ifstream fin("cppstudio.txt", ios::in | ios::binary);
fin.read(buf, MAX_SIZE);
int num_read = fin.gcount();
fin.close();
reverse(buf, buf + num_read);
char ch;
cout << "enter character:" << endl;
cin >> ch;
for (int i = 0; i < num_read; i++)
{
if (buf[i] == ch)
buf[i] = tolower (buf[i]);
}
ofstream fout("cppstudio1.txt", ios::out | ios::binary);
fout.write(buf, num_read);
fout.close();
}
//4. Имеется файл с текстом, текст содержит повторяющиеся слова. С использование алгоритмов STL сформировать файл в который будет
//скопирован текст без повторений слов.
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
int main()
{
map<string, int> count;
string word;
ifstream fileIn("cppstudio.txt");
while (!fileIn.eof())
{
fileIn >> word;
count[word] += 1;
}
fileIn.close();
ofstream fileOut("cppstudio1.txt");
for (map<std::string, int>::iterator p = count.begin(); p != count.end(); p++)
if (p->second == 1)
fileOut << p->first << '\t';
}
Комментарии
Отправить комментарий