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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Переопределение ввода / вывода http://www.cyberforum.ru/cpp-beginners/thread292525.html
Структура «абонент телефонной сети» содержит следующие поля: 1) фамилия (строка), 2) ули-ца, 3) дом, 4) квартира, 5) тел. номер. Переопределить операции << и >> для файлового ввода-вывода такого типа данных.
C++ Матрица, тупой вопрос Нужно найти сумму строки, где находится максимальный элемент. Элемент-то с лёгкостью нашёл. А вот сумму имеенно ЭТОЙ строки не могу =(Почему-то суммирует весь массив. Подскажите пожалуйста. http://www.cyberforum.ru/cpp-beginners/thread292520.html
C++ Действия с матрицией
Куплю решение задачи. Предложения в личку. Разработать алгоритм и по нему составить два варианта программы для обработки двумерного массива. Первый вариант программы – работа со статическим массивом, второй – с динамическим. Задание:Упорядочить по возрастанию элементы каждой строки матрицы размером n x m. Примеры решения (сделанные коды программ должны быть написаны на подобии, так сказать...
C++ Ошибки при компиляции
#include <vcl.h> #pragma hdrstop #include "CDPlayer_.h" #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
C++ Позиции http://www.cyberforum.ru/cpp-beginners/thread292497.html
Имеется файл с числами. Найти сумму k1 - го и k2 - го чисел файла. Друзья, сделайте, если вас не сложно! Заранее большое вам спасибо, за понимание. Добавлено через 1 час 50 минут Ребят, потратьте немного своего времени, очень вас прошу. Последняя задачка осталась (( Пожалуйста ...
C++ матрица опять ( В данной действительной квадратной матрице порядка n, найти наибольший по модулю элемент. Получить квадратную матрицу порядка n - 1 путем выбрасывания из исходной матрицы какой - нибудь строки и столбца, на пересечении которыъ расположен элемент с найденным значением. Друзья, помогите пожалуйста сделать! Как это не глупо звучит, но завтра полюбому сдать надо ( Спасибо ха понимание друзья!... подробнее

Показать сообщение отдельно
IIIa66uMEM6eP
заставил Бендера
 Аватар для IIIa66uMEM6eP
432 / 288 / 10
Регистрация: 05.12.2010
Сообщений: 1,642
Записей в блоге: 6
04.06.2011, 22:52  [ТС]     Работа с файлом, найти, изменить.
Выложу то что получилось.. Вдруг кто то что то переймет.
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
105
106
107
108
109
110
111
112
113
114
115
116
117
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <algorithm>
#include <windows.h>
#pragma comment(lib,"kernel32.lib") 
using namespace std;
 
//структура содержимого
struct bank
{
  string  bank_name_; // строка с именами банков
  float       money_2000y_, money_2001y_; 
 
  friend istream &operator>> (istream &is, bank &inf){
    string buf; // буферная строка
    getline(is, inf.bank_name_, ';'); // берем всю строку с именами банков и
    is >> buf;  // переносим в буферную строку
    // заменяем до конца пробелами после двоеточия с 1 позиции
    replace(buf.begin(), buf.end(), ';', ' ');
    //
    istringstream ist(buf); // считываем из потока строки
    //перенаправляем поток 
    ist >> inf.money_2000y_ >> inf.money_2001y_;
    return is;
  }
};
 
int main(){
        setlocale (LC_CTYPE, "rus");
// открываем файл
  ifstream ifs("C:\\input.txt");
  if(!ifs){
    cerr << "File Not Found" << endl;
    return 1;
  } 
  string tmp;
  ifs >> tmp; //передаем строке значения
  tmp.clear(); // вызов удаления всех символов
  const size_t count_banks_in_file(20);// так 20 строк банков
  vector<bank> v(count_banks_in_file);  //динамический массив
  //Открываем файл для записи
  ofstream fout ("C:\\output.txt");
  //
  
 // сначала ищем те у которых > 5 милионов рублей
fout << "__________________________________________________________________" << endl;
fout << "Банки у которых прибыль составила больше 5 милионов: "<< endl;
fout << "__________________________________________________________________" << endl;
  for(size_t i = 0; i < count_banks_in_file; ++i){ // поиск
    ifs >> v[i]; // передаем массиву
    if(v[i].money_2000y_ >= 5.0) // если найден элемент больший 5.0
     fout << v[i].bank_name_ << '\n'; // то вывести банки с такими элементами 
                                        // в строке (запишем в новый файл)
  }
 fout << endl;
 fout << endl; 
 // ---------------------------------------------------------
fout << "__________________________________________________________________" << endl;
fout << "Показываем в каком году банк выдавал наибольшую ссуду: " << endl;
fout << "__________________________________________________________________" << endl;    
  // теперь ищем самую большую суду
  for(size_t i = 0; i < count_banks_in_file; ++i)
  {
    ifs >> v[i];
 
    string max_element = (v[i].money_2000y_ > v[i].money_2001y_? "2000" : "2001");
     fout <<  v[i].bank_name_ <<'\t'<< max_element << endl;
  //--------------------------------------------
  }
  
  /////////////////////////////////////////////////////////////////////////////////
 // удаляем информацию о банке, который не выдавал ссуду хотябы в одном из годов (0)
   fout << endl; 
fout << "__________________________________________________________________" << endl;
   fout << "Удаляем следующие банки, которые в один из годов не выдавали суды." << endl;
   fout << "Выводим только те - которые выдавали: " << endl;
fout << "__________________________________________________________________" << endl;
   fout << endl;
     for(size_t i = 0; i < count_banks_in_file; ++i)
  {
fstream fs("C:\\input.txt", std::ios::in);//Открываеш на чтение
 
//Все сожержимое заносим в буфер(ы) с которым(и) будем работать
ifs >> v[i];
fs.open("C:\\output.txt", std::ios::out); //и открываем его на запись
//Тут заносим в файл только те данные которые нужно
if(!(v[i].money_2000y_ == 0 || v[i].money_2001y_ == 0)) // перезаписываем по условию 
fout << v[i].bank_name_ << '\n';
  } 
  /////////////////////////////////////////////////////////////////////////////////
fout << endl;
 //----------------------------------------------
fout << "__________________________________________________________________" << endl;
fout << "Сумма суды выданной банками за 2 года: " << endl;
fout << "__________________________________________________________________" << endl;
fout << endl;
 //Упорядочиваем названия банков по убыванию суммарной выданной ссуды.
 //Сначала складываем суды 2000 и 2001 года. 
  for(size_t i = 0; i < count_banks_in_file; ++i)
  {     
   ifs >> v[i];
   float summa = v[i].money_2000y_ + v[i].money_2001y_;
   fout << v[i].bank_name_ << " " << summa << endl;
  } 
fout << endl;
fout << "__________________________________________________________________" << endl;
 //-----------------------------------------------
  //закроем файл
  fout.close();
  //
cout << endl; 
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
Текущее время: 02:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru