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

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

Войти
Регистрация
Восстановить пароль
 
Senarist
47 / 51 / 14
Регистрация: 14.03.2014
Сообщений: 617
#1

Чтение текстового файла - C++

12.08.2015, 11:34. Просмотров 357. Ответов 8
Метки нет (Все метки)

Знакомлюсь с чтением текстового файла. Изначально была такая программа:

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
#include<iostream>
using namespace std;
struct spip 
{
    char name[20];
    double sum;
};
 
int main()
{
    int s = 0, k = 0;
    int patrons;
    cout<<"Enter the number of patrons: ";
    cin>>patrons;
    spip* ps = new spip[patrons];
    cout<<"Enter name and sum of donation \n";
    for (int i = 0; i<patrons; i++)
    {
        cin.ignore();
        cout<<"Name: ";
        cin.get((ps+i)->name,20);
        cout<<"Sum: ";
        cin>>(ps+i)->sum;
        if ((ps+i)->sum > 10000)
            s=s+1;
        else
            k=k+1;
                
    }
    cout<<"Grand patrons: \n";
    if (s>0) {
    for (int i = 0; i<patrons; i++)
    {
            if (((ps+i)->sum)>10000) 
        cout<<(ps+i)->name<<"\n";
                                    
    } 
            }
    else
    cout<<"none";
    cout<<"\n\nPatrons: \n";
    if (k>0){
    for (int i = 0; i<patrons; i++)
    {
            if (((ps+i)->sum)<10000 )
        cout<<(ps+i)->name<<"\n";
            
        
    }
            }
    else
    cout<<"none";
    delete [] ps;
    return 0;
}
Теперь нужно сделать тоже самое, но только считать с текстового файла.
К примеру в текстовом файле записано следующее:
2
Sam Stone
9000
Rich Raptor
33400

Попробовал написать:

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
#include<iostream>
#include<fstream>
using namespace std;
struct spip 
{
    char name[20];
    double sum;
};
 
int main()
{
    ifstream inFile;
    inFile.open("text.txt");
    int s = 0, k = 0;
    int patrons;
    inFile>>patrons;
    spip* ps = new spip[patrons];
    int i = 0;
    while (inFile.good() && i<patrons)
    {
 
        inFile.get((ps+i)->name,20);
        inFile>>(ps+i)->sum;
        if ((ps+i)->sum > 10000)
            s=s+1;
        else
            k=k+1;
        i++;
                
    }
    if(inFile.eof())
        cout<<"End of file reached\n";
    cout<<patrons<<endl;
    cout<<"Grand patrons: \n";
    if (s>0) {
        for (int i = 0; i<patrons; i++)
        {
            if (((ps+i)->sum)>10000) 
        cout<<(ps+i)->name<<"\n";
                                    
        } 
              }
    else
        cout<<"none";
    cout<<"\nPatrons: \n";
    if (k>0){
        for (int i = 0; i<patrons; i++)
        {
            if (((ps+i)->sum)<10000 )
        cout<<(ps+i)->name<<"\n";
            
        }
            }
    else
        cout<<"none";
    delete [] ps;
    inFile.close();
    return 0;
}
В итоге вывелась какая то фигня. Где я напартачил?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2015, 11:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение текстового файла (C++):

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла. - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;locale.h&gt; #include&lt;iomanip&gt; #include &lt;cstdlib&gt; using namespace std; struct...

как может корректно выполняющийся оператор >> (чтение из текстового файла) негативно влиять на открытие другого файла? - C++
Друзья! Создадим два текстовых файла, f_0.txt и f_1.txt и что-нибудь в них запизаем, например в первый запихаем 1234 а во второй 5678 и...

Чтение текстового файла - C++
Всем привет. Не могу понять как читать из текстового файла значения разных типов. Вот мне например нужно считать файл с таким содержанием: ...

Чтение из текстового файла - C++
вот этот кусок кода как будет выглядит на с++? begin assign(input,'input.txt'); reset(input); assign(output,'output.txt');...

Чтение текстового файла - C++
здравствуйте. у меня не получается считать текстовый файл. сам файл имеет имеет жесткую структуру: первая строка число(по сути колличество...

Чтение из текстового файла - C++
Условие задачи: В текстовый фаил (c:\program\zitel.txt) записаны: - фамилия - город - улица - дом - квартира для...

8
ture
441 / 334 / 126
Регистрация: 27.11.2014
Сообщений: 1,042
12.08.2015, 12:33 #2
C++
1
(inFile>>(ps+i)->sum).get();
0
Senarist
47 / 51 / 14
Регистрация: 14.03.2014
Сообщений: 617
12.08.2015, 12:53  [ТС] #3
ture не помогло.
0
Velesthau
523 / 425 / 129
Регистрация: 25.11.2014
Сообщений: 1,662
12.08.2015, 13:11 #4
C++
1
inFile.ignore(numeric_limits<streamsize>::max(), '\n');
Перед чтением вот этим: inFile.get((ps + i)->name, 20);
0
ture
441 / 334 / 126
Регистрация: 27.11.2014
Сообщений: 1,042
12.08.2015, 13:15 #5
C++
1
2
if(!inFile.is_open())
        return 0;
Добавлено через 1 минуту
C++
1
(inFile >> patrons).get();
Добавлено через 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
54
55
56
57
58
59
60
61
62
#include<iostream>
using std::cout;
using std::endl;
#include<fstream>
using std::ifstream;
 
struct spip {
    char name[20];
    double sum;
};
 
int main() {
    ifstream inFile;
    inFile.open("text.txt");
    int patrons;
    if(!inFile.is_open())
        return 0;
 
    (inFile >> patrons).get();
 
    spip* ps = new spip[patrons];
    
    int i = 0, s = 0, k = 0;
    while(inFile.good() && i<patrons) {
        inFile.get((ps + i)->name, 20);
        (inFile >> (ps + i)->sum).get();
 
        if((ps + i)->sum > 10000)
            s = s + 1;
        else
            k = k + 1;
        i++;
    }
    if(!inFile)
        cout << "End of file reached\n";
    inFile.close();
 
    cout << patrons << endl;
    cout << "Grand patrons: \n";
    if(s>0) {
        for(int i = 0; i<patrons; i++) {
            if(((ps + i)->sum)>10000)
                cout << (ps + i)->name << endl;
 
        }
    } else
        cout << "none";
 
    cout << "\nPatrons: \n";
    if(k>0) {
        for(int i = 0; i<patrons; i++) {
            if(((ps + i)->sum)<10000)
                cout << (ps + i)->name << endl;
 
        }
    } else
        cout << "none";
 
    delete[] ps;
    
    return 0;
}
Добавлено через 1 минуту
а чяво без нотации массива?
1
Senarist
47 / 51 / 14
Регистрация: 14.03.2014
Сообщений: 617
12.08.2015, 13:32  [ТС] #6
ture Вы имеете ввиду про переменные s,k ?
0
ture
441 / 334 / 126
Регистрация: 27.11.2014
Сообщений: 1,042
12.08.2015, 13:51 #7
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
#include<iostream>
using std::cout;
using std::endl;
#include<fstream>
using std::ifstream;
 
struct spip {
    char name[20];
    double sum;
};
 
int main() {
    ifstream inFile;
    inFile.open("text.txt");
    int patrons;
    if(!inFile.is_open())
        return 0;
 
    (inFile >> patrons).get();
 
    spip* ps = new spip[patrons];
    
    int i = 0, s = 0, k = 0;
    while(inFile.good() && i<patrons) {
        inFile.get(ps[i].name, 20);
        (inFile >> ps[i].sum).get();
 
        if(ps[i].sum > 10000)
            s = s + 1;
        else
            k = k + 1;
        i++;
    }
    if(!inFile)
        cout << "End of file reached\n";
    inFile.close();
 
    cout << patrons << endl;
    cout << "Grand patrons: \n";
    if(s>0) {
        for(int i = 0; i<patrons; i++) {
            if(ps[i].sum>10000)
                cout << ps[i].name << endl;
 
        }
    } else
        cout << "none";
 
    cout << "\nPatrons: \n";
    if(k>0) {
        for(int i = 0; i<patrons; i++) {
            if(ps[i].sum<10000)
                cout << ps[i].name << endl;
 
        }
    } else
        cout << "none";
 
    
    delete[] ps;
    system("pause");
    return 0;
}
0
Senarist
47 / 51 / 14
Регистрация: 14.03.2014
Сообщений: 617
12.08.2015, 13:58  [ТС] #8
а ну разницы же никакой нету)
Да и Прата писал что если используете указатели то пользуйтесь ->
0
lss
921 / 850 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
13.08.2015, 09:15 #9
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
struct spip 
{
    char name[20];
    double sum;
};
 
int main()
{
    ifstream inFile;
    inFile.open("text.txt");
    if (!inFile)
    {
        cout << "Error!" << endl;
        return 0;
    }
    
    int s = 0, k = 0;
    int patrons;
    (inFile >> patrons).get();
    spip* ps = new spip[patrons];
    int i = 0;
    while (inFile.good() && i < patrons)
    {
        inFile.getline((ps + i) ->name, 20);
        (inFile >> (ps + i) ->sum).get();
        if ((ps + i) ->sum > 10000)
            ++s;
        else
            ++k;
        i++;
    }
    if(inFile.eof())
        cout << "End of file reached\n";
    inFile.close();
 
    cout << patrons << endl;
    cout<<"Grand patrons: \n";
    if (s > 0) 
    {
        for (int i = 0; i < patrons; i++)
        {
            if (((ps + i) ->sum) > 10000) 
                cout << (ps + i) ->name << "\n";
        } 
    }
    else
        cout<<"none";
    cout<<"\nPatrons: \n";
    if (k > 0)
    {
        for (int i = 0; i < patrons; i++)
        {
            if (((ps + i) ->sum) < 10000 )
                cout << (ps + i) ->name << "\n";
        }
    }
    else
        cout<<"none";
    delete [] ps;
   
    return 0;
}
0
Миниатюры
Чтение текстового файла  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2015, 09:15
Привет! Вот еще темы с ответами:

Чтение текстового файла - C++
Помогите с программой, пожалуйста. В ворде код программы, а в текстовом файле то, что должно быть на выходе.

Чтение из текстового файла - C++
Добрый день. Проблема моя в следующем: есть текстовой файл примерно следующего содержания a 10 2 2 b 5 5 1 c 3 7 0 d 5 22 0 ...

Чтение из текстового файла - C++
Всем доброго времени суток. Допустим у меня есть файл (file.txt) Содержание текстового файла: { 12:20 13:10 13:20 }...

Чтение из текстового файла - C++
Вот код: #include &lt;iostream&gt; using std::cout; using std::endl; using std::cin; void main() { setlocale(LC_ALL,...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
13.08.2015, 09:15
Ответ Создать тему
Опции темы

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