Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
wesleepforever
0 / 0 / 0
Регистрация: 27.06.2011
Сообщений: 13
#1

текстовый файл - C++

27.06.2011, 22:36. Просмотров 420. Ответов 5
Метки нет (Все метки)

В текстовом файле содержатся положительные целые числа,
разделенные пробелами. Перепишите в другой текстовый файл
максимальное количество чисел из первого файла, но чтобы их сумма
не превышала заданного значения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2011, 22:36     текстовый файл
Посмотрите здесь:

Задан текстовый файл, необходимо по нему сформировать двоичный файл индексов - C++
Нужна помощь! Задача: Задан текстовый файл, необходимо по нему сформировать двоичный файл индексов (смещений начал строк в текстовом...

Дан текстовый файл F. Переписать в другой файл G все символы, отличные от букв и пробела - C++
Дан текстовый файл F. Переписать в другой файл G все символы, отличные от букв и пробела.

Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания - C++
Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания

Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания - C++
Не работает , выдает ошибку...Можно решение с комментариями!!?) #include <iostream> #include <fstream> using std::ifstream; ...

Открыть существующий текстовый файл и копировать его в новый файл, с заменой всех букв нижнего регистра - C++
напишите программу, которая бы открывала существующий текстовый файл и копировала его в новый файл, с заменой всех букв нижнего регистра на...

Текстовый файл - C++
Помогите сделать прогу на С Составить программу, которая читает текстовый файл и выполняет такое преобразование: Во всем...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
27.06.2011, 23:03     текстовый файл #2
wesleepforever,

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
#include <iterator>
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstdlib>
 
int main()
{
    std::ifstream input("input.txt");
    std::ofstream output("output.txt");
    std::vector <int> number_vector;
    int number = 30;
 
    if (!input.is_open())
    {
        std::cout << "Error. Can't open file." << std::endl;
        std::cin.get();
        _exit(EXIT_FAILURE);
    }
 
    std::istream_iterator <int> input_it(input);
    std::istream_iterator <int> eof;
    while (input_it != eof)
        number_vector.push_back(*input_it++);
 
    int sum = 0;
    std::vector <int> result_vector;
    std::sort(number_vector.begin(), number_vector.end());
    for (std::vector <int>::iterator it = number_vector.begin(); it != number_vector.end() && sum + *it < number; ++it)
    {
        result_vector.push_back(*it);
        sum += *it;
    }
 
    if (!output.is_open())
    {
        std::cout << "Error. Can't open file." << std::endl;
        std::cin.get();
        _exit(EXIT_FAILURE);
    }
 
    std::ostream_iterator <int> output_it(output, " ");
 
    std::copy(result_vector.begin(), result_vector.end(), output_it);
        
    std::cin.get();
    return 0;
}
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
27.06.2011, 23:04     текстовый файл #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
34
35
36
37
38
39
#include <iostream>
#include <fstream>
#include <vector>
#define chislo 47
using namespace std;
 
int main(){
 
 //Ссчитаем файл в вектор
 ifstream is ("data.txt");
 if (!is)
  return 1;
 vector<int> vec;
 int temp;
 while (is>> temp)
  vec.push_back(temp);
 is.close ();
 
 //сортирнём вектор
 sort (vec.begin(), vec.end(), less<int>()); 
 int sum= 0;
 int i= 0;
 for (; i< vec.size(); i++) {
  sum+= vec[i];
  if (sum> chislo)
   break;
 }
 
 //Перегониим куда надо
 ofstream os ("data_.txt");
 if (!os)
  return 1;
 for (int j= 0; j<i ; j++) {
  os<< vec[j]<<" ";
 }
 os.close ();
 
 return 0;
}
igorrr37
1644 / 1272 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
27.06.2011, 23:43     текстовый файл #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
#include <iterator>
#include <set>
 
