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

Проверить на правильность лабу на тему структуры

05.09.2020, 20:08. Показов 410. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание надо реализовать структуру Кассовый чек


Файл chek.h
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
#ifndef chekH
#define chekH
struct chek
{
    char* info;  //название товара
    float a; //цена товара
    char* market; //название магaзина
    char* adr; //адрес магазина
    char* name; //имя продавца
    char* nom; //номер продавца
    char* date; //дата
    int k; //частота вхождения
    int* pos; //указатель на массив, содежащий позиции вхождения
};
chek* init(char* info, float a, char* market, char* adr, char* name, char* nom, char* date, int k);
#endif // !chekH
Файл chek.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
#include "chek.h"
#include "string.h"
void copy(char* a, char* b)
{
    int i;
    for (i = 0; b[i] != '\0'; i++)
        a[i] = b[i];
    a[i] = '\0';
}
chek* init(char* a, float b, char* c, char* d, char* e, char* f, char* g, int k)
{
    chek* tmp = new chek;
    tmp->info = new char[strlen(a) + 1];
    copy(tmp->info, a);
    tmp->a = b;
    tmp->market = new char[strlen(c) + 1];
    copy(tmp->market, c);
    tmp->adr = new char[strlen(d) + 1];
    copy(tmp->adr, d);
    tmp->name = new char[strlen(e) + 1];
    copy(tmp->name, e);
    tmp->nom = new char[strlen(f) + 1];
    copy(tmp->nom, f);
    tmp->date = new char[strlen(g) + 1];
    copy(tmp->date, g);
    tmp->k = 1;
    tmp->pos = new int[1];
    tmp->pos[0] = k;
    return tmp;
}
Файл tabl.h
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#ifndef TablH
#define TablH
#define MAX 50
#include "chek.h"
struct tabl
{
    chek* mas[MAX]; // Массив указателей
    int kol;
    void add(chek* A);
    int poisk(char* s);
    void newpos(int P, int p);
    void print();
    void sort();
    char* nword(int p);
    int counter();
    void del(int p);
};
#endif // !TablH
Файл tabl.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
#include "tabl.h"
#include "string.h"
#include "iostream"
#include "tabl.h"
using namespace std;
void tabl::add(chek* A)
{
    mas[kol++] = A;
}
int tabl::poisk(char* s)
{
    for (int i = 0; i < kol; i++)
        if (strcmp(mas[i]->info, s) == 0)
            return i;
    return -1;
}
void tabl::newpos(int P, int p)
{
    int* tmp = new int[(mas[P]->k) + 1];
    for (int i = 0; i < mas[P]->k; i++)
        tmp[i] = (mas[P]->pos)[i]; // Копирование старых вхождений
    tmp[(mas[P]->k)++] = p; // Добавление новой позиции вхождения
    delete[] mas[P]->pos; // Удаление прошлого массива позиций вхождения
    mas[P]->pos = tmp; // Переопределение массива позиций вхождения
}
void tabl::print()
{
    if (kol != 0)
    {
        cout << "Кассовый чек магазина\n";
        for (int i = 0, t = 1; i < kol; i++, t++)
        {
            cout << "Номер товара: " << t << "\nНазвание товара: " << mas[i]->info << "\nСтоимость товара: " << mas[i]->a;
            cout << "\nМагазин: " << mas[i]->market << '\t' << mas[i]->adr;
            cout << "\nИмя и телефон продавца: " << mas[i]->name << '\t' << mas[i]->nom;
            cout << "\nДата продажи: " << mas[i]->date << endl;
        }
    }
    else cout << "Товаров нет\n";
}
void tabl::sort()
{
    for (int i = 0; i < kol - 1; i++)
        for (int j = i + 1; j < kol; j++)
            if (strcmp(mas[i]->info, mas[j]->info) > 0)
            {
                chek* tmp = mas[i];
                mas[i] = mas[j];
                mas[j] = tmp;
            }
}
char* tabl::nword(int p)
{
    for (int i = 0; i < kol; i++)
        for (int j = 0; j < mas[i]->k; j++)
            if ((mas[i]->pos)[j] == p)
                return mas[i]->info;
}
int tabl::counter()
{
    int l = 0; // счетчик 
    for (int i = 0; i < kol; i++)
        l += mas[i]->k;
    return l;
}
void tabl::del(int p)
{
    for (int i = 0; i < mas[p]->k; i++)
    {
        for (int j = 0; j < kol; j++)
            for (int l = 0; l < mas[j]->k; l++)
                if ((mas[j]->pos)[l] > (mas[p]->pos)[i])
                    ((mas[j]->pos)[l])--;
    }
    delete[]mas[p]->pos;
    delete[]mas[p]->info;
    delete[]mas[p]->market;
    delete[]mas[p]->adr;
    delete[]mas[p]->name;
    delete[]mas[p]->date;
    delete mas[p];
    for (int i = p + 1; i < kol; i++)
        mas[i - 1] = mas[i];
    kol--;
}
Файл mainChek.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
#include "tabl.h"
#include <cstdlib>
#include <locale>
#include "iostream"
#include <limits>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    tabl T;
    T.kol = 0;
    int i, flag;
    float b;
    char a[100], c[100], d[100], e[20], f[20], g[100];
    do
    {
        cout << "Выберите пункт:" << endl;
        cout << "0. Завершение работы" << endl;
        cout << "1. Распечатка чека" << endl;
        cout << "2. Сортировка по названию товаров" << endl;
        cout << "3. Определение товара в заданной позиции" << endl;
        cout << "4. Удаление товара с заданным номером в таблице" << endl;
        cout << "5. Добавление товара в список" << endl;
        cin >> flag;
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //Без этого cin.getline не работает.
        switch (flag)
        {
        case 0: break;
        case 1: T.print(); break;
        case 2: T.sort(); break;
        case 3: cout << "Введите позицию: ";
            cin >> i; cout << T.nword(i) << endl; break;
        case 4: cout << "Введите номер товара" << endl; cin >> i;
            T.del(--i); break;
        case 5:cout << "ВВОДИТЬ ДАННЫЕ ТОЛЬКО НА АНГЛИЙСКОЙ РАСКЛАДКЕ\nВведите название товара: ";
            cin.getline(a, 100);
            cout << "Введите название магазина: ";
            cin.getline(c, 100);
            cout << "Введите адрес магазина: ";
            cin.getline(d, 100);
            cout << "Введите дату продажи: ";
            cin.getline(g, 100);
            cout << "Введите имя продавца: ";
            cin.getline(e, 20);
            cout << "Введите номер телефона продавца: ";
            cin.getline(f, 20);
            cout << "Введите цену товара: ";
            cin >> b;
            if (T.poisk(a) >= 0) // Если уже был
                T.newpos(T.poisk(a), T.counter() + 1);
            else // Если новый
                T.add(init(a, b, c, d, e, f, g, T.counter() + 1));
            break;
        default: cout << "Неверный номер\n";
        }
    } while (flag);
    while (T.kol)
        T.del(0);
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.09.2020, 20:08
Ответы с готовыми решениями:

Проверить правильность «структуры файла»
Исходные данные находятся в текстовом файле(-ах). Результаты обработки записать в другой(-ие) текстовый(-ые) файл(-ы). Имена файлов задает...

Проверить правильность скобочной структуры, составленной из нескольких типов скобок
Я пока в процессе изучение Си и поэтому уделяю большое время на задачи что бы во много разобратся тут попалась вот такая задача: ...

Помогите сделать лабу на тему простые разветвления
z=1)sqrt(b^2+c^2),если 3≤x≤4 2)min{a,max{x^2,y,c}, если x&lt;3 3)max{ax+c,y^3}, в противном случае

2
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.09.2020, 20:20 2
Цитата Сообщение от DarkenKnight Посмотреть сообщение
Задание надо реализовать структуру Кассовый чек
C++ Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct cheque_pos
{
    char name[256];  //название товара
    float a; //цена товара
    int num; //Кол-во
};
 
struct chek
{
    char market[256]; //название магaзина
    char adr[256]; //адрес магазина
    char name[256]; //имя продавца
    char nom[256]; //номер продавца
    char date[256]; //дата
    int k; //частота вхождения
 
    size_t pos_size;
    cheque_pos* pos; //указатель на массив, содежащий позиции вхождения
};
1
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 47
05.09.2020, 20:26  [ТС] 3
Спасибо, об этом я и не подумал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.09.2020, 20:26
Помогаю со студенческими работами здесь

Правильность структуры БД
Всем привет. Народ, посмотрите пожалуйста, я правильно составил структуру БД ? Задача: Есть несколько таблиц: 1. Таблица...

Проверить правильность хода
Дано поле шахматной доски, на котором стояла ладья до хода, и поле доски, на котором она оказалась после сделанного хода. Проверить...

ER диаграмма. Проверить на правильность
я сделал диаграмму er по примеру. но не знаю правильно ли((( можете подсказать???? пример: МоЯ: Подскажите...

Проверить правильность диаграммы
Делаю дизайн базы данных. В (забугорном) университете есть департаменты (например математики, естественных наук и т.п.); один...

Проверить правильность решения
Привет всем,проверьте пожалуйста правильность решения,если не сложно.Заранее благодарю. Задача1:Сколькими способами можно выбрать две...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Простая нейросеть на КуМир: Создание и обучение
EggHead 16.03.2025
Искусственные нейронные сети — удивительная технология, позволяющая компьютерам имитировать работу человеческого мозга. Если вы хотя бы немного интересуетесь современными технологиями, то наверняка. . .
Исполнитель Кузнечик в КуМир: Решение задач
EggHead 16.03.2025
Среди множества исполнителей в системе КуМир особое место занимает Кузнечик — простой, но невероятно полезный виртуальный персонаж, который перемещается по числовой прямой, выполняя ваши команды. На. . .
Исполнитель Водолей в КуМир: Решение задач
EggHead 16.03.2025
Разработка алгоритмического мышления — одна из ключевых задач для начинающих программистов, и система КуМир предлагает отличный способ погрузиться в этот процесс. Среди множества исполнителей в этой. . .
Исполнитель Чертежник в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы можете рисовать на бесконечной координатной плоскости, перемещая точку, которая оставляет след. По вашей команде она может поднять перо и двигаться, не оставляя следа, или. . .
Исполнитель Робот в КуМир: Решение задач
EggHead 16.03.2025
КуМир (Комплект Учебных МИРов) — это учебная среда программирования, разработанная специально для обучения базовым концепциям алгоритмизации. Её главная фишка — использование русскоязычного. . .
Исполнитель Черепаха в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы впервые учитесь программировать, а перед вами стоит задача заставить маленькую виртуальную черепашку рисовать на экране. Звучит забавно? Эта идея зародилась ещё в 1967 году, когда. . .
Конвейеры данных с Apache Kafka
Javaican 16.03.2025
В мире, где данные стали новой нефтью, Apache Kafka зарекомендовал себя как мощный инструмент для построения надежных и масштабируемых конвейеров данных. Созданный изначально командой LinkedIn в 2011. . .
Deno против Node.js: Будущее JavaScript рантайма
run.dev 16.03.2025
За последнее десятилетие Node. js стал абсолютным лидером среди JavaScript-рантаймов и фактическим стандартом для серверной разработки на JavaScript. Но в 2018 году тот же разработчик, который создал. . .
SwiftUI или UIKit - что выбрать для нового приложения iOS?
mobDevWorks 16.03.2025
Когда Apple представила SwiftUI на WWDC 2019, многим показалось, что дни UIKit сочтены. Новый декларативный фреймворк предлагал радикально иной подход к разработке интерфейсов. Вместо кропотливого. . .
Docker: Руководство для начинающих по созданию первого приложения
Mr. Docker 16.03.2025
Docker — это платформа, которая упаковывает ваше приложение и все его зависимости в стандартизированные блоки, называемые контейнерами. Эти контейнеры изолированы друг от друга и от основной системы,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер