Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Dgaizer
41 / 41 / 5
Регистрация: 25.03.2014
Сообщений: 361
#1

Стуктура ШТРАФ плохо с выводом и записью в файл - C++

12.01.2015, 16:47. Просмотров 209. Ответов 1
Метки нет (Все метки)

На рисунке все написано не работает функция poisk()
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
//---------------------------------------------------------------------------
 
#include <clx.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include<iostream.h>
//#include <string.h>
struct shtraf {char fam[10]; char nomer[15]; float data;int cymma;} s1;
void input(); // создание нового файла
void print(); // просмотр
void app(); // добавление
void poisk();//поиск и запись
int main()
{
    char c;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    while (true)
    {   cout<<endl;
        cout<<"\nЛабораторная работа №5\n"
        "  1 - Создать новый файл\n"
        "  2 - Просмотр файла\n"
        "  3 - Добавление в файл\n"
        "  4 - Поиск и запись в файл\n"
        "  0 - Выход";
    c=getch();
    switch(c)
    { 
    case '1':input();break;
    case '2':print();break;
    case '3':app();break;
    case '4':poisk();break;
    case '0':return 0;
    default : cout<<" Нет такого режима!";
    }
    }
}
void input()
{
    FILE *tf;
    char ch;
    tf=fopen("car.dat","wb"); // бинарно для записи
    //clrscr();
    cout<<"\n Ввод штрафов\n";
    do
    { 
        printf("\n Фамилия: "); scanf("%s",&s1.fam);
        printf(" Номер авто: "); scanf("%s",&s1.nomer);
        printf(" Дата: "); scanf("%f",&s1.data);
        printf("Размер штрафа:"); scanf("%d",&s1.cymma);
        fwrite(&s1,sizeof(s1),1,tf); // запись в файл одной структуры s1
        printf("\n Закончить  [д/н]  ");
        ch=getch();
    }
    while (ch != 'д');
    cout<<endl;
    fclose(tf);
}
void print()
{ 
    FILE *tf;
    int i;
    tf=fopen("car.dat","rb");
    i=1;
    fread(&s1,sizeof(s1),1,tf);
    printf("\n|-------------------------------------------------------------------------------------|");
    printf("\n|                             Содержание файла                                        |");
    while (!feof(tf))
    {
        printf("\n|Фамилия:%10s| Номер авто:%10s| Дата:%6.2f |Размер штрафа:%4d      |", s1.fam,s1.nomer,s1.data,s1.cymma);
        printf("\n|_____________________________________________________________________________________|");
        fread(&s1,sizeof(s1),1,tf);
        i++;
    }
    getch();
    cout<<endl;
}
void app()
{
    FILE *tf;
    char ch;
    tf=fopen("car.dat","ab");
    printf("\n  Ввод штрафов \n");
    do
    {
        printf("\n Фамилия: "); scanf("%s",&s1.fam);
        printf(" Номер авто: "); scanf("%s",&s1.nomer);
        printf(" Дата: "); scanf("%f",&s1.data);
        printf(" Размер штрафа: "); scanf("%d",&s1.cymma);
        fwrite(&s1,sizeof(s1),1,tf);
        printf(" Закончить?  [д/н] ");
        ch=getch();
    }
    while (ch != '?');
    fclose(tf);
    cout<<endl;
}
void poisk()
{
    FILE *tf;
    float data2;
    int cymma2;
    int i;
    tf=fopen("car.dat","rb");
    FILE *tf_new;
    tf_new=fopen("new.dat","wb");
    puts("\nВведите дату: "); scanf("%f",&data2);
    puts("Введите сумму: "); scanf("%d", &cymma2);
    printf("\n|-------------------------------------------------------------------------------------|");
    printf("\n|                             Содержание файла CAR.DAT                                |");
    while (!feof(tf))
  {
    printf("\n|Фамилия:%10s| Номер авто:%10s| Дата:%6.2f |Размер штрафа:%4d      |", s1.fam,s1.nomer,s1.data,s1.cymma);
    printf("\n|_____________________________________________________________________________________|");
    fread(&s1,sizeof(s1),1,tf);
    if(feof(tf))
         break;
    i++;
 
        if ((s1.data==data2) && (s1.cymma==cymma2))
        {
            fwrite(&s1,sizeof(s1),1,tf_new);
        }
    }
    fclose(tf_new);
    getch();
    fclose(tf);
    tf_new=fopen("new.dat","rb+");
    printf("\n|-------------------------------------------------------------------------------------|");
    printf("\n|                             Содержание файла NEW.DAT                                |");
    while (!feof(tf_new))
    {
        printf("\n| Фамилия:%s| Номер авто:%s| Дата:%6.2f |Размер штрафа:%d                             |", s1.fam,s1.nomer,s1.data,s1.cymma);
        printf("\n|_____________________________________________________________________________________|");
        fread(&s1,sizeof(s1),1,tf_new);
    if(feof(tf_new))
         break;
    i++;
    }
    getch();
    cout<<endl;
    fclose(tf_new);
}
//---------------------------------------------------------------------------

http://www.cyberforum.ru/cpp-beginners/thread554472.html
0
Миниатюры
Стуктура ШТРАФ плохо с выводом и записью в файл  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2015, 16:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Стуктура ШТРАФ плохо с выводом и записью в файл (C++):

Перевод в двоичную систему с выводом и записью в массив
Вот собственно и задание: Напишите функцию, которая принимает число типа int и...

Ошибка с записью в файл
Итак, мне в данной части кода не работает запись, т.е. когда я выбираю запись,...

Матрица с записью в файл С++
Написать программу на С++, работа с матрицей, по этой матрице создать цикл:...

Программа с записью массива в файл
Здравствуйте, помогите, пожалуйста. Разработать программу, которая формирует...

Алгоритм Хаффмана с записью в файл
Коды Хаффмана (сжатие информации). Реализовать процедуры кодирования и...

1
Людвиг Бодмер
356 / 355 / 211
Регистрация: 29.03.2013
Сообщений: 866
Завершенные тесты: 4
13.01.2015, 09:51 #2
Dgaizer, так у вас в функции poisk сначала выводится структура с фамилией, а потом только считывается в нее данные из файла:
C++
1
2
3
printf("\n|Фамилия:%10s| Номер авто:%10s| Дата:%6.2f |Размер штрафа:%4d      |", s1.fam,s1.nomer,s1.data,s1.cymma);
printf("\n|_____________________________________________________________________________________|");
fread(&s1,sizeof(s1),1,tf);
А должно быть наоборот:
C++
1
2
3
fread(&s1,sizeof(s1),1,tf);
printf("\n|Фамилия:%10s| Номер авто:%10s| Дата:%6.2f |Размер штрафа:%4d      |", s1.fam,s1.nomer,s1.data,s1.cymma);
printf("\n|_____________________________________________________________________________________|");
и дальше то же самое при выводе содержимого файла New.DAT
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2015, 09:51
Привет! Вот еще темы с решениями:

на С++ написать программу со структурой и записью в файл
дан файл с внешним именем &quot;A:\Student\INT.DAT. Струкрута записи файла : int...

Поиск вершин квадрата с записью в файл
Даны координаты двух вершин (x1,y1) и (x2,y2) некоторого квадрата. Необходимо...

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

Журнал событий с записью в файл с перегуженными операциями
Доброго времени суток! Кто может помочь с написанием программы? Нужно или...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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