Добавил:
YunonaKuzmicheva
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:какая-то лаба
.txt#include <iostream>
#include <sstream>
#include <conio.h>
#include <fstream>
#include <windows.h>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<int>> Length(vector<char> text1, vector<char> text2);
vector<char> findCommonText(vector<char> text1, vector<char> text2, vector<vector<int>>);
void Red_black();
void Green_black();
void Default();
void menu();
void setcur(int x, int y);
int main(int argc, char* argv[]) {
SetConsoleOutputCP(CP_UTF8);
if (argc == 3) {
system("cls");
int length1 = 0;
int length2 = 0;
char ch;
int open1 = 0;
int open2 = 0;
ifstream text1(argv[1]);
if (text1.is_open()) {
open1 = 1;
}
while (text1.get(ch)){
length1++;
}
vector<char> f1(length1);
text1.close();
text1.open(argv[1]);
for (int i = 0; i < length1; i++) {
text1.get(ch);
f1[i] += ch;
}
text1.close();
ifstream text2(argv[2]);
if (text2.is_open()) {
open2 = 1;
}
while (text2.get(ch)) {
length2++;
}
vector<char> f2(length2);
text2.close();
text2.open(argv[2]);
for (int i = 0; i < length2; i++) {
text2.get(ch);
f2[i] += ch;
}
text2.close();
if (open1 == 1 && open2 == 1) {
int rows = f1.size();
int cols = f2.size();
vector<vector<int>> matrix = Length(f1, f2);
vector<char> LCS = findCommonText(f1, f2, matrix);
menu();
int x = 0;
int y = 3;
setcur(x, y);
int count = 0;
for (int i = 0; i < f1.size(); i++) {
if (x < 102 && f1[i] != '\n') {
if (count < matrix[rows][cols] && f1[i] == LCS[count]) {
Green_black();
cout << f1[i];
Default();
count++;
}
else {
Red_black();
cout << f1[i];
Default();
}
x++;
}
else if (x == 102 && f1[i] == '\n') {
cout << f1[i];
y++;
x = 0;
}
else if (x != 102 && f1[i] == '\n') {
if (count < matrix[rows][cols] && f1[i] == LCS[count]) {
Green_black();
cout << f1[i];
Default();
count++;
}
else {
Red_black();
cout << f1[i];
Default();
}
x = 0;
y++;
}
else {
y++;
x = 0;
setcur(x, y);
if (count < matrix[rows][cols] && f1[i] == LCS[count]) {
Green_black();
cout << f1[i];
Default();
count++;
}
else {
Red_black();
cout << f1[i];
Default();
}
}
}
for (int i = 3; i < y; i++) {
setcur(103, i);
cout << "|||";
}
for (int i = 3; i < y; i++) {
setcur(103, i);
cout << "|||";
}
y = 3;
x = 106;
setcur(x, y);
count = 0;
for (int i = 0; i < f2.size(); i++) {
if (x < 210 && f2[i] != '\n') {
if (count < matrix[rows][cols] && f2[i] == LCS[count]) {
Green_black();
cout << f2[i];
Default();
count++;
}
else {
Red_black();
cout << f2[i];
Default();
}
x++;
}
else if (x == 210 && f2[i] == '\n') {
y++;
x = 106;
cout << f2[i];
setcur(x, y);
}
else if (x != 210 && f2[i] == '\n') {
if (count < matrix[rows][cols] && f2[i] == LCS[count]) {
Green_black();
cout << f2[i];
Default();
count++;
}
else {
Red_black();
cout << f2[i];
Default();
}
x = 106;
y++;
setcur(x, y);
}
else {
y++;
x = 106;
setcur(x, y);
if (count < matrix[rows][cols] && f2[i] == LCS[count]) {
Green_black();
cout << f2[i];
Default();
count++;
}
else {
Red_black();
cout << f2[i];
Default();
}
}
}
for (int i = 3; i < y; i++) {
setcur(103, i);
cout << "|||";
}
for (int i = 3; i < y; i++) {
setcur(103, i);
cout << "|||";
}
}
else if(open1 == 0 || open2 == 0) {
cout << "Один из файлов не открыт";
}
}
else {
cout << "Недостаточно аргументов";
}
_getch();
return 0;
}
vector<vector<int>> Length(vector<char> text1, vector<char> text2) {
int rows = text1.size();
int cols = text2.size();
vector<vector<int>> matrix(rows + 1, vector<int>(cols + 1, 0));
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (text1[i] == text2[j]) {
matrix[i + 1][j + 1] = 1 + matrix[i][j];
}
else {
matrix[i + 1][j + 1] = max(matrix[i][j + 1], matrix[i + 1][j]);
}
}
}
return matrix;
}
vector<char> findCommonText(vector<char> text1, vector<char> text2, vector<vector<int>> matrix) {
int rows = text1.size();
int cols = text2.size();
int i = 0, j = 0;
vector <char> similarity(matrix[rows][cols]);
while (rows > 0 && cols > 0) {
if (text1[rows - 1] == text2[cols - 1]) {
similarity[i] = text1[rows - 1];
i++;
rows--;
cols--;
}
else {
if (matrix[rows - 1][cols] > matrix[rows][cols - 1]) {
rows--;
}
else {
cols--;
}
}
}
reverse(similarity.begin(), similarity.end());
return similarity;
}
void menu() {
cout << " first second";
for (int i = 0; i < 211; i++) {
cout << "";
}
for (int i = 0; i < 100; i++) {
cout << "";
}
for (int i = 0; i < 211; i++) {
cout << "";
}
}
void Green_black() {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
}
void Red_black() {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12);
}
void Default() {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
void setcur(int x, int y)
{
COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
void SetFullscrn() { // sets terminal to fullscreen
}
Соседние файлы в предмете Программирование на C++
