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

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

Восстановить пароль Регистрация
 
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
13.03.2014, 12:48     Текстовые файлы #1
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
#include<iostream>
#include<fstream>
#include<locale.h>
#include<iomanip>
#include<conio.h>
#include<iomanip>
using namespace std;
 
struct champ
{
    char naz[10];
    int vyi, por, nich, zab, pro;
};
int main()
{
 setlocale(LC_ALL, "RUS");
 
 int i,j,n;
 cout<<"Введите кол-во команд:";
 cin>>n;
 champ *p = new champ[n];
   for ( i=0;i<n;i++)
   {
    cout<<"Введите название команды:";
       cin>>p[i].naz;
       cout<<"Введите число выигрышей:";
       cin>>p[i].vyi;
       cout<<"Введите число поражений:";
       cin>>p[i].por;
       cout<<"Введите число ничейных результатов:";
       cin>>p[i].nich;
       cout<<"Введите кол-во забитых мячей:";
       cin>>p[i].zab;
       cout<<"Введите кол-во пропущенных мячей:";
       cin>>p[i].pro;
   }
   for (i=0;i<n-1;i++)
   {
       for(j=i+1;j<n;j++)
       {
           if(p[i].pro < p[j].pro)
           {
               swap(p[i],p[j]);
           }
       }
   }
   cout<< "Название          Выигрыши    Поражения    Ничьи    Забитые    Пропущенные\n\
          \n\n";
   for(i=0;i<n;i++)
        cout<< setw(20) << left << p[i].naz<<setw(14)<< p[i].vyi<<setw(12)<<p[i].por<<setw(10)<<p[i].nich<<setw(12)<<p[i].zab<<setw(12)<<p[i].pro<<"\n";
   _getch();
   return 0;
}
Требуется эту программу(код выше) переделать в текстовый файл. У меня есть наброски(код ниже), но, почему то на экран ничего не выводится. Выручайте!


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
#include<iostream>
#include<fstream>
#include<locale.h>
#include<iomanip>
#include<conio.h>
#include<iomanip>
using namespace std;
 
struct champ
{
    char naz[10];
    int vyi, por, nich, zab, pro;
};
int main()
{
    setlocale(LC_ALL, "RUS");
    int i,j,n;
    ifstream file_in("in.txt");
    
    champ *p=new champ[n];
    for ( i=0;i<n;i++)
    {
        file_in>>p[i].naz>>p[i].vyi>>p[i].por>>p[i].nich>>p[i].zab>>p[i].pro;
    }
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(p[i].pro > p[j].pro) 
            {
                swap(p[i],p[j]);
            }
        }
    } 
    ofstream file_out("out.txt");
    for(i=0;i<n;i++)
        file_out<< setw(20) << left << p[i].naz<<setw(14)<< p[i].vyi<<setw(12)<<p[i].por<<setw(10)<<p[i].nich<<setw(12)<<p[i].zab<<setw(12)<<p[i].pro<<"\n";
    _getch();
    cout<<"Результат в файле out.txt"<<endl;
    system("pause");
}
Добавлено через 20 часов 17 минут
Подниму!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 12:48     Текстовые файлы
Посмотрите здесь:

C++ Текстовые файлы
Текстовые файлы (С++) C++
C++ Текстовые файлы
C++ Текстовые файлы
C++ Текстовые файлы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
13.03.2014, 12:56     Текстовые файлы #2
Нужно проверять, открылся ли файл.
Скорее всего Вы его записали не в текущую папку.
Для верности пропишите полный путь к файлу (про дойные слаши не забудьте):
C++
1
2
3
4
5
ofstream file_out("c:\\temp\\out.txt");
 if (!ifs.bad())
{
....
}
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
13.03.2014, 14:29  [ТС]     Текстовые файлы #3
пробовал. Не получается
В файле in.txt в начале нужно прописать сколько команд в этом файле, потом прочитать сколько команд
Но вот как это сделать, понять не могу
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
13.03.2014, 14:50     Текстовые файлы #4
C++
1
2
3
4
5
6
ifstream file_in("in.txt");
 if (!file_in.bad())
{
  file_in>>n;// прочитаете кво записей
....
}
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
13.03.2014, 15:24  [ТС]     Текстовые файлы #5
все равно ничего не получается. Все перепробовал уже
Даже такое пробовал
C++
1
2
3
4
5
while (!file_in.bad())
 {
     if(in.get()=='\n')
         n++;
 }
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2014, 15:40     Текстовые файлы #6
Цитата Сообщение от VitekSR Посмотреть сообщение
все равно ничего не получается. Все перепробовал уже
Даже такое пробовал
Содержимое файла какое?

Добавлено через 1 минуту
И покажите код, который пробуете. Файл как создаётся? Кодом?

Добавлено через 4 минуты
Цитата Сообщение от VitekSR Посмотреть сообщение
file_out<< setw(20) << left << p[i].naz<<setw(14)<< p[i].vyi<<setw(12)<<p[i].por<<setw(10)<<p[i].nich<<setw(12)<<p[i].zab<<setw(12)<<p[i].pro<<"\n";
И не нужно данные в файле форматировать, это не консоль. Название команды в одной строке, остальное в другой, через пробелы. И где здесь запись количества команд?

Добавлено через 1 минуту
Цитата Сообщение от VitekSR Посмотреть сообщение
В файле in.txt в начале нужно прописать сколько команд в этом файле, потом прочитать сколько команд
Но вот как это сделать, понять не могу
Как записать или как прочитать не знаете?
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
13.03.2014, 15:58  [ТС]     Текстовые файлы #7
Выше 2 кода. Один обычный (из него нужно сделать, чтобы читались текстовые файлы), а второй это мои наработки. Но то что сделал я, не работает. Из файла вообще ничего не считается
Содержимое файла in.txt:
Вложения
Тип файла: txt in.txt (17 байт, 2 просмотров)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2014, 16:04     Текстовые файлы #8
Как в 4 посте написано делали?

Добавлено через 1 минуту
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Файл как создаётся? Кодом?
Цитата Сообщение от alsav22 Посмотреть сообщение
И где здесь запись количества команд?
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
13.03.2014, 16:13  [ТС]     Текстовые файлы #9
файл уже создан. Там написаны: команды, выигрыши, проигрыши, ничьи, забитые, пропущенные мячи.
т.е:
1 - количество команд
Real - название команды, 1 - выигрыш, 2 - проигрыш, 3 - ничьи, 4 забитые мячи, 5 - пропущенные мячи.
Из файла просто нужно предусмотреть чтение исходных данных из текстового файла. И результат закинуть в файл out.txt
uhx
 Аватар для uhx
56 / 56 / 6
Регистрация: 11.07.2013
Сообщений: 300
13.03.2014, 16:15     Текстовые файлы #10
Цитата Сообщение от VitekSR Посмотреть сообщение
но, почему то на экран ничего не выводится. Выручайте!
Может потому что вы ничего на экран и не выводите?!
Вы все записываете в файл

Добавлено через 1 минуту
Цитата Сообщение от VitekSR Посмотреть сообщение
int i,j,n;
* * ifstream file_in("in.txt");
champ *p=new champ[n];
* * for ( i=0;i<n;i++)
* * {
* * * * file_in>>p[i].naz>>p[i].vyi>>p[i].por>>p[i].nich>>p[i].zab>>p[i].pro;
* * }
Переменная n объявлена, а где само число? Цикл что, будет бесконечно считывать? Или вообще не считывать?
Я думаю, в этом и вся проблема. В 1 коде у Вас была запись в n, а тут ничего.
Исправляйте, проверяйте.
VitekSR
0 / 1 / 0
Регистрация: 20.10.2013
Сообщений: 233
13.03.2014, 16:28  [ТС]     Текстовые файлы #11
Ой, извиняюсь, моя ошибка. Результат в файл запихать нужно!
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
#include<iostream>
#include<fstream>
#include<locale.h>
#include<iomanip>
#include<conio.h>
#include<iomanip>
using namespace std;
 
struct champ
{
    char naz[10];
    int vyi, por, nich, zab, pro;
};
int main()
{
    setlocale(LC_ALL, "RUS");
    ifstream in("D:\\in.txt");
    int i,j,n=1;
    while(!in.eof())
    {
        if(in.get()=='\n')
            n++;
    }
    in.close();
 
            champ *p=new champ[n];
    ifstream file_in("D:\\in.txt");
 
    
 
    for ( i=0;i<n;i++)
    {
        file_in>>p[i].naz>>p[i].vyi>>p[i].por>>p[i].nich>>p[i].zab>>p[i].pro;
    }
    for(i=0;i<n-1;i++)
    {
        for(j=i+1;j<n;j++)
        {
            if(p[i].pro > p[j].pro) 
            {
                swap(p[i],p[j]);
            }
        }
    } 
    ofstream file_out("D:\\out.txt");
    for(i=0;i<n;i++)
        file_out<< setw(20) << left << p[i].naz<<setw(14)<< p[i].vyi<<setw(12)<<p[i].por<<setw(10)<<p[i].nich<<setw(12)<<p[i].zab<<setw(12)<<p[i].pro<<"\n";
    _getch();
    cout<<"Результат в файле out.txt"<<endl;
    system("pause");
}
вот немного переделал, но все равно не записывается в файл. Возможно проблема с чтением файла?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 16:33     Текстовые файлы
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2014, 16:33     Текстовые файлы #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
В файле "in.txt":
2
real madrid
1 2 3 4 5
barcelona
6 7 8 9 10
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
#include<iostream>
#include<fstream>
#include<locale.h>
#include<iomanip>
#include <cstdlib>
using namespace std;
 
struct champ
{
    char naz[20];
    int vyi, por, nich, zab, pro;
};
 
int main()
{
    setlocale(LC_ALL, "RUS");
    
    int i, j, n;
    
    ifstream file_in("in.txt");
    if (!file_in)
    {
        cout << "Error!" << endl;
        system("pause");
        return 0;
    }
    
    (file_in >> n).get();
    cout << n << endl;
    champ *p = new champ[n];
    for ( i = 0; i < n; i++)
    {
        file_in.getline(p[i].naz, 20);
        cout << p[i].naz << endl;
        file_in >> p[i].vyi >> p[i].por >> p[i].nich >> p[i].zab >> p[i].pro;
        file_in.get();
        cout << p[i].vyi << ' ' << p[i].por << ' ' << p[i].nich << ' ' 
             << p[i].zab << ' ' << p[i].pro << endl;
    }
    
    for(i = 0; i < n - 1; i++)
    {
        for(j = i + 1; j < n; j++)
        {
            if(p[i].pro > p[j].pro) 
            {
                swap(p[i], p[j]);
            }
        }
    } 
    
    ofstream file_out("out.txt");
    if (!file_out)
    {
        cout << "Error! Failed to create a file for writing!" << endl;
        system("pause");
        return 0;
    }
    
    file_out << n << endl;
    
    for(i = 0; i < n; i++)
    {
        file_out << p[i].naz << endl;
        file_out << p[i].vyi  << ' ' << p[i].por << ' ' 
                 << p[i].nich << ' ' << p[i].zab << ' ' << p[i].pro << endl;
    }
    
    cout << "Результат в файле out.txt" << endl;
    
    system("pause");
    return 0;
}
Миниатюры
Текстовые файлы  
Yandex
Объявления
13.03.2014, 16:33     Текстовые файлы
Ответ Создать тему
Опции темы

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