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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно написать код программы по алгоритму http://www.cyberforum.ru/cpp-beginners/thread878758.html
Есть алгоритм нужно по нему написать программу. И если можно с комментариями. Большое спасибо заранее!
C++ Представить определение функции, позволяющей переставить местами элементы указанной строки и побочной диагонали квадратной матрицы Представить определение функции, позволяющей переставить местами элементы указанной строки и побочной диагонали квадратной матрицы. Аргумент вызываемой функции передается как указатель на одномерный массив. http://www.cyberforum.ru/cpp-beginners/thread878704.html
C++ Генерация случайных чисел
Здравствуйте! Мне нужно сгенерировать случайные числа, много и за секунду или быстрей. Можно ли использовать время компьютера с милисекундами? Хочу пользоваться srand... Просто у меня за секунду получается только одно значение, а вот надо около 1000 или около того.
C++ Проверить, является ли заданная последовательность чисел линейкой Голомба
Помогите пожалуйста написать программу на с++ Линейкой Голомба порядка N называют набор из N целых неотрицательных чисел, нанесенных в виде штрихов числовую прямую так, чтобы расстояния между любой парой штрихов было уникальным. Проверить, является ли заданная последовательность чисел линейкой Голомба.
C++ Преобразовать период времени p, заданный в секундах (p<=86400) в часы, минуты и секунды, результат вывести в виде чч:мм:сс . http://www.cyberforum.ru/cpp-beginners/thread878654.html
Преобразовать период времени p, заданный в секундах (p<=86400) в часы, минуты и секунды, результат вывести в виде чч:мм:сс . Для вычислений воспользоваться операциями / и % .
C++ Поле шахматной доски определяется парой натуральных чисел Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе — номер горизонтали. Даны натуральные числа k, I, т, n. Требуется выяснить, угрожает ли ферзь, стоящий на поле .(k, l), полю (т, n). подробнее

Показать сообщение отдельно
rus11
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 20

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

26.05.2013, 02:36. Просмотров 638. Ответов 12
Метки (Все метки)

Задача: Структура записи: Шифр изделия, наименование, остаток на складе, количество заказанных изделий, срок поступления на склад.
Выдать на экран информацию об изделиях, запас которых меньше количества, указанного с клавиатуры и на которые не сделан дополнительный заказ.
Пометить на удаление все изделия, запас которых на складе равен нулю и на которые не сделан дополнительный заказ.

Не работает то, что выделено жирным (пункт 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();
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru