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

Потоки, работа с файлами - C++

Восстановить пароль Регистрация
 
rus11
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 20
26.05.2013, 02:36     Потоки, работа с файлами #1
Задача: Структура записи: Шифр изделия, наименование, остаток на складе, количество заказанных изделий, срок поступления на склад.
Выдать на экран информацию об изделиях, запас которых меньше количества, указанного с клавиатуры и на которые не сделан дополнительный заказ.
Пометить на удаление все изделия, запас которых на складе равен нулю и на которые не сделан дополнительный заказ.

Не работает то, что выделено жирным (пункт 7 в начальном меню). В txt файл заносит верную информацию, но в самой проге выдает ошибку чтения. Помогите пожалуйста исправить!

my.h
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
#ifndef MY_H
#define MY_H
#include <conio.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string.h>
//#define myfile "f.txt"
using namespace std;
#define UNICODE
#ifdef UNICODE
    #define TCHAR wchar_t
    #define TEXT(p) L##p 
    #define fstream wfstream
    #define cin wcin
    #define cout wcout
    #define ostream wostream
    #define strcmp   wcscmp
#define strcpy
#else 
#define TCHAR char
#define TEXT(p) p
#endif //UNICODE
 
#define SHIFR 7 //размеры под структуру
#define NAIM 7
#define OST 3
#define KOL 3
#define SROK 4
 
extern int len;
extern char* name; // переменная под наш файл
 
struct BOOK // струтура по заданию
{
    TCHAR shifr [SHIFR];
    TCHAR naim [NAIM];
    int ost;
    int kol;
    int srok;
    TCHAR metka;
};
 
// протипы всех наших функций
//void pometka(fstream& p);
void  zadacha (fstream& p, int ost);
int  Delete (fstream& p);
int  metkaDel (fstream& p, TCHAR metka=TEXT('+'));
void  UNmetkaDel (fstream& p, TCHAR metka=TEXT('+'));
void chetenieN (fstream& p, int n);
void chetenie (fstream& p);
fstream& read (fstream& p, BOOK& b, int n=0);
void input (BOOK& b);
void zapisVfail (fstream& p, int n);
void write(fstream& p,  BOOK& b, int n=0);
ostream& FinishL(ostream& stream);
ostream& LineG(ostream& stream);
ostream& shapka(ostream& stream);
#endif  // MY_H
main.cpp
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
#include "my.h"
char* name="test.txt";
 
void main ()
{
    /*fstream y("y.txt", ios::in|ios::out|ios::app);
    fstream no("n.txt", ios::in|ios::out|ios::app);*/
    int ans;
    setlocale(LC_ALL,"rus");
    fstream p(name,ios::app); 
    if(p)
    {
        p.close();
        p.open(name,ios::in|ios::out|ios::ate);
    }
    do
    {
        system("cls");
        cout<<TEXT("\t1-Добавить записи\n\t2-Чтение всех записей\n\t3-Чтение записи с любым номером")
        <<TEXT("\n\t4-Пометить на удаление\n\t5-Снять пометки на удаление\n\t6-Удалить помеченные записи")
        <<TEXT("\n\t7-Решение индивидуальной задачи\n\t8-Выход")<<endl;
        cin>>ans;
        
        switch(ans)
        {
        
        case 1:
        system("cls");
        int n;
        cout<<TEXT("\n\tСколько записей вводить?\n");
        cin>>n;
        cout<<endl<<LineG<<endl;
        zapisVfail (p,n);
        break;
 
        case 2:
        chetenie (p);
        _getch();
        break;
 
        case 3:
        system("cls");
        int z;
        cout<<endl<<LineG<<endl;
        cout<<TEXT("\nВведите номер записи")<<endl;
        cin>>z;
        chetenieN (p,z);
        break;
 
        case 4:
        system("cls");
        metkaDel (p);
        cout<<TEXT("\n\nВсе изделия, запас которых на складе равен нулю и на которые не сделан дополнительный заказ помечены на удаление!");
        break;
 
        case 5:
        UNmetkaDel(p);
        cout<<TEXT("\n\nПометки на удаление сняты!");
        break;
 
        case 6:
        Delete (p);
        cout<<TEXT("\n\nПомеченные записи удалены!");
        break;
 
        case 7:
        system("cls");
        int ost;
        cout<<TEXT("\nВведите кол-во:")<<endl;
        cin>>ost;
        zadacha (p,ost);
        break;
        
        case 8:
        exit(0);
 
        }getch();
    }while(1);
}
table.cpp
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
#include "my.h"
 
ostream& shapka(ostream& stream)
{
    setlocale(LC_ALL, "rus");
 
stream  <<  endl<<FinishL<<endl
 
     << setw(4) <<  TEXT('|')
     << setw(SHIFR)<<   TEXT("Шифр изд.")
     << setw(2) <<  TEXT('|')
     << setw(NAIM)<<    TEXT("Наимен.")
     << setw(3) <<  TEXT('|')
     << setw(OST) <<    TEXT("Остаток")
     << setw(2) <<  TEXT('|')
     << setw(KOL) <<    TEXT("Кол-во в заказе")
     << setw(2) <<  TEXT('|')
     << setw(SROK) <<   TEXT("Срок поставки")
     << setw(2) <<  TEXT('|')
     << setw(6) <<  TEXT("Метка")
     << setw(1) <<  TEXT('|');
 
     stream <<  endl
         <<FinishL;
      return stream;
}
 
ostream& FinishL(ostream& stream)
{
    stream
        <<setw(4)<<TEXT('+')
    <<  setw(69)
    <<  setfill(TEXT('-'))
    <<TEXT('+')
        <<  setfill(TEXT(' '));
    return stream;
}
 
ostream& LineG(ostream& stream)
{
    stream
        <<setw(64)
        <<setfill(TEXT('-'))<<endl;
    return stream;
}
write.cpp
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#include "my.h"
int len=SHIFR+NAIM+OST+KOL+SROK+2+2;
void write(fstream& p,  BOOK& b, int n)
{
    p.clear();
    if (n)
        p.seekp((n-1)*len, ios::beg);
    p<<setw(SHIFR)<<b.shifr<<setw(NAIM)<<b.naim<<setw(OST)<<b.ost<<setw(KOL)<<b.kol<<setw(SROK)<<b.srok<<setw(2)<<b.metka<<endl;
    if (!p)
    {
        cout<<endl<<("Ошибка записи");
        _getch();
        exit(0);
    }
}
 
fstream& read (fstream& p, BOOK& b, int n)
{
    setlocale(LC_ALL,"rus");
    if(n)
    p.seekg((n-1)*len, ios::beg);
    p>>b.shifr>>b.naim>>b.ost>>b.kol>>b.srok>>b.metka;
    if (!p && !p.eof() )
    {
        cout<<endl<<TEXT("Ошибка чтения");
        _getch();
        exit(0);
    }
    return p;
}
 
void input (BOOK& b)
{
    setlocale(LC_ALL,"rus");
    cout<<endl<<TEXT("\nВведите шифр\t");
    cin>>b.shifr;
    cout<<endl<<TEXT("\nВведите наименование\t");
    cin>>b.naim;
    cout<<endl<<TEXT("\nВведите остаток\t");
    cin>>b.ost;
    cout<<endl<<TEXT("\nВведите количество\t");
    cin>>b.kol;
    cout<<endl<<TEXT("\nВведите срок\t");
    cin>>b.srok;
    b.metka=TEXT('-');
}
 
void zapisVfail (fstream& p, int n)
{
    p.clear();
    BOOK b;
    p.seekp(0, ios::end);
    for (int i=0; i<n; i++)
    {
        cout<<endl;
        input(b);
        write(p,b);
    }
}
 
void print (BOOK& b)
{
 cout <<endl<<setw(4)   <<  TEXT('|')
     << setw(SHIFR)<<   b.shifr  
     << setw(4) <<  TEXT('|')
     << setw(NAIM)<<    b.naim
     << setw(3) <<  TEXT('|')
     << setw(OST) <<    b.ost
     << setw(6) <<  TEXT('|')
     << setw(KOL) <<    b.kol
     << setw(14)    <<  TEXT('|')
     << setw(SROK) <<   b.srok
     << setw(11)    <<  TEXT('|')
     << setw(6) <<  b.metka
     << setw(1) <<  TEXT('|');
}
 
void chetenie (fstream& p)
{
    p.clear();
    BOOK b;
    p.seekp(0, ios::beg);
    cout<<shapka;
    while(read ( p, b))
    {
        print(b);
    }
}
 
void chetenieN (fstream& p, int z)
{
    p.clear();
    BOOK b;
    //p.seekp(0, ios::beg);
    cout<<shapka;
    if (read ( p, b,z))
    {
        print(b);
    }
    else
    cout<<endl<<"Zapici net";
}
 
int  metkaDel (fstream& p, TCHAR metka)
{
    p.clear();
    BOOK b;
    p.seekp(0, ios::beg);
    int k=0;
    for (int i=1; read (p,b,i); i++)
    {
        if(b.kol==0 && b.ost==0)
        {  
            b.metka=metka;
            write(p,b,i);
            k++;
        }
    }
    return k;
}
 
void  UNmetkaDel (fstream& p, TCHAR metka)
{
    p.clear();
    BOOK b;
    p.seekp(0, ios::beg);
    for (int i=1; read(p,b,i); i++)
    {
        if(b.metka==metka)
        {
            b.metka=TEXT('-');
            write(p,b,i);
        }
    }
}
 
int  Delete (fstream& p)
{
    fstream p1("temp.txt", ios::app);
    p.clear();
    BOOK b;
    p.seekp(0, ios::beg);
    int k=0;
    for (int i=1; read(p,b,i); i++)
    {
        if(b.metka==TEXT('-'))
        {  
            write(p1,b);
            k++;
        }
    }
    p.close();
    p1.close();
    remove(name);
    rename("temp.txt",name) ;
    p.open(name,ios::in|ios::out|ios::ate);
    return k;
}
 
void  zadacha (fstream& p, int ost)
{
    fstream p1("zadacha.txt", ios::app);
    p.clear();
    BOOK b;
    p.seekg(0, ios::beg);
    for (int i=1; read (p,b,i); i++)
    {
        if(b.ost<ost && b.kol==0)
        {  
            write(p1,b,i);
        }
    }
 
    p.close();
    p1.close();
    remove(name);
    rename("zadacha.txt",name);
    p.open(name,ios::in|ios::out|ios::ate);
    chetenie (p1);
    _getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 02:36     Потоки, работа с файлами
Посмотрите здесь:

C++ Работа с файлами
C++ Работа с файлами
C++ Работа с файлами!
Работа с файлами C++
C++ Работа с файлами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sword7i
3 / 3 / 0
Регистрация: 25.09.2012
Сообщений: 92
26.05.2013, 02:41     Потоки, работа с файлами #2
Выложите собранный проект, никто не будет за вас его создавать.
rus11
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 20
26.05.2013, 02:44  [ТС]     Потоки, работа с файлами #3
Цитата Сообщение от sword7i Посмотреть сообщение
Выложите собранный проект, никто не будет за вас его создавать.
У каждого разная версия VS, поэтому, думаю, нет смысла выкладывать готовый проект.
sword7i
3 / 3 / 0
Регистрация: 25.09.2012
Сообщений: 92
26.05.2013, 02:45     Потоки, работа с файлами #4
Цитата Сообщение от rus11 Посмотреть сообщение
У каждого разная версия VS, поэтому, думаю, нет смысла выкладывать готовый проект.
Каждый проект можно перестроить.
gray_fox
26.05.2013, 02:47
  #5

Не по теме:

Цитата Сообщение от rus11 Посмотреть сообщение
У каждого разная версия VS
Не у каждого есть VS...)

