Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vitaliypro
1 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 125
#1

у меня есть прога. но минус в том, что она не сохраняет файл( - C++

15.09.2013, 16:56. Просмотров 492. Ответов 2
Метки нет (Все метки)

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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include <stdio.h> // Подключение головного файла для работы с вводом/выводом
#include <windows.h> // Подключение головного файла для работы с WinAPI
 
typedef struct magi ne;
 
struct magi { // Структура с именем magi
 
    int day; short month; int year;  // дата
    int nom_mag; int nom_sect; int nom_chek; // информация о магазине и чеке
    char name_tov[20]; char art_tov[10]; float price_tov; float kol_tov; // информация о товаре
 
    ne *next; // Указатель
};
 
ne* readfile(FILE *f)
{
    ne *tmp = (ne*) malloc(sizeof(ne));
    ne *stmp, *start;
    if (!fread(tmp, sizeof(ne), 1, f)) return 0;
    stmp = start = tmp;
    while (1)
    {
        tmp = (ne*) malloc(sizeof(ne));
        if (!fread(tmp, sizeof(ne), 1, f)) break;
        stmp -> next = tmp; // Указатель предыдущего элемента указывает на считанную запись
        stmp = tmp; // "Временная" переменная теперь хранит адрес считанного элемента
 
    }
    stmp->next = 0;
    return start;
}
 
ne* addel(ne *start)
{
    int num;
    if (start) {printf(" После какого элемента следует добавить (0 - начало списка): ");
    scanf("%d", &num);} // запрос номера, если есть элементы
    system("cls");
    fflush (stdin);
    ne *temp = (ne*) malloc(sizeof(ne));
 
    printf(" Введите название товара: ");
    gets ( temp->name_tov);
 
    printf(" Введите артикуль товара: ");
    gets ( temp->art_tov);
 
    printf(" Введите номер магазина: ");
    scanf ("%d", &temp->nom_mag);                       // ввод данных
 
    printf(" Введите номер секции: ");
    scanf("%d", &temp->nom_sect);
 
    printf(" Введите номер чека: ");
    scanf("%d", &temp->nom_chek);
 
    printf(" Введите цену товара: ");
    scanf("%f", &temp->price_tov);
 
    printf(" Введите количество товара: ");
    scanf("%f", &temp->kol_tov);
 
    printf (" Введите день: ");
    scanf ("%d", &temp->day);
 
    printf (" Введите месяц: ");
    scanf ("%d", &temp->month);
 
    printf (" Введите год: ");
    scanf ("%d", &temp->year);
 
 
    if (!start) {start = temp;
        start->next = 0; return start;}         // если первый элемент
    ne *tmp = start;
    if (!num) {temp->next = start; start=temp; return start;}       // вставляем в начало
    if (tmp->next == 0) {tmp->next = temp; tmp->next->next = 0; return start;}  // если вставляем в конец
    else {
    int i = 1;
    while (i != num) {tmp = tmp->next; i++;}
        ne *kj = tmp->next;
        tmp->next=temp;
        tmp -> next -> next = kj;                           // вставляем в середину
 
        delete(kj);
    }
    return start;
 
}
 
ne* delel(ne *start)
{
    int num;
    fflush (stdin);
    if (!start) return 0;
    printf("Введите номер магазина, данные о котором требуется удалить: ");
    scanf("%d", &num);
    if (num == 1) start = start -> next;
    else
        {
            ne *temp = start;
            int i=1;
            while (i != --num) {temp = temp -> next; i++;};
            if (temp -> next -> next == 0 ) temp -> next = 0;
            else temp -> next = temp -> next -> next;
        }
        return start;
}
 
ne* onscreen(ne *start)
{
  while(1)
  {
    system("cls");
    if (!start) printf(" Список пуст !!!   "); else
    {
 
        printf(" \n");
        int n=1;
        for (int i=0; i < 63; i++) printf ("\xC4");
        printf ("\n");
        ne *temp = start;
        while (temp)
        {
             printf ("номер - %d \n", n++);
 
             printf ("имя товара - %s \n", temp->name_tov);
             printf ("артикуль товра - %s \n", temp->art_tov);
 
             printf ("номер магазина - %d \n", temp->nom_mag); // ввод данных
             printf ("номер секции - %d \n", temp->nom_sect);
             printf ("номер чека - %d \n", temp->nom_chek);
 
             printf ("цена товара - %f \n", temp->price_tov);
             printf ("количество товара %f \n", temp->kol_tov);
 
             printf ("день - %d \n", temp->day);
             printf ("месяц - %d \n", temp->month);
             printf ("год - %d \n", temp->year);
 
             temp = temp -> next;
        }
        for (int i=0; i < 63; i++)
            printf ("\xC4");
        printf ("\n");
    }
    fflush (stdin);
    printf ("\n 1 - Добавить элемент");
    printf ("\n 2 - Удалить элемент");
    printf ("\n 3 - Выход в меню");
    printf ("\n Ваш выбор: ");
    char q = getchar ();
    switch (q)
    {   case '1': {start = addel(start); break;}
        case '2': {start = delel(start); break;}
        case '3': {return start;}
    }
  }
}
 
void writefile(ne *beg, FILE *f)
{
    rewind(f);
    ne *temp = beg;
    while (temp)
    {
        fwrite(temp, sizeof(ne), 1, f);
        temp = temp -> next;
    }
}
 
 
int main () {
   FILE *f = fopen ("base.bin", "r+w"); // Переменная-указатель, открывает файл с записями в режиме чтения и записи
    if (!f) { // Если не удалось открыть файл
        f = fopen ("base.bin", "w+b"); // Создаем файл
        if (!f) { // Если файл не удалось создать
            puts ("Ошибка! "); // Выводим соответствующее сообщение
            return 1; // Досрочно завершаем выполнение программы
        }
    }
    ne *beg=readfile (f);
    while (1) { // Вечный цикл, необходим для вывода меню на дисплей
        system ("cls"); // Очищаем консоль
        puts (" Выберите пункт меню:");
        puts (" 1. Просмотреть таблицу, удалить, добавить элемент");
        puts (" 2. Выход и сохранение изменений в файл");
        printf ("\nВаш выбор: ");
        char c = getchar (); // Считываем символ
        switch (c) { // Исходя из значения считанного символа, выбираем
 
            case '1': beg = onscreen (beg); break; // Вывод данных на дисплей
            case '2': {f = fopen ("base.bin", "w+b"); writefile(beg, f); return 0; break;} // Выход и сохранение изменений
        }
    }
}



//вот короче она. не могу найти ошибку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 16:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос у меня есть прога. но минус в том, что она не сохраняет файл( (C++):

Вот часть кода, в нем я должен сделать если я ничего не ввожу то чтоб вывело сообщение о том что пользователь не ввел данных, но у меня не выходит - C++
void Magazine::Input() { system(&quot;cls&quot;); //locale::global(locale(&quot;&quot;)); gotoxy(25,1); const int...

Программа создает бинарный файл, но не сохраняет его в формате .bin, что делать?! - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt; #include &lt;locale.h&gt; #include &lt;string&gt; #include &lt;set&gt; void...

Функция сохраняет кое что в бинарник, но проблема в том что указатель на файл все время оказывается пустой - C (СИ)
у меня функция сохраняет кое что в бинарник, но проблема в том что указатель на файл все время оказывается пустой о_О я пишу что то...

помогите пожалуйста.прога на java)ну никак у меня не получается!все что есть принимается - Java SE
Разработать калькулятор, вычисляющий выражения типа: 3+2-1*7=?

Есть три компа 2 с win7 и 1 c winXP. Лично у меня стоит win7. Проблема в том что пропал общий доступ , не могу подключиться на другие компьютеры - Сети
Чтобы не мусорить , задам вопрос здесь. Есть три компа 2 с win7 и 1 c winXP. Лично у меня стоит win7. Проблема в том что пропал общий...

Хотелось бы узнать что это за программа LabView. Где и для чего она используется. И перспективна ли она то есть стоит ли ее изучать? - LabVIEW
Не ругайте если не в том разделе создал тему. Вообщем вопрос такой. Хотелось бы узнать что это за программа LabView. Где и для чего она...

2
Croessmah
Пришел
Эксперт CЭксперт С++
13762 / 7843 / 893
Регистрация: 27.09.2012
Сообщений: 19,254
Записей в блоге: 3
Завершенные тесты: 1
15.09.2013, 16:59 #2
Выделяйте код тегами, иначе не читабельно
1
vitaliypro
1 / 0 / 0
Регистрация: 09.09.2013
Сообщений: 125
15.09.2013, 17:16  [ТС] #3
чуть чуть не понял Вас(((( о чем вы?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2013, 17:16
Привет! Вот еще темы с ответами:

проблема с мамкой P5B в том что она не видит жесткий диск - BIOS
Добрый день, у меня проблема с мамкой P5B в том что она не видит жесткий диск, произошло это после того как я перезагрузил комп с диском...

Отказали в гарантийном ремонте на том основании, что у меня не установлен Windows 8, попросили заплатить 2 500 - Ремонт ноутбуков
15.01.2015 я купил бракованный ноутбук ASUS X553MA в ООО РЕГАРД.РУ (ИНН 007730702809) У ноутбука барахлила клавиатура, барахлит...

масив. я сделал прогу но она не работает.у меня подозрение что я не правильно собрал процедуры - Pascal
программа должна сумировать все отрицательные числа и находить среднее арифметическое, компилятор ошибок не выдает, но прога работать не...

Есть ли данные в том что вернуло? - PHP БД
вот допустим у меня запрос к бд: $result = mysql_query(&quot;SELECT * FROM user_item WHERE item_id='$item' AND status_u_i=1&quot;); $array...


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

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

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