Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 20

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

26.05.2013, 02:36. Показов 1334. Ответов 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();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2013, 02:36
Ответы с готовыми решениями:

Потоки.Работа с файломи.Очередь.Стек.
Полностью рабочий код с очередью.#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; #include...

Работа с структурами: выполните, используя файловые потоки для ввода/вывода
Используя тип данных запись с именем PRICE, содержащую следующие поля: • TOVAR – название товара; • KOL – количество товара; • TSENA...

Что такое потоки ввода, потоки вывода?
Здарова всем! Не так давно уже прогаю на С++ и все НИКАК не могу понять, что такое потоки ввода, потоки вывода..! вот допустим...

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

Не по теме:

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

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

Не по теме:


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

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

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

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


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

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

Не по теме:

b]sword7i[/b], :D watching you :popcorn:

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

Не по теме:

b]sword7i[/b], :D watching you :popcorn:

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

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

Добавлено через 2 минуты
Цитата Сообщение от rus11 Посмотреть сообщение
Может у вас есть, что сказать по существу?)
в 18 строке паток пишется в файл, но его нелязя прачитать т.к. расширение не соответствует заданным тпараметрам!
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
26.05.2013, 03:25

Не по теме:

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



Добавлено через 2 минуты
Цитата Сообщение от rus11 Посмотреть сообщение
В txt файл заносит верную информацию, но в самой проге выдает ошибку чтения.
Ну значит в read "что то не так". В отладчике посмотрите, что там происходит.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2013, 03:25
Помогаю со студенческими работами здесь

работа с файлами
Всем здрасьте.) Как реализовать работу с файлами?? (С++) В частности как брать числа из файла с расширением *.in А затем после...

Работа с файлами
помогите написать программу на си !Которая считывает текст из файла и выводит на экран предложения не содержащие запятых.

Работа с файлами.
Даны два файла f1 и f2. Файл f1 - это инвентарный файл, содержащий сведения о том, сколько изделий каких видов продукции хранится на складе...

Работа с файлами С++
Помогите пожалуйста с чтением/записью в файл есть код программы, где из файла нужно прочитать строки и после вывести результат программы...

Работа с файлами
На указатель ругается Possibly incorrect assignment Строки в файл записывает, но не выводит. Что не так? #include &lt;fstream.h&gt; ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru