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

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

Войти
Регистрация
Восстановить пароль
 
Jekasso
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 33
#1

Вывод лишней информации из файла - C++

17.11.2013, 13:44. Просмотров 346. Ответов 5
Метки нет (Все метки)

Если я просто выберу 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
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
118
119
120
121
122
123
124
125
126
127
128
/*12.Word: Слово; Номера страниц, на которых слово встречается (от 1 до 10); 
Число страниц. Создать массив объектов. Вывести:
a) слова, которые встречаются более чем на N страницах;
b) слова в алфавитном порядке;
c) для заданного слова номера страниц, на которых оно встречается.*/
// Cлово 12 200
 
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include<fstream>
#include <stdio.h>
#include<stdlib.h>
#include<iomanip>
#define cls system("cls");
 
using namespace std;
int k,z=0;
ifstream wordsfile;
 
class Words{
    char word[10];
    int numb;
    int num_p;
        public:
            Words();
            void show();
            void sozd();
            int scanfile();
};
 
//ЗАПИСЬ ИНФОРМАЦИИ
void sozd()
{
    char word[10];
    int numb, num_p;
    
    ofstream wordsfile;
    wordsfile.open("data.txt", ios::app);
    
    cout <<"Word"<<endl;
    cin >> word;
    wordsfile << endl << word <<"  ";
 
    cout <<"Words on page 1-10"<<endl;//Номера страниц, на которых слово встречается (от 1 до 10)
    cin >> numb;
    wordsfile << numb <<"  ";
    
    cout <<"Numb of pages"<< endl;
    cin >> num_p;
    wordsfile << num_p;
 
    wordsfile.close();
}
 
//ВЫВОД
void vivod(Words list[]){
            int i;
            wordsfile.open("data.txt");
            cout << "Информация в файле: \n";
            z=list[0].scanfile();
            cout << "__________________" << endl;
            for(i=0;i<z;i++) //ПРОБЛЕМА С ОПРЕДЕЛЕНИЕМ КОЛИЧЕСТВА СТРОК В ФАЙЛЕ???
                list[i].show();
            cout << "__________________" << endl;
            z=0;
            wordsfile.close();
}
 
//>>>>>>>>>>>>>ГЛАВНАЯ<<<<<<<<<<<<<<<
int _tmain(int argc, _TCHAR* argv[]){   
    setlocale( LC_ALL, "Russian");
    
    while(1){
        Words *list;
    
        wordsfile.open("data.txt");
 
        list = new Words[50];
        Words();
        wordsfile.close();
        int i, n, nomber;
        cls;
 
        cout <<"Введите номер задания: ";       
        cout <<"\n\t1 - создать\n\t2 - вывести ";
        cout <<"\n: ";
        cin>>nomber;
 
        switch(nomber){
                case 1://ЗАПИСЬ
                    cls;
                    cout << "Введите количество: " << endl;
                    cin >> n;
                    for( i = 0; i < n; i++) 
                        sozd();
                    system("pause");
                    break;
                case 2://ВЫВОД
                    cls;
                    vivod(list);
                    system("pause");
                    break;
                case 3:
                    cls;
                    break;
                default:
                    cout << "Ошибка! Введите числа в диапазоне 0-7!"<<endl;
                    system("pause");
                    break; 
           }
    }
    return 0;
}
 
//КОНСТРУКТОР
Words::Words(){
    if (!wordsfile.eof()){
        z++;
        wordsfile>>word>>numb>>num_p;}
}
 
//------------------------- show -------------------------//
void Words::show(){
    cout << word << " " << numb << " "  << num_p << endl;}
 
int Words::scanfile(){
  return z;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2013, 13:44     Вывод лишней информации из файла
Посмотрите здесь:

C++ Вывод информации в С++
C++ Вывод информации в 1 строке
C++ класс. вывод информации
C++ Вывод информации об абонентах
Происходит вывод лишней цифры в printf C++
C++ Вывод информации из файла
C++ Вывод информации из файла
Вывод информации из файла C++
C++ Ввод и вывод информации
C++ Считывание из файла и вывод на экран (сохранение записанной в программе информации в файл)
C++ Ввод информации и вывод информации на экране
Построчный вывод информации C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.11.2013, 13:54     Вывод лишней информации из файла #2
Jekasso, не считай элементы, вместо этого читай до eof.

Добавлено через 1 минуту
Попробуй открыть в приплюснотом блокноте.
Jekasso
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 33
17.11.2013, 14:51  [ТС]     Вывод лишней информации из файла #3
taras atavin, так он вообще зацикливается.
MrGluck
Ворчун
Эксперт CЭксперт С++
6676 / 3857 / 511
Регистрация: 29.11.2010
Сообщений: 10,217
17.11.2013, 15:51     Вывод лишней информации из файла #4
На ум приходит лишь тотальный рефакторинг.

Попробуйте в одной отдельной программе сначала записать в файл 10 чисел и потом считать их.
Далее попробуйте сначала записать слово и 10 чисел, а потом считать это все.
Далее организуйте меню с выбором: считать и записать.
Выложите результат на форум (желательно поэтапно).
Jekasso
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 33
17.11.2013, 17:31  [ТС]     Вывод лишней информации из файла #5
MrGluck, проблему решил, просто кое-что не в том месте было написано
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.11.2013, 20:06     Вывод лишней информации из файла #6
Цитата Сообщение от Jekasso Посмотреть сообщение
taras atavin, так он вообще зацикливается.
Не может этого быть.
Yandex
Объявления
17.11.2013, 20:06     Вывод лишней информации из файла
Ответ Создать тему
Опции темы

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