sword7i
3 / 3 / 0
Регистрация: 25.09.2012
Сообщений: 92
26.05.2013, 02:52     Потоки, работа с файлами #6
Цитата Сообщение от gray_fox Посмотреть сообщение

Не по теме:


Не у каждого есть VS...)

Нам в школе разрешают работать только в вижуал студио

Добавлено через 3 минуты
Цитата Сообщение от sword7i Посмотреть сообщение
Нам в школе разрешают работать только в вижуал студио
соответственно ему тоже, потому что он мой одноклассник!
rus11
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 20
26.05.2013, 02:55  [ТС]     Потоки, работа с файлами #7
Цитата Сообщение от sword7i Посмотреть сообщение
Нам в школе разрешают работать только в вижуал студио

Добавлено через 3 минуты


соответственно ему тоже, потому что он мой одноклассник!
Аккуратней на поворотах, товарищ. Вы случаем не перепили пивка за финалом ЛЧ?

Ах да, детям до 18 пиво же не продают!)
sword7i
3 / 3 / 0
Регистрация: 25.09.2012
Сообщений: 92
26.05.2013, 02:56     Потоки, работа с файлами #8
Цитата Сообщение от rus11 Посмотреть сообщение
Аккуратней на поворотах, товарищ. Вы случаем не перепили пивка за финалом ЛЧ?
Что такое ЛЧ?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
26.05.2013, 03:00     Потоки, работа с файлами #9
[

Не по теме:

b]sword7i[/b], watching you

sword7i
3 / 3 / 0
Регистрация: 25.09.2012
Сообщений: 92
26.05.2013, 03:01     Потоки, работа с файлами #10
Цитата Сообщение от gray_fox Посмотреть сообщение
[

Не по теме:

b]sword7i[/b], watching you

Может быть вы знаете что такое ЛЧ?
rus11
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 20
26.05.2013, 03:08  [ТС]     Потоки, работа с файлами #11
Цитата Сообщение от sword7i Посмотреть сообщение
Может быть вы знаете что такое ЛЧ?
Может у вас есть, что сказать по существу?)
sword7i
3 / 3 / 0
Регистрация: 25.09.2012
Сообщений: 92
26.05.2013, 03:14     Потоки, работа с файлами #12
Умные ребята, прагромисты, задроты памагите маему однокласснику rus11, чтоб этот линтяй наконец здал третью лабу и не вылетел со школу. умалаю вас!

Добавлено через 2 минуты
Цитата Сообщение от rus11 Посмотреть сообщение
Может у вас есть, что сказать по существу?)
Я сам не сдал третью лабу, как я тебе помогу?

Добавлено через 2 минуты
Цитата Сообщение от rus11 Посмотреть сообщение
Может у вас есть, что сказать по существу?)
в 18 строке паток пишется в файл, но его нелязя прачитать т.к. расширение не соответствует заданным тпараметрам!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 03:25     Потоки, работа с файлами
Еще ссылки по теме:

Потоки.Работа с файломи.Очередь.Стек. C++
Работа с файлами С++ C++
C++ Работа с файлами

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
26.05.2013, 03:25     Потоки, работа с файлами #13

Не по теме:

Цитата Сообщение от sword7i Посмотреть сообщение
Может быть вы знаете что такое ЛЧ?
Хз, я погромист



Добавлено через 2 минуты
Цитата Сообщение от rus11 Посмотреть сообщение
В txt файл заносит верную информацию, но в самой проге выдает ошибку чтения.
Ну значит в read "что то не так". В отладчике посмотрите, что там происходит.
Yandex
Объявления
26.05.2013, 03:25     Потоки, работа с файлами
Ответ Создать тему
Опции темы

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