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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Ребят я правильно написал код:)? http://www.cyberforum.ru/cpp-beginners/thread955003.html
#include "stdafx.h" #include <math.h> #include <clocale> #include <iostream> using namespace std; int main () { setlocale(LC_ALL, "Russian"); double x=0,y=0; cout << "Введите значение переменной х \n";
C++ abcd=ab*cd Найти двузначные числа ab и cd такие, что abcd=ab*cd написал так не работает #include <iostream> using namespace std; int main() { for(int a=1;a<10;a++) http://www.cyberforum.ru/cpp-beginners/thread954994.html
Создать символьную анимацию загрузки с++(просто) C++
Подскажите пожалуйста, как сделать в С++ индикатор загрузки? например, у нас 10 положений звездочки и мне надо сделать анимацию, как звездочка оказывается во всех 10 положениях.. Но еще необходимо чтобы на 1-ой позиции яркость символа была 10%, на 2-ой - 20% и т.д. Заранее Спасибо:)
C++ задачка. последовательность,состоящая из нулей и единиц
Последовательность 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, …, состоящая из нулей и единиц строится так: первый ее элемент равен 1, а остальные получаются из предшествующих с помощью логической операции отрицания: not(1) = 0, not (0) = 1. Второй элемент равен отрицанию первого, третий и четвертый – отрицанию первого и второго соответственно и т.д. По заданному n вычислить n-ый член указанной...
C++ Правильное удаление динамического двумерного массива http://www.cyberforum.ru/cpp-beginners/thread954975.html
Доброго времени суток форумчани. Ну в общем перейду сразу к делу. О себе: сам пишу на JAVA (android),решил взяться за С++,разбираюсь с указателями. О IDE: Visual Studio 2012; Проблема вот в чем, написал код,который заполняет двумерный массив по спирали. Вроде бы все работает,но при освобождении памяти вылетает. Что я не так сделал. Просьба, сильно не пинайте,я только начал осваивать...
C++ Модель солнечной системы.Выдает ошибку-не могу найти.Ошибка внизу #include <iostream> #include <stdio.h> #include <math.h> #include <string.h> #include <GL/glut.h> #include <Gl/GL.h> #include <time.h> using namespace std; подробнее

Показать сообщение отдельно
vitaliypro
1 / 1 / 0
Регистрация: 09.09.2013
Сообщений: 125
15.09.2013, 16:56     у меня есть прога. но минус в том, что она не сохраняет файл(
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;} // Выход и сохранение изменений
        }
    }
}



//вот короче она. не могу найти ошибку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru