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

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

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

Текстовый файл UTF-8 сохранить как текстовый файл ANSI C++
C++ Скопировать текстовый файл в новый файл, заменив в каждой строке слова «ok» на «*»
C++ Текстовый файл перевести в двоичный, а потом полученный двоичный файл перевести обратно в текстовый
Даны натуральное , символьный файл и текстовый файл . Файл содержит 30 слов , каждое из которых будем называть ключевым C++
C++ Дан текстовый файл. Перепишите его в выходной файл, удалив все знаки препинания
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 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
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
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
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 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
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
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;
}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 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     текстовый файл
Ответ Создать тему
Опции темы

Текущее время: 08:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru