IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Сортировка по алфавиту, С++
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 61
Пол: Мужской
Реальное имя: Илья

Репутация: -  0  +


Доброго времени суток, появилась проблема: есть структура, читаю из файла, нужно вывести только те спектакли, которые поставленны введенным режиссером. Проблема заключается в том, что в структуре все данные объявлены как 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 байт ) Кол-во скачиваний: 507
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2024 14:14
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name