int main(){
    std::fstream fs("1.txt");
    if(!fs){std::cerr<<"File not found\n"; return 1;}
    std::multiset<unsigned> unSet((std::istream_iterator<unsigned>(fs)), std::istream_iterator<unsigned>());
    fs.close();
    unsigned val, sum=0;
    std::cout<<"val= ";
    std::cin>>val;
    fs.open("2.txt", std::ios::out);
    for(auto it=unSet.begin(); it!=unSet.end()&&(sum+=*it)<=val; ++it){
        fs<<*it<<"\n";
    }
    fs.close();
    return 0;
}
kravam
быдлокодер
1693 / 880 / 44
Регистрация: 04.06.2008
Сообщений: 5,438
28.06.2011, 00:19     текстовый файл #5
igorrr37,подскажи, чё у меня не пишется в файл?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
#include <iterator>
#include <set>
 
int main(){
    std::fstream fs("data.txt");
    if(!fs){std::cerr<<"File not found\n"; return 1;}
    std::multiset<unsigned>:: iterator j;
    std::multiset<unsigned> unSet((std::istream_iterator<unsigned>(fs)), std::istream_iterator<unsigned>());
    fs.close();
    unsigned val, sum=0;
    val= 47;
    fs.open("data_.txt",std::ios::out|std::ios::trunc);
    for(j=unSet.begin(); j!=unSet.end()&&(sum+=*j)<=val; ++j){
        printf ("==%d\n", *j); 
        fs<<*j<<"\n";
    }
    fs.close();
    getchar ();
    return 0;
}
Значения на консоль выводятся нормально, файл data_.txt пустой

Добавлено через 11 минут
Так работает, но у меня две переменых, fs и fs_, а хотелось бы обойтись одной, как у тебя.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
#include <iterator>
#include <set>
 
int main(){
    std::ifstream fs("data.txt");
    if(!fs){std::cerr<<"File not found\n"; return 1;}
    std::multiset<unsigned>:: iterator j;
    std::multiset<unsigned> unSet((std::istream_iterator<unsigned>(fs)), std::istream_iterator<unsigned>());
    fs.close();
    unsigned val, sum=0;
    val= 47;
    std::ofstream fs_("data_.txt");
    for(j=unSet.begin(); j!=unSet.end()&&(sum+=*j)<=val; ++j){
        printf ("==%d\n", *j); 
        fs_<<(int)*j<<" ";
    }
    fs_.close();
    getchar ();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2011, 00:39     текстовый файл
Еще ссылки по теме:

Текстовый файл - C++
Помогите пожалуйста, как посчитать пробелы в строке? Вот пример открытия файла: Помогите пожалуйста посчитать пробелы!!!

Текстовый файл - C++
Разработайте программу, форматирующую текстовый файл в два столб- ца, аналогично газетным колонкам. В каждом столбце должно быть не ...

текстовый файл - C++
поскажите пожалуйста почему не работает. хочу написать первые символы строк если они удовлетворяют условию в конец того же файла из...

Текстовый файл С++ - C++
Нужно написать программку в C++. Дано два файла, содержащих одинаковое количество целых чисел. Записать из них в третий файл только те пары...


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

Или воспользуйтесь поиском по форуму:
igorrr37
1644 / 1272 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
28.06.2011, 00:39     текстовый файл #6
возможно fs.good() сброшен, хотя у меня и без clear() работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
#include <iterator>
#include <set>
 
int main(){
    std::fstream fs("data.txt");
    if(!fs){std::cerr<<"File not found\n"; return 1;}
    std::multiset<unsigned>:: iterator j;
    std::multiset<unsigned> unSet((std::istream_iterator<unsigned>(fs)), std::istream_iterator<unsigned>());
    fs.clear();
    fs.close();
    unsigned val, sum=0;
    val= 47;
    fs.open("data_.txt",std::ios::out|std::ios::trunc);
    for(j=unSet.begin(); j!=unSet.end()&&(sum+=*j)<=val; ++j){
        std::cout<<*j<<"\n";
        fs<<*j<<"\n";
    }
    fs.close();
    getchar ();
    return 0;
}
Yandex
Объявления
28.06.2011, 00:39     текстовый файл
Ответ Создать тему
Опции темы

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