Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2019, 21:01   #1
VLADOSW2001
Пользователь
 
Регистрация: 15.09.2019
Сообщений: 30
По умолчанию Найти в этом файле все правильные несократимые дроби, знаменатели которых не более N, и вывести их на экран.

В текстовом файле содержатся дроби, записанные в формате «числитель / знаменатель». Пользователь с клавиатуры задает число N и имя текстового файла. Найти в этом файле все правильные несократимые дроби, знаменатели которых не более N, и вывести их на экран. Определить все возможные правильные несократимые дроби, знаменатели которых меньше N и не встречающихся в данном текстовом файле, и вывести их в текстовый файл, имя которого сформирован из имя первого файла добавлением текстового постфикса «_comp». Определить все функции, необходимые для оптимального функционирования программы (в частности проверки, является дробь правильным и несократимой).
Код:
      #include<iostream>
#include<algorithm>
#include<windows.h>
#include<fstream>
#include<sstream>
#include<vector>
#include<string>
 
using namespace std;
 
 
int gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}
 
bool  is_right(int num, int den)
{
    if (num >= den) return false;
 
    return true;
 
}
 
bool is_reducing(int num, int den)
{
    if (num > 1 && gcd(num, den) > 1) return true;
 
    return false;
}
 
int main(int argv, char* argc[]) 
{
 
    setlocale(NULL, "RUS");
 
    SetConsoleCP(1251);
 
    SetConsoleOutputCP(1251);
 
    string fname, line, str; vector<string>arr; vector<string>foo; vector<string>bar; vector<string>none; int n;
 
    cout << "Введите название файла: ";  getline(cin, fname);
    
    cout << "Введите N: "; cin >> n;
 
    fstream file_a, file_b;
 
    file_a.open(fname, ios::in | ios::out | ios::app);
 
    fname.erase(fname.find(".txt")); fname += "_comp.txt";
 
    file_b.open(fname, ios::in | ios::out | ios::app);
 
    if (file_a.is_open())
    {
 
        while (getline(file_a, line))
 
        {
 
            istringstream iss(line);
 
            iss >> str;
 
            arr.push_back(str);
        }
 
        file_a.close();
    }
    else
    {
        cout << "Ошибка при открытии файла" << endl;
 
        return 1;
    }
 
 
    cout << "Правильные несократимые дроби: " << endl;
    for (int i = 0; i < arr.size(); i++)
    {
        string str, str_a, str_b; int a, b;
        
        str = arr[i]; str_a = str[0]; str_b = str[2];
 
        a = atoi(str_a.c_str()); b = atoi(str_b.c_str());
 
 
        if (n > b&& is_right(a, b) && !(is_reducing(a, b)))
        {
 
            cout << arr[i] << endl;
            
            
        }
    }
    
    
    for (int b = 1; b < n; b++) 
    {
        string stri, str_a, str_b;
 
        for (int a = 1; a < n; a++) 
        {
            
            if (is_right(a, b) && !(is_reducing(a, b)))
            {
                str_a = to_string(a);
 
                str_b = to_string(b);
 
                stri = str_a + "/" + str_b;
                
                arr.push_back(stri);
            }
        }
    }
        
    
    
    
    system("pause");
    return 0;
VLADOSW2001 вне форума Ответить с цитированием
Старый 03.11.2019, 15:51   #2
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Иии..
Вопрос в чем заключен?
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Ввести предложение.Вывести на экран только цифры. Если условие не выполняется, то вывести сообщение об этом toptopik Помощь студентам 1 14.03.2019 19:45
Нужно найти буквы(т.е вывести на экран) которые встречаются в 2 или более словах. Gohych Паскаль, Turbo Pascal, PascalABC.NET 3 28.12.2016 11:02
Найти все правильные несократимые дроби, знаменатель которых меньше заданного числа. Александр Старцев Помощь студентам 1 21.12.2016 17:26
Oracle - вывести работников, в имени или фамилии которых какая-либо буква встречается 2 и более раз Кристина * SQL, базы данных 10 08.12.2012 20:32
Ввести строку, вывести на экран символы, повторяющиеся в строке более 2 раз. bibl2008 Помощь студентам 4 01.03.2009 13:30