Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
114 / 13 / 21
Регистрация: 07.12.2013
Сообщений: 58
1

Чтение файла из входного потока

16.01.2015, 17:40. Просмотров 629. Ответов 2
Метки нет (Все метки)

есть код в нем есть путь к файлу, как мне сделать так чтоб я не писал путь к файлу а данные считывались при если допустим я запущу вот так zadanie < q.txt

т.е просто укажу параметр запуска с таким файлом

а также прошу помощи с мутексами и condition_variable
как сделать так чтоб входной поток считывал по 10к (не более) входных данных
любая критика приветствуется! спасибо!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <condition_variable>
#include <mutex>
#include <thread>
#include <iostream>
#include <queue>
#include <chrono>
#include <cmath>
#include <map>
#include <cstdlib>
#include <fstream>
#include <ctime>
using namespace std;
 
int main()
{
 
std::map <int, int> NOK;
map<int, int> snok;
std::queue<int> oche;
std::mutex m;
std::condition_variable cond_var;
bool done = false;
bool notified = false;
int ch=0;
 
 
std::thread filev([&]() {
    std::unique_lock<std::mutex> lock(m);
    ifstream in; // Поток in будем использовать для чтения
    int ch;
    in.open("/home/../output.txt");
    while(!in.eof()){
        in>>ch;
        oche.push(ch);
    }
 
 
    cout << "size = " << oche.size() << "\n";
    notified = true;
    cond_var.notify_one();
 
 
    done = true;
    cond_var.notify_one();
});
 
std::thread nok([&]() {
    std::unique_lock<std::mutex> lock(m);
 
    while (!oche.empty()) {
        ch=oche.front();
        oche.pop();
        int j=2;
        while (j < sqrt((double)ch)+1){
 
            int s=0;
            while(!(ch%j)){
                s++;
                ch/=j;
 
            }
        if (s > 0 && NOK[j] < s){
            NOK[j] = s;
 
        }
        j++;
 
        }
    if (NOK[ch] == 0) NOK[ch]++;
 
    }
    long int su=1;
    int temp=-1;
    int step=0;
    int sa=1;
    std::cout << " NOK= ";
    for (std::map<int, int>::iterator it=NOK.begin(); it!=NOK.end(); it++){
    for (int i=0; i<it->second; i++){
        su*=it->first;
        sa=it->first;
 
        if (temp<sa && sa >1){
            temp=sa;
            step=1;
        } else {
            if(sa>1)
            step++;
        }
    }
 
 
    cout<< temp << "^"<< step << " * " ;
 
    }
notified = false;
});
 
 
filev.join();
nok.join();
 
unsigned int end_time = clock(); // время работы программы
cout << "runtime = " << clock()/1000.0 << endl; // время работы программы
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2015, 17:40
Ответы с готовыми решениями:

Не получается из входного потока с файла сравнить строки
Не получается из входного потока с файла сравнить строки... Вообще не хочет. Не понял почему. Вроде...

Слова входного потока
Вывести самые длинные слова входного потока! если во вх потоке самое длинное слово одно,то...

Считывание до конца входного потока
Что значит считывание данных до конца входного потока? Знаю, что на C++ реализуется так. А что...

Проверка входного потока на ошибки
Ребяты подскажите плз )))) сам не как не разберусь можно ли использовать failbit badbit goodbit...

2
25 / 25 / 11
Регистрация: 07.12.2012
Сообщений: 169
16.01.2015, 19:56 2
т.е просто укажу параметр запуска с таким файлом
C++
1
int main(int argc, char *argv[])
вот здесь вы можете хранить параметр запуска.
1
114 / 13 / 21
Регистрация: 07.12.2013
Сообщений: 58
19.01.2015, 12:18  [ТС] 3
возникли небольшие проблемы при попытке разбить программу на функции,
как можно сделать так чтобы я сначала объявляю все функции, но в мейне хранятся все переменные, не хочу их делать глобальными и передавать ссылки или адреса на переменные (чтоб можно было работать с ними) во все функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void filev(){
std::unique_lock<std::mutex> lock(*m);
        ifstream in; // Поток in будем использовать для чтения
        //int ch;
        in.open(name);
        while(!in.eof()){
                in>>ch;
                *ochered.push(ch);
        }
 
 
        cout << "size = " << *ochered.size() << "\n";
        *notified = true;
        *cond_var.notify_one();
 
 
        *done = true;
        *cond_var.notify_one()
}
 
void nok(){
 
}
 
int main(int argc, char *argv[]){
bool done = false;
bool notified = false;
std::queue<int> ochered;
std::map <int, int> NOK;
std::condition_variable cond_var;
std::mutex m;
int ch;
string name;
как то так не получается ( help plz
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2015, 12:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа стандартного входного потока
Здравствуйте. Допустим есть код: int number1, number2; std::cin &gt;&gt; number1 &gt;&gt; number2; Мы...

Чтение данных из входного потока сокета
Всем привет! s = new Socket(this.parametersModbusTCP.getIpAddress(),...

Чтение из входного файла
Помогите пожалуйста!!!! Задача на QBasic. матрица 12x12 читается из входного файла. Проверьте...

Чтение чисел из файла. Чтение после конца потока невозможно
Товарищи, помогите. В Pascal'e я не силен, так что не бейте меня ногами, но есть задача: написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.