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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2014, 23:38   #1
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию Работа с файлами в с++

Приветствую все участников форума.

Столкнулся с таким вопросом при работе с файлами.
У меня есть записанные данные в файле.
Например:
34
35
67
100
93

Могу ли я их как-либо считать данные и занести их в массив ?
Мне это требуется для того,чтобы когда у меня имеется число 40(mynumber),чтобы я cмог:

1.записать его в файл.
2.провести сортировку по убыванию.
3.сказать какое место занимает mynumber в данном файл.


Результат:
100
93
67
40
35
34
Вывод:Ваше число занимает 4 место в файле.

Или может есть какие-либо другие ,более простые методы, для реализации данного задания.
spectrum988 вне форума Ответить с цитированием
Старый 21.04.2014, 00:09   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include <iostream>
#include <iterator>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int
main()
{
    ifstream is("numbers.txt");
    istream_iterator<int> start(is), end;
    vector<int> numbers(start, end);
    int a;
    cin >> a;
    numbers.insert(numbers.begin(), a);
    sort(numbers.begin(), numbers.end(), greater<int>());
    cout << "Position: " << (distance(numbers.begin(), find(numbers.begin(), numbers.end(), a)) + 1) << endl;
}
Считывает из файла числа, добавляет к ним введенное число, сортирует по убыванию, выводит позицию добавленного числа.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.04.2014, 00:21   #3
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Cпасибо большое BDA,хочу посоветоваться с вами,т.к я использую среду С++Builder.
Код:
ofstream f("records.txt",ios::app);
int rec;
..........
f<<rec;
f.close();
Как мне записывать последующие символы с начала новой строки?
Данные алгоритм,предоставленный вами,я буду использовать в качестве таблицы рейтинга в разработанной игре,но мне нужно как-то его перевести на более понятную мне запись.
spectrum988 вне форума Ответить с цитированием
Старый 21.04.2014, 00:59   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Может быть так?
Код:
#include <iostream>
#include <iterator>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int
main()
{
    ifstream is("numbers.txt");//открытие таблицы рекордов
    istream_iterator<int> start(is), end;
    vector<int> numbers(start, end);
    is.close();
    int a;

    //игра, установка значения "а", вывод места в таблице
    numbers.insert(numbers.begin(), a);
    sort(numbers.begin(), numbers.end(), greater<int>());
    cout << "Position: " << (distance(numbers.begin(), find(numbers.begin(), numbers.end(), a)) + 1) << endl;

    //перед закрытием игры сохранение таблицы рекордов
    ofstream out("numbers.txt", ios::out);
    copy(numbers.begin(), numbers.end(), ostream_iterator<int>(out, "\n"));
    out.close();
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.04.2014, 01:43   #5
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Cпасибо большое,но эта реализация для меня довольно сложна,скажите а как можно вводить через поток,с каждой новой строки в файле,и как все эти записанные мною данные организовать в массив ? или так нельзя ?
spectrum988 вне форума Ответить с цитированием
Старый 21.04.2014, 09:30   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Можно, но использовать массивы в С++ "плохо". Лучше использовать вектор. А если использовать вектор, то самым коротким способом его заполнения будет вышеприведенный код, но можно заполнять и по-другому (не проверял):
Код:
ifstream is("numbers.txt");
vector<int> numbers;
int a;
while (is >> a)
  numbers.push_back(a);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 21.04.2014, 14:29   #7
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Я классы еще не изучал,мне нужно это как-то без них сделать.
spectrum988 вне форума Ответить с цитированием
Старый 21.04.2014, 17:42   #8
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

Так есть варианты передачи данных файла в массив или структуру ?
spectrum988 вне форума Ответить с цитированием
Старый 21.04.2014, 20:01   #9
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Так есть варианты передачи данных файла в массив или структуру ?
Что именно ты хочешь? - я не понимаю.
rrrFer вне форума Ответить с цитированием
Старый 21.04.2014, 23:54   #10
spectrum988
Форумчанин
 
Аватар для spectrum988
 
Регистрация: 24.10.2013
Сообщений: 241
По умолчанию

У меня есть игра,очки(которые игрок заработал за игру)заношу в файл.
Например у меня в файле данные:
45
66
100
А за новую игру я набрал 70 очков
И мне должно вывести в занимаете 2 место в таблице рейтинга.
spectrum988 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлами Eugene_Stoun Общие вопросы Delphi 3 05.07.2013 10:00
работа с файлами Funy Помощь студентам 0 16.01.2012 15:44
Работа с файлами kop Общие вопросы C/C++ 3 30.05.2011 20:07
работа с файлами Luxoff Паскаль, Turbo Pascal, PascalABC.NET 3 09.03.2011 21:04