1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Структура, C++

Тема в разделе "Вопросы новичков и не только", создана пользователем nreginka832, 2 дек 2014.

Статус темы:
Закрыта.
  1. nreginka832

    nreginka832 New Member

    Репутация:
    0
    Регистрация:
    17 ноя 2014
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте. Мне нужно создать структура dvd дисков
    Структура "DVD- диск":
    - название;
    - режиссер;
    - продолжительность;
    - цена.
    Удалить первый элемент с заданной продолжительностью.
    Добавить N элементов после элемента с номером К
    и создать меню это структуры.
    Код:
    int main(){
    int k;
    char *filename = "dt.txt";
    setlocale(LC_ALL, "Russian");
    do{
    cout << "1. Ввести данные\n";
    cout << "2. Вывести данные\n";
    cout << "3. Удалить с ценой выше чем...\n";
    cout << "4. Добавить\n";
    cout << "5. Выход\n";
    cin >> k;
    switch (k){
    case 1: write_file(); break;
    case 2: show_file(); break;
    case 3: del_el(); break;
    case 4: add_el(); break;
    }
    } while (k != 5);
    только не понимаю, что и как указать case 1: write_file(ВОТ ЗДЕСЬ); break;
    Подскажите пожалуйста.

    Код:
    #define _CRT_SECURE_NO_WARNINGS
    #define _CRT_SECURE_NO_DEPRECATE
    
    #include "stdafx.h";
    #include <iostream>
    #include <iostream>
    #include <string>
    #include <stdio.h> 
    #include <ctime>
    #include <string>
    //#include <ifstream>
    //#include <ofstream>
    #include <fstream>
    
    
    
    
    struct dvd{
    char namefilm[20];			//название фильма
    char namereg[20];			// имя режисера
    int prodol;						// продолжительность в минутах
    int cena;						 // цена
    };
    
    using namespace std;
    
    
    
    dvd* create_mas(int n){
    dvd *p = new dvd[n];
    return p;
    }
    
    dvd* input_mas(dvd *a, int n){
    
    char namefilm[20];
    char namereg[20];
    int prodol, cena, system;
    
    for (int i = 0; i < n; i++){
    cout << "Namefilm?";
    cin >> namefilm;
    cout << "Namereg?";
    cin >> namereg;
    cout << "Prodol?";
    cin >> prodol;
    cout << "Cena?";
    cin >> cena;
    system = strlen(namefilm) + 1;
    //a[i].fio = new char[system];
    strcpy(a[i].namefilm, namefilm);
    strcpy(a[i].namereg, namereg);
    a[i].prodol = prodol;
    a[i].cena = cena;
    }
    return a;
    
    }
    
    void write_file(char *filename, int n, dvd *a){
    
    fstream f(filename, ios::out);
    
    for (int i = 0; i<n; i++){
    f << a[i].namefilm; f << "\n";
    f << a[i].namereg; f << "\n";
    f << a[i].prodol; f << "\n";
    f << a[i].cena; f << "\n";
    }
    
    f.close();
    
    }
    
    void show_file(char *filename, int n){
    
    dvd* a2 = create_mas(1);//new chelovek[n];
    
    fstream f;//(filename, ios::in);
    
    
    
    f.open(filename, ios::in);
    do{
    f >> a2[0].namefilm;
    f >> a2[0].namereg;
    f >> a2[0].prodol;
    f >> a2[0].cena;
    
    if (f.eof())break;
    
    cout << "\n" << a2[0].namefilm << " " << a2[0].namereg << " " << a2[0].prodol << " " << a2[0].cena << "\n";
    
    } while (!f.eof());
    f.close();
    
    
    }
    
    void del_el(char *filename, int &n){
    fstream f;
    float fd_prodol;
    dvd *c = create_mas(1);
    dvd *a = create_mas(n);
    int j = 0;
    cout << "\nProdol dlya udaleniya?";
    cin >> fd_prodol;
    
    f.open(filename, ios::in);
    do{
    
    f >> c[0].namefilm;
    f >> c[0].namereg;
    f >> c[0].prodol;
    f >> c[0].cena;
    
    if (f.eof())break;
    
    if (c[0].prodol == fd_prodol){
    cout << c[0].namefilm << " - is deleting...";
    n--;
    }
    else{
    a[j] = c[0];
    j++;
    }
    
    } while (!f.eof());
    f.close();
    
    n = j;
    write_file(filename, n, a);
    
    }
    
    void add_el(char *filename, int &n){
    int k, i;
    cout << "\nK?";
    cin >> k;
    n += k;
    
    fstream f;
    dvd *a = create_mas(n);
    
    
    i = 0;
    f.open(filename, ios::in);
    do{
    
    f >> a[k + i].namefilm;
    f >> a[k + i].namereg;
    f >> a[k + i].prodol;
    f >> a[k + i].cena;
    
    if (f.eof())break;
    
    i + k;
    } while (!f.eof());
    f.close();
    
    a = input_mas(a, k);
    write_file(filename, n, a);
    }
    
    
    int main(){
    int k;
    char *filename = "dt.txt";
    setlocale(LC_ALL, "Russian");
    do{
    cout << "1. Ввести данные\n";
    cout << "2. Вывести данные\n";
    cout << "3. Удалить с ценой выше чем...\n";
    cout << "4. Добавить\n";
    cout << "5. Выход\n";
    cin >> k;
    switch (k){
    case 1: write_file(); break;
    case 2: show_file(); break;
    case 3: del_el(); break;
    case 4: add_el(); break;
    }
    } while (k != 5);
    
    
    int n;
    char *filename = "dt.txt";
    cout << "N?";
    cin >> n;
    
    dvd *a = create_mas(n);
    a = input_mas(a, n);
    
    
    write_file(filename, n, a);
    show_file(filename, n);
    del_el(filename, n);
    add_el(filename, n);
    
    
    cin.ignore();
    cin.get();
    
    return 0;
    }
     
  2. Whatka

    Whatka Well-Known Member

    Репутация:
    0
    Регистрация:
    9 окт 2011
    Сообщения:
    428
    Симпатии:
    4
    Я бы вам посоветовал использовать класс для этой программы.

    Можете уточнить вопрос?что не понятно?
    у вас же под оператором switch есть все эти функции,
    просто вызывать нужно их не последовательно,а при выборе определённого пункта меню.
     
  3. nreginka832

    nreginka832 New Member

    Репутация:
    0
    Регистрация:
    17 ноя 2014
    Сообщения:
    4
    Симпатии:
    0
    Да , Они у меня есть, но они не работоспособны.
    Я хочу понять, как правильно в switch их указывать.
    Все пункты, как добавить, удалить и т.д. у меня расписаны
    А как их подключить верно в switch/
    case 1: write_file(write_file(char *filename, int n, dvd *a)); break;
    Так чтоль?
    Не работает так программа
     
  4. Whatka

    Whatka Well-Known Member

    Репутация:
    0
    Регистрация:
    9 окт 2011
    Сообщения:
    428
    Симпатии:
    4
    Код:
    case 1: write_file(filename,n, a); break;
    а так нет??
    если не сами делаете программу,так разбирайтесь хотя бы
     
  5. nreginka832

    nreginka832 New Member

    Репутация:
    0
    Регистрация:
    17 ноя 2014
    Сообщения:
    4
    Симпатии:
    0
    NET!!! NE TAK/ VSEZNAIKA/ :huh:
     
  6. Whatka

    Whatka Well-Known Member

    Репутация:
    0
    Регистрация:
    9 окт 2011
    Сообщения:
    428
    Симпатии:
    4
    Ну так разберите программу с 1 строчки до последней и выясните,как вызываются и работают функции,
    что такое переменные и почему их надо инициализировать ДО использования.
     
Загрузка...
Похожие Темы - Структура C++
  1. nreginka832
    Ответов:
    2
    Просмотров:
    1.350
  2. Виталий
    Ответов:
    14
    Просмотров:
    2.057
  3. KsuKsuKsunia
    Ответов:
    0
    Просмотров:
    1.922
  4. mikhailkarmanov
    Ответов:
    1
    Просмотров:
    1.072
  5. Homka
    Ответов:
    0
    Просмотров:
    1.772
Статус темы:
Закрыта.

Поделиться этой страницей