С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
#1

Работа с файлом, найти, изменить. - C++

10.05.2011, 18:26. Просмотров 1304. Ответов 20
Метки нет (Все метки)

Добрый день. Задание по файлам, любая помощь приветствуется (справка, написание куска кода)
Задача:
Есть исходный файл input.txt(прикреплен). В нем 3 колонки разделенные ";" - 1 колонка с названием банков, строковый тип ну и две колонки с цифрами вещественного типа. эти две колонки соответственно за 2000 и 2001 год. И так суть задания:
Создать новый файл Output.txt в котором.
1) Получить список банков, выдавших в 2000г ссуду более 5 млн. руб.
2) Определить какой из банков, и в каком году выдал наибольшую ссуду.
3) Удалить информацию о банке, который не выдавал ссуду хоть в одном из годов. (на том месте 0)
4) Упорядочить названия банков по убыванию суммарной выданной ссуды.

Что может потребоваться для выполнения, какие либо функции, возможно есть у кого то какой то готовый код, за все спасибо..

Не по теме:

Пишу на DEV-C++, просьба не отправлять в справку по студии..

0
Вложения
Тип файла: txt input.txt (493 байт, 25 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2011, 18:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлом, найти, изменить. (C++):

Работа с файлом. Необходимо изменить программу - C++
Мне преподаватель сказал, что программа сделана правильно. Теперь необходимо ее переделать так, чтобы после создания файла выполнялась...

Найти победителя, работа с файлом C++ - C++
Подскажите, как сделать так, что-бы можно было выявить победителя общего, то есть по очкам какая команда (только одна у которой больше...

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

Найти слова, встречающиеся в каждом предложении текста. Работа с файлом опять) - C++
Дан файл, содержащий текст на русском языке. Найти слова, встречающиеся в каждом предложении текста или сообщить, что таких слов нету. ...

Работа с файлом в С++ - C++
Всем привет! Я никогда не работал с С++, но возникла необходимость чтения-записи в файл на С++. А если еще точнее Embedded C++. Не...

Работа с файлом - C++
Поясню: записываю файл из двумерного целочисленного вектора вот такой строкой: fprintf(f2, "%c", dinom); да да именно со спецификатором...

20
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
10.05.2011, 20:01  [ТС] #2
upd..
0
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
10.05.2011, 20:43 #3
В файле целая часть числа отделяеться от дробной точкой, а не запятой.

Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
1) Получить список банков, выдавших в 2000г ссуду более 5 млн. руб.
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
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>
#include <windows.h>
 
struct bank{
  std::string  bank_name_;
  double       money_2000y_, money_2001y_;
 
  friend std::istream &operator>> (std::istream &is, bank &inf){
    std::string buf;
    getline(is, inf.bank_name_, ';');
    is >> buf;
    std::replace(buf.begin(), buf.end(), ';', ' ');
    std::istringstream ist(buf);
    ist >> inf.money_2000y_ >> inf.money_2001y_;
    return is;
  }
};
 
int main(){
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  std::ifstream ifs("input.txt");
  if(!ifs){
    std::cerr << "File Not Found" << std::endl;
    return 1;
  }
  std::string tmp;
  ifs >> tmp;
  tmp.clear();
  const size_t count_banks_in_file(20);
  std::vector<bank> v(count_banks_in_file);
  for(size_t i = 0; i < count_banks_in_file; ++i){
    ifs >> v[i];
    if(v[i].money_2000y_ > 5.0)
      std::cout << v[i].bank_name_ << '\n';
  }
  return 0;
}
Все остальное по аналогии.
1
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
10.05.2011, 20:53  [ТС] #4
asics, спс дружище..

Добавлено через 5 минут
asics, выводит аброкадабру... что с кодировками подзамутить?
0
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
10.05.2011, 20:54 #5
В свойствах окна консоли, поменяй шрифт на Lucida console или тут поищи -Русские шрифты в консоли
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
10.05.2011, 21:00  [ТС] #6
asics, да нет.. касяк не в этом, в других программах то все норм..
0
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
10.05.2011, 21:03 #7
IIIa66uMEM6eP, Хз, у меня все норм:
0
Миниатюры
Работа с файлом, найти, изменить.  
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
10.05.2011, 21:05  [ТС] #8
asics, на сколько вижу, код блокс.. тогда в двойне странно.. я и в нем пробывал
0
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
10.05.2011, 21:11 #9
Дауж, странно. А ну попробуй открыть тот файл notepad++`ом и посмотреть там кодировку, должно быть ANSI, ну у меня так.
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
10.05.2011, 22:25  [ТС] #10
asics, аналогично

Добавлено через 15 минут
asics, плюнул) переписал на DEV-C++, работает)

Добавлено через 56 минут
Цитата Сообщение от asics Посмотреть сообщение
Все остальное по аналогии.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
   // теперь ищем самую большую суду
  double max_suda=0;
  int buf1;
  fout << "Банк выдал наибольшую суду - ";
 for(size_t i = 0; i < count_banks_in_file; ++i){ // поиск
    ifs >> v[i]; // передаем массиву
    if(v[i].money_2000y_ > max_suda) // если найден элемент 
    max_suda = v[i].money_2000y_;
    buf1 = i;                                  
 }
     v[buf1].bank_name_ = max_suda;                                            
     fout << v[buf1].bank_name_ << '\n'; // то вывести 
  //--------------------------------------------
на выходе:
Код
 

Банк выдал наибольшую суду - d
почему d? где смысловая ошибка?
0
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
10.05.2011, 22:46 #11
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
2) Определить какой из банков, и в каком году выдал наибольшую ссуду.
Всмисле найбольшую суму ? Если да то так:
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
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>
#include <windows.h>
 
struct bank{
  std::string  bank_name_;
  double       money_2000y_, money_2001y_;
 
  friend std::istream &operator>> (std::istream &is, bank &inf){
    std::string buf;
    getline(is, inf.bank_name_, ';');
    is >> buf;
    std::replace(buf.begin(), buf.end(), ';', ' ');
    std::istringstream ist(buf);
    ist >> inf.money_2000y_ >> inf.money_2001y_;
    return is;
  }
  bool operator< (const bank &_1){
    return std::max(money_2000y_, money_2001y_) < std::max(_1.money_2000y_, _1.money_2001y_);
  }
};
 
int main(){
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  std::ifstream ifs("input.txt");
  if(!ifs){
    std::cerr << "File Not Found" << std::endl;
    return 1;
  }
  std::string tmp;
  ifs >> tmp;
  tmp.clear();
  const size_t count_banks_in_file(20);
  std::vector<bank> v(count_banks_in_file);
  for(size_t i = 0; i < count_banks_in_file; ++i){
    ifs >> v[i];
  }
  bank _max = *std::max_element(v.begin(), v.end());
  std::cout << _max.bank_name_ << '\t' << (_max.money_2000y_ > _max.money_2001y_? "2000" : "2001");
  return 0;
}
1
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
12.05.2011, 17:07  [ТС] #12
Цитата Сообщение от asics Посмотреть сообщение
bank _max = *std::max_element(v.begin(), v.end());
не вызывает доверия эта строчка.. да и не компилируется (совместил в одну программу)
0
asics
Freelance
Эксперт С++
2850 / 1785 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
12.05.2011, 17:42 #13
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
да и не компилируется
Незнаю, GCC 4.6.0 все нормально компилирует.
Цитата Сообщение от IIIa66uMEM6eP Посмотреть сообщение
не вызывает доверия эта строчка
Причины не доверия ?
0
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
12.05.2011, 21:02  [ТС] #14
Цитата Сообщение от asics Посмотреть сообщение
Причины не доверия
незнания языка) ошибка в этой строке.. что то вроде instantiated from here

что то такое
0
Миниатюры
Работа с файлом, найти, изменить.  
IIIa66uMEM6eP
заставил Бендера
436 / 292 / 10
Регистрация: 05.12.2010
Сообщений: 1,648
Записей в блоге: 6
26.05.2011, 15:59  [ТС] #15
upd. не получается.
0
26.05.2011, 15:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2011, 15:59
Привет! Вот еще темы с ответами:

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

работа с файлом - C++
Как найти определённое слово в массиве? такого вида 217.118.79.33 dan HTTP GET http://google.com/

Работа с файлом - C++
Файл не открывается для чтения..... программа создает алфавит для исходного текста....помогите пожалуйста..:( Уже все перепробовала.... ...

Работа с файлом - C++
В двумерном массиве подсчитать сумму элементов в каждом столбце и вывести ответы в файл! Пример 1 2 3 4 5 6 7 8 9 в файл...


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

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

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