• Как найти совпадения в файле спомощью C++?

    @Helig Автор вопроса
    Я задачу решил так, вдруг кому пригодится.
    Для того, чтобы не было повторений, я записываю в файл out совпадения и после сравниваю.

    include <iostream> 
    #include <iomanip>
    #include <fstream>
    #include <string>
    #include <sstream>
    using namespace std;
    
    bool check_out(float id, float id1){
    	fstream file;
    	file.open("text.out", ios::in); 
        float a1, b1;
        stringstream x;
        string line;
        bool flag = false;
        while(getline(file, line)){
        	for (size_t j = 0; j < line.length(); j++) isdigit(line[j]) || line[j]=='.' ? x<<line[j] : x<<' ';
    	    x>>a1;x>>b1;
    		if (b1 == id && a1 == id1){
    			flag = true;
    		}
    	}
    	if(flag){
    		return false;
    	}else{
    		return true;
    	}
    }
    
    void check_file(float id, float a, float b){
    	fstream file;
    	file.open("text.txt", ios::in); 
        float id1, a1, b1;
        stringstream x;
        string line;
        while(getline(file, line)){
        	for (size_t j = 0; j < line.length(); j++) isdigit(line[j]) || line[j]=='.' ? x<<line[j] : x<<' ';
    	    x>>id1;x>>a1;x>>b1;
    		//cout << "Найдено! " << "id1: "<< id1 << " a1: "<< a1<<" b1: "<<b1<< endl;
    		if (a == a1){
    			if(id != id1){
    				if((b - b1) <= 0.5 && (b - b1) >= -0.5){
    					if (check_out(id, id1)){
    					cout << "Совпадение: "<< id << " " << id1<<endl;
    					ofstream out("text.out", ios::app);
    					if (out.is_open()){
    						out << id << " " << id1 << " "<<endl; 
    					}
    					out.close();
    				}
    				}
    			}
    		}
        }
        file.close();
    }
    int main() {
        setlocale(LC_ALL, "");
        fstream clear_file("text.out", ios::out);//Очищаем файл
    	clear_file.close();
        cout << "Программа выполняет поиск совпадений по количеству вещей в багаже и его весу.\n"; 
        fstream file;
        file.open("text.txt", ios::in); 
        float id, id1, a, b, a1, b1;
        stringstream x;
        string line;
        while(getline(file, line)){//пробел после последнего числа обязателен
        	for (size_t j = 0; j < line.length(); j++) isdigit(line[j]) || line[j]=='.' ? x<<line[j] : x<<' ';
    	    x>>id;x>>a;x>>b;
    		check_file(id, a, b);
        }	
        file.close();
        return 0;
    }
    Ответ написан
    Комментировать
  • Что делать если не запускается gnome-terminal в Ubuntu?

    @Helig Автор вопроса
    Итак.

    sudo locale-gen
    sudo localectl set-locale LANG=en_US.utf8

    reboot system или sudo systemctl restart gdm или sudo service gdm restart

    Источник: https://askubuntu.com/questions/918558/terminal-wo...

    P.S. Ответ был найден благодаря одному приятному человеку из чата убунты, спасибо ему.
    Ответ написан
    Комментировать
  • Как создать в linux собственную команду с аргументом?

    @Helig Автор вопроса
    Итак, товарищи из комментариев были правы. Лучший выход - это bash скрипты

    Создаём script.sh

    #: /bin/bash
    g++ $1.cpp -o $1
    ./$1

    После этого выполняем в терминале:
    ./script.sh название_без_расширения

    Теперь создаём команду alias через терминал, чтобы было ещё короче:

    alias compile='./script.sh'

    compile название_без_расширения

    Всё, готово!
    Ответ написан