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

список - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ зфдачка с файлом http://www.cyberforum.ru/cpp-beginners/thread133009.html
Сформировать файл из действительных чисел, найти произведение положительных компонентов файла. Заранее огромное спс сФОРМИРОВАТЬ ФАЙЛ ИЗ ДЕЙСТВИТЕЛЬНЫХ ЧИСЕЛ НАЙТИ ПРОИЗВЕДЕНИЕ ПОЛОЖИТЕЛЬНЫХ КОМПОНЕНТОВ ФАЙЛА. ЗАРАНЕЕ ОГРОМНОЕ СПС
C++ Последовательность из группы символов Пожалуйста, помогите с решением задачи: Даны натуральное число n, символы s,...,s. исключить из последовательности s,...,s группы символов, расположенные между скобками (,). Сами скобки тоже должны быть исключены. предполагается что внутри каждой пары скобок нет других скобок. Как решать, представление имею. Но просто работу с символами уже плохо помню и под конец дня голова вялая. Может... http://www.cyberforum.ru/cpp-beginners/thread133005.html
Перегрузка операций. Предок/наследник. C++
Доброго времени суток. Есть проблема в коде, в общем не запускается у меня программа, просьба посмотреть и по возможности исправить (код странный, потому что переделывала по примеру другого кода). Суть: требуется переключаться между классами предок(треугольник)/наследник(дом), увеличивать/уменьшать графич.фигуры, и двигать. #include <iostream.h> #include <graphics.h> #include <conio.h>...
опять строки C++
Здравствуйте!Помогите пожалуйсте))Никак не получаются задачи на строки.Задача:выяснить распределение слов по длине(сколько слов,состоящих из одной буквы,сколько из 2 и т.д.)
C++ Файлы на С\С++ http://www.cyberforum.ru/cpp-beginners/thread132985.html
Здравствуйте!Помогите пожалуйста с задачей про файлы на с\с++))Вот условие:Имеется текстовый файл.Удалить из него первую строку в конце которой находится вопросительный знак.результат записать в другой файл.
C++ Отличия C++ Builder от MS Visual Studio Очень нужен материал, в котором объясняются различия, так как мне пришлось резко с билдера переходить на студию! А так как я и в билдере особо не бачу, то такой материал очень нужен=) подробнее

Показать сообщение отдельно
mvji
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 17
20.06.2010, 12:43  [ТС]     список
Текст готовой программы, не знаю возможно кому-нибудь пригодится, до меня эта тема долга доходила( В программе ряд не доработок(не значительных типа проверки ввода, малость в оформление ну или не немного не рациональных реализаций некоторых функций, того же добавления записи), но в целом она рабочая, по крайней мере для зачета хватило)
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
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
//Запись содержит сведения о товарах в магазине:
//– код товара
//– наименование
//– цена
//– количество товара
//– стоимость товара (считается программой)
//Создать линейный односвязанный список, содержащий информацию о таких записях. Определить процедуры для поиска товара (по коду и наименованию), 
//для добавления, удаления и редактирования записей, очистки списка.
//при выходе записывать данные в какой-либо файл, а при запуске проверять наличие такового, если он есть то считывать данные из него
 
#include "stdafx.h"
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
const int l_name = 20;
const char fname[11] = "spisok.typ";
 
struct Tovar {
    char name[l_name];
    int id;
    int price;
    int amount;
    int cost;
    Tovar* next;
};
 
Tovar *beg;
//int countP=0;
size_t sz=sizeof(Tovar)-(sizeof beg);
 
// Меню
int menu(){
    char buf[10];
    int option;
    do{
        printf("Add - 1\nDelete - 2\nEdit - 3\nSearch - 4\nPrint - 5\nClean - 6\nExit - 7\n");
        scanf("%d", &option);
        system("cls");
    }
    while(!option);
    return option;
}
//Вспомогательная функция добавления элемента
Tovar *add_beg(char *n, int i, int pr, int a, int c){
    Tovar *p;
    p = new Tovar;
 
    p->next = NULL;
    strcpy(p->name,n);
    p->id = i;
    p->price = pr;
    p->amount = a;
    p->cost = c;
    return p;
}
//Добавление элемента(Получение входных данных и определенние позиции элемената)
void add() {
    char n[l_name];
    int i, pr, a,c;
    //Получение входных данных
    printf("Enter name\n"); scanf("%s", &n);
    printf("Enter id\n");       scanf("%d", &i);
    printf("Enter price\n");    scanf("%d", &pr);
    printf("Enter amount\n");   scanf("%d", &a);
    c = pr * a;
    //Добавление элемента списка
    Tovar *p = beg;
    if (beg){
        while (p->next) p = p->next;
        p->next = add_beg(n, i, pr, a, c);
    }
    else beg = add_beg(n, i, pr, a, c);
}
 
 
 
//Добавление элемента при чтении из файла
void add_f(char n[l_name], int i, int pr, int a, int c ){
    //Добавление элемента списка, передача входных данных и определение позиции
    Tovar *p = beg;
    if (beg){
        while (p->next) p = p->next;
        p->next = add_beg(n, i, pr, a, c);
    }
    else beg = add_beg(n, i, pr, a, c);
}
//Работа с файлом
int work_dbase(char *fmode){    
    Tovar *p;
    FILE* fp=fopen(fname, fmode);
    if(!fp) return 0;
    if (fmode[0]=='w') {
        p = beg;
        while(p) {
            fwrite(p,sz,1,fp);
            p = p->next;
        }
    }
    else if  (fmode[0] == 'r')
        {
               p=new Tovar;
               while ( fread(p,sz,1,fp) )
                   add_f(p->name, p->id, p->price, p->amount, p->cost);
               delete p;
   }
    fclose(fp);
    return 1;
}
 
// Вывод на экран
void print(){
    Tovar* p = beg;
    int n = 0;
    puts("number    name    id  price   amount  cost");
    while(p){
        n++;
        printf("%d  %s  %d  %d  %d  %d\n", n,  p->name, p->id, p->price, p->amount, p->cost);
        p = p->next;
    }
}
//Удаление
void del(){
    Tovar *p;
    int c;
 
    printf("Which element you want to delete (1...)?\n");
    scanf("%d",&c);
    if(c < 1) return;
    p = beg;
    for(int i = 1;i < c && p; i++) p = p->next;
    if(!p) return;
    
    Tovar *del_elem = p;
 
    if (del_elem != beg) {
    p = beg;
    while (p->next != del_elem) p = p->next;
    p->next = del_elem->next;
    } 
    else beg = beg->next;
 
    delete del_elem;
}
//Вспомогательная функция поиска (по имени)
void find_name(){
    Tovar *p;
    p = beg;
    char s[l_name];
    int n = 0, m = 1;
    
    printf("Enter name\n"); scanf("%s", &s);
    system("cls");
    do{
        n++;
        if(p){
            if(strcmp(s, p->name) == 0){
                printf("Number of tovar - %d", &n);
                m = 0;
            }
            else p = p->next;
        }
        else{
            puts("Search failed");
            m = 0;
        }
    }while(m);
}
//Вспомогательная функция поиска (по id)
void find_id(){
    Tovar *p;
    p = beg;
    int n = 0, m = 1, i;
 
    printf("Enter id\n"); scanf("%d", &i);
    system("cls");
    do{
        n++;
        if(p){
            if(p->id == i){
            printf("Number of tovar - %d\n", n);
            m = 0;
            }
            else p = p->next;
        }
        else{
            puts("Search failed");
            m = 0;
        }
    }while(m);
_getch();
}
 
//Поиск
void find(){
    int o;
 
    printf("Search name - 1\nSearch id - 2\n");scanf("%d", &o);
    switch(o){
        case 1: find_name(); break;
        case 2: find_id();   break;
        default: puts("number from 1 to 2");
    }
}
 
//Редактирование записи
void edit(){
    Tovar *p;
    p = beg;
    int n = 0,
        e = 0,
        i = 0,
        o = 0,
        m;
    
    puts("Which element you want ot edit? (Enter number)");
    scanf("%d", &e);
    
    if(e < 1) return;
    for(int i = 1;i < c && p; i++) p = p->next;
    if(!p) return;
 
    system("cls");
    printf("Enter new information - 1\nCancel - 0\n"); scanf("%d", &o);
    if(o){
        system("cls");
        do{
            printf("What you want to edit?\nid - 1\nprice - 2\namount - 3\ncancel - 4\n"); scanf("%d", &o); 
            switch(o){
                case 1:{
                        printf("Enter new id\n"); scanf("%d", &e);
                        p->id = e;
                }break;
                case 2:{
                        printf("Enter new price\n"); scanf("%d", &e);
                        p->price = e;
                        p->cost = e * p->amount;
                }break;
                case 3:{
                        printf("Enter new amount\n"); scanf("%d", &e);
                        p->amount = e;
                        p->cost = e * p->price;
                }break;
                case 4:{
                    o = 0;
                }break;
            }
        }while(o);
        system("cls");
    }
}
 
//Очистка списка
void clean(){
    Tovar *p;
    while(beg){
        p = beg;
        beg = beg->next;
        delete p;
     }
}
//Главная функция
int main(){
    work_dbase("rb");
    while(true){
        switch(menu()) {
            case 1: {system("cls");add();}              break;
            case 2: {system("cls");del();}              break;
            case 3: {system("cls");edit();}             break;
            case 4: {system("cls");find();}             break;
            case 5: {system("cls");print();}            break;
            case 6: {system("cls");clean();}            break;
            case 7: {system("cls");work_dbase("wb"); clean(); return 0;}
            default: puts("Number from 1 to 7");            break;
            }
        }
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru