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

Статус
Закрыто для дальнейших ответов.

nreginka832

New Member
17.11.2014
4
0
38
#1
Здравствуйте. Мне нужно создать структура dvd дисков
Структура "DVD- диск":
- название;
- режиссер;
- продолжительность;
- цена.
Удалить первый элемент с заданной продолжительностью.
Добавить N элементов после элемента с номером К
и создать меню это структуры.
C++:
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;
Подскажите пожалуйста.

C++:
#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;
}
 

Whatka

Well-Known Member
09.10.2011
428
4
24
Минск
#2
Я бы вам посоветовал использовать класс для этой программы.

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

nreginka832

New Member
17.11.2014
4
0
38
#3
Я бы вам посоветовал использовать класс для этой программы.

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

Whatka

Well-Known Member
09.10.2011
428
4
24
Минск
#4
C++:
case 1: write_file(filename,n, a); break;
а так нет??
если не сами делаете программу,так разбирайтесь хотя бы
 

Whatka

Well-Known Member
09.10.2011
428
4
24
Минск
#6
Ну так разберите программу с 1 строчки до последней и выясните,как вызываются и работают функции,
что такое переменные и почему их надо инициализировать ДО использования.
 
Статус
Закрыто для дальнейших ответов.