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

Не выводит коректно данные из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не работает EOF (end-of-file) http://www.cyberforum.ru/cpp-beginners/thread742492.html
EOF (end-of-line) не работает в условии завершения цикла. Вместо него работает -1. Если ввести -1 то цикл прекрасно завершиться, но если ввести EOF (<ctrl> Z) то цикл зависает и бесконечно выводит сообщения. Вот задание: Торговый дом продает пять различных продуктов, розничная цена которых: продукт 1 — $2.98, продукт 2 — $4.50, продукт 3 — $9.98, продукт 4 — $4.49 и продукт 5 —...
C++ фейд для картинки Добрый вечер! Помогите пожалуйста разобраться с задачей. Нужно осуществить переход одной картинки в другую, записать это в видео. с помощью библиотеки OpenCV. код на с++ (Желательно с объяснением. Как разбить изображение. Слышала про плавное затемнение изображения. И как записать его в видео. Будут ли проблемы с картинками разного размера, и как с ними справиться?) заранее спасибо за помощь http://www.cyberforum.ru/cpp-beginners/thread742481.html
C++ Создать класс КНИГА с такими полями в защищенной части: значення_УДК, автор, название, издательство, год издания.
Здраствуйте) Нужна помощь, а то незнаю как сделать даное задание! Создать класс КНИГА с такими полями в защищенной части: значення_УДК, автор, название, издательство, год издания. 1) Определить конструкторы, деструктор, методы установления и чтение значений полей данных классов, методы определения соответствия объекта класса КНИГА критерию поиска. 2) Перегрузить операцию () - для установки...
C++ Есть ли в с++ готовая функция преобразующая строку в массив?
Доброго времени суток! Есть ли в с++ готовая функция преобразующая строку в массив, как в php str_split() ?
C++ Описать структуру с именем NOTE http://www.cyberforum.ru/cpp-beginners/thread742416.html
1. Описать структуру с именем NOTE, содержащую следующие поля: • NAME — фамилия, имя; • TELE — номер телефона; • BDAY — день рождения (массив из трех чисел). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив BLOCKNOTE, состоящий из восьми элементов типа NOTE; записи должны быть упорядочены по трем первым цифрам номера телефона; • вывод на экран...
C++ Штирлиц!Работа со стеком #include <iostream> #include <vector> using namespace std; int main(void) { vector<char> V; char ch; cin>>ch; V.push_back(ch); while(cin>>ch) подробнее

Показать сообщение отдельно
Kiragaz
1 / 1 / 0
Регистрация: 18.12.2012
Сообщений: 13
22.12.2012, 22:20     Не выводит коректно данные из файла
Помогите, пожалуйста разобраться с проблемой. В C++Builder 6 худо бедно работает, правда с одним предупреждением, перешёл на VS 2010, и появилась проблема с выводом на экран из файла. Выводит только первую строку, а дальше пустота. хотя открываешь файл там всё записано как положено.


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
129
130
131
132
133
134
135
136
137
#include <iostream>
#include <fstream>
#include <ostream>
#include <windows.h>
 
 
using namespace std;
 
 
void datainput();
void dataadd();
void dataoutput();
void exit();
struct List
{
    char Name[20];
    char Bookname[20];
        double  Imdate;
};
List Book[100];
 int k,i;
 int m,j;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
    int v;
 
    do
    {
        cout << endl <<
                     "Главное меню:"<< endl <<
                     "1. Ввод данных"<< endl <<
                     "2. Добовление данных"<< endl <<
                     "3. Вывод данных на экран"<< endl <<
                     "4. Выход из программы"<< endl <<
                     "Выберите необходимый пункт меню: ";
        cin >> v;
 
        switch (v)
        {
        case 1:
            datainput();
            break;
        case 2:
            dataadd();
            break;
        case 3:
            dataoutput();
            break;
        case 4:
            exit();
            break;
        default:cout << "Введён не верный пункт меню, попробуйте еще раз" << endl << endl;
            continue;
        }
    }
    while (v != 5);
 
    return 0;
}
 
void datainput()
{
  puts("Какое кол-во книг хотите добавить?");
           k=0;
           cin>>k;
    system ("cls");
    for (i = 0; i < k; i++) {
        cout<<"Введите автора "<<i+1<<"-ой книги:";
                cin>>Book[i].Name;
                cout<<"Введите название "<<i+1<<"-ой книги:";
        cin>>Book[i].Bookname;
        cout<<"Введите год издания "<<i+1<<"-ой книги:";
        cin>>Book[i].Imdate;
             }
 
    fstream file ("C:\\TestFile.txt",ios::out);
    file<<"\n\n\tФамилия\t\t\tНазвание\t\t\tГод издания\n";
    for (i = 0; i < k; i++) {
        file<<i+1<<"\t"<<Book[i].Name;
        file<<"\t\t\t"<<Book[i].Bookname;
        file<<"\t\t\t"<<Book[i].Imdate<<"\n";
    }
    system ("cls");
    cout<<"Файл успешно сохранен.\n\n";
 
 }
 
void dataadd()
{
 
   puts("Какое кол-во книг хотите добавить?");
           m=0;
           cin>>m;
    system ("cls");
        j=k+m;
 for (i = k; i < j; i++) {
                cout<<"Введите автора "<<i+1<<"-ой книги:";
                cin>>Book[i].Name;
                cout<<"Введите название "<<i+1<<"-ой книги:";
                cin>>Book[i].Bookname;
                cout<<"Введите год издания "<<i+1<<"-ой книги:";
        cin>>Book[i].Imdate;
}
 
        ofstream file ("C:\\TestFile.txt",ios_base::app);
                for (i = k; i < j; i++) {
        file<<i+1<<"\t"<<Book[i].Name;
        file<<"\t\t\t"<<Book[i].Bookname;
        file<<"\t\t\t"<<Book[i].Imdate<<"\n";
    }
        file.close();
    system ("cls");
    cout<<"Файл успешно сохранен.\n\n";
 
 }
 
 void dataoutput()
{
 ifstream file ("C:\\TestFile.txt",ios::in);
     system ("cls");
     for (i = 0; i < j; i++) {
        file>>Book[i].Name;
                cout<<i+1<<"\t"<<Book[i].Name;
        file>>Book[i].Bookname;
                cout<<"\t\t\t"<<Book[i].Bookname;
        file>>Book[i].Imdate;
                cout<<"\t\t\t"<<Book[i].Imdate<<"\n";
               }
}
 
void exit()
{
    system ("cls");
    cout << endl << "Выход..." << endl;
}
Проблема где то вот в этой части

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void dataoutput()
{
 ifstream file ("C:\\TestFile.txt",ios::in);
     system ("cls");
     for (i = 0; i < j; i++) {
        file>>Book[i].Name;
                cout<<i+1<<"\t"<<Book[i].Name;
        file>>Book[i].Bookname;
                cout<<"\t\t\t"<<Book[i].Bookname;
        file>>Book[i].Imdate;
                cout<<"\t\t\t"<<Book[i].Imdate<<"\n";
               }
}
P.S. И подскажите если не сложно как реализовать проверку, что бы избежать повторяемости в записях. Желательно с небольшим примером.
Заранее большое спасибо за помощь!!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru