Доброго времени суток, появилась проблема: есть структура, читаю из файла, нужно вывести только те спектакли, которые поставленны введенным режиссером. Проблема заключается в том, что в структуре все данные объявлены как string, а не char (тут я знаю как сортировать по алфавиту), а замена стринга на чар приводит к ошибке Lvalue required, если не ошибаюсь, пытается присвоить что-то константе mas[20], хотя этого нельзя сделать. Кто знает подскажите пожалуйста.
#include <iostream> #include <windows.h> #include <iomanip> #include <fstream.h> #include <ostream.h> #include <string> using namespace std; struct theatre { string spekt; string avtor; string rezhiser; string data; string time; }; void print(theatre mas[20],int nomer) { int j=1; for (int i = 0; i < nomer; i++) { cout<<"\n"<<j<<")"; cout<<" Nazvanie: "<<mas[i].spekt<<endl<<" Avtor: "<<mas[i].avtor<< endl<<" Rezhiser: "<<mas[i].rezhiser<<endl<<" Data: "<<mas[i].data<<endl<< " Vremya: "<<mas[i].time<<endl; j++; } } void change(theatre mas[20],int element) { cout<<"Nazvanie: ", cin>>mas[element-1].spekt; cout<<"Avtor: ", cin>>mas[element-1].avtor; cout<<"Rezhiser: ", cin>>mas[element-1].rezhiser; cout<<"Data: ", cin>>mas[element-1].data; cout<<"Vremya: ", cin>>mas[element-1].time; } int del(theatre mas[20],int element,int nomer) { int j=0; mas[element-1].spekt="del"; for (int i = 0; i < nomer; i++) if (mas[i].spekt != "del") { mas[j].spekt = mas[i].spekt; mas[j].avtor = mas[i].avtor; mas[j].rezhiser = mas[i].rezhiser; mas[j].data = mas[i].data; mas[j].time = mas[i].time; j++; } cout<<"Zapis' udalena!\n"; return nomer=nomer-1; } void save(theatre mas[20], int nomer) { ofstream f("baza.txt"); for (int i = 0; i < nomer; i++) if (i!= nomer-1) { f<<mas[i].spekt; f<<endl; f<<mas[i].avtor; f<<endl; f<<mas[i].rezhiser; f<<endl; f<<mas[i].data; f<<endl; f<<mas[i].time; f<<endl; } else { f<<mas[i].spekt; f<<endl; f<<mas[i].avtor; f<<endl; f<<mas[i].rezhiser; f<<endl; f<<mas[i].data; f<<endl; f<<mas[i].time; f<<endl; } f.close(); cout<<"Dannye sohraneny v file 'baza.txt'.\n"; } int main() { theatre mas[20]; int b,element,nomer=0; string c; cout<<"Chtenie dannyh iz faila 'baza.txt'...\n"; ifstream f("baza.txt"); while (!f.eof()) { f>>mas[nomer].spekt; f>>mas[nomer].avtor; f>>mas[nomer].rezhiser; f>>mas[nomer].data; f>>mas[nomer].time; nomer++; } f.close(); while (true) { cout<<"\nVyberite odno iz deistvii:\n"; cout<<"1) Izmenit' zapis'.\n2) Udalit' zapis'.\n3) Prosmotret' dannye.\n"; cout<<"4) Sohranit' dannye.\n5) Informaciya o spektaklyah, postavlennyh"; cout<<" dannym rezhiserom.\n6) Exit.\n"; cin>>b; switch(b) { case 1: { cout<<"Vvedite nomer izmenyaemoi zapisi: "; cin>>element; change(mas,element); break; } case 2: { cout<<"Vvedite nomer udalyaemoi zapisi: "; cin>>element; nomer=del(mas,element,nomer); break; } case 3: { print(mas,nomer); break; } case 4: { save(mas,nomer); break; } case 5: { /* theatre tmp; bool sort = true; int i; string a; while (sort) { sort=false; for (i=0; i < nomer-1; i++) if ((strlen(mas[i].spekt)>(strlen(mas[i+1].spekt)) { tmp=mas[i]; mas[i]=mas[i+1]; mas[i+1]=tmp; sort=true; } } cout<<"\nVvedite familiyu rezhisera: "; cin>>a; if (a == mas[i].rezhiser) { int j=1; for (int i = 0; i < nomer; i++) { cout<<j<<")/n"; cout<<"Nazvanie: "<<mas[i].spekt<<endl<<"Avtor: "<<mas[i].avtor<< endl<<"Rezhiser: "<<mas[i].rezhiser<<endl<<"Data: "<<mas[i].data<<endl<< "Vremya: "<<mas[i].time<<endl; } } else { cout<<"\nSpektaklei, postavlennyh dannym rezhisserom net!\n"; } */ } case 6: return 0; default: cout<<"Nevernye dannye!\n"; } } system("pause"); return 0; }
baza.txt ( 107 байт )
Кол-во скачиваний: 524