Форум программистов, компьютерный форум CyberForum.ru

Структура выводит мусор - C++

Восстановить пароль Регистрация
 
иван_пропал
36 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 110
26.10.2012, 18:49     Структура выводит мусор #1
здравствуйте. Почему данный код выводит мусор? Я неправильно присваиваю?
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
void poisk_cena(){
if (est){ 
dvd *p1 = new dvd[t];
int rub;
cout<<"Задайте цену: ";
cin>>rub;
//*******
dvd *p2 = new dvd[];// сюда сохр отсортированные диски
int m = 0;
int e = 0; // количество оставшихся дисков
//*********
fstream f("f.dat", ios::in | ios::out);
for(int i = 0; i<t; i++)
{  
    f >> p1[i].namefilm; 
    f >> p1[i].namereg;
    f >> p1[i].prodol;
    f >> p1[i].cena;
    if (p1[i].cena<rub){
    cout<<"       Диск: "<<i+1<<"\n";
    cout<<"Название фильма: "<<p1[i].namefilm<<"\n";    p2[m].namefilm==p1[i].namefilm;
    cout<<"Имя режиссера: "<<p1[i].namereg<<"\n";       p2[m].namereg==p1[i].namereg;
    cout<<"Продолжительность: "<<p1[i].prodol<<"\n";    p2[m].prodol==p1[i].prodol;
    cout<<"Цена: "<<p1[i].cena<<"\n\n";                 p2[m].cena==p1[i].cena;
    m++;
    e++;
    }
}
 
for(int m ; m<e; m++)
{  cout<<"-------------------------\n";
    cout<<"Название фильма: "<<p2[m].namefilm<<endl;
    cout<<"Имя режисера: "<<p2[m].namereg<<endl;
    cout<<"Продолжительность: "<<p2[m].prodol<<endl;
    cout<<"Цена: "<<p2[m].cena<<"\n\n";
    
}
 
f.close(); delete [] p1; 
delete [] p2;
}
else {cout<<"\nОшибка! Нет дисков\n";}
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_289
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 12
26.10.2012, 20:29     Структура выводит мусор #2
Вместо == поставте = .Знак == это сравнение,а = это присвоение.
иван_пропал
36 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 110
27.10.2012, 10:57  [ТС]     Структура выводит мусор #3
Не канает . пишет ошибки
1>kurs_9.cpp(90): error C2106: =: левый операнд должен быть левосторонним значением
1>kurs_9.cpp(91): error C2106: =: левый операнд должен быть левосторонним значением


Я предполагаю что это из за того что p1[i].namefilm и p1[i].namereg являются char. Но как исправить?
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
27.10.2012, 11:06     Структура выводит мусор #4
Предполагаю, что ошибки из-за, того что сравниваешь тип char не правильно.Тип char сравнивать нужно с помощью функции strcmp или можно все char поменять на string. И выкладывай весь код.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
27.10.2012, 11:20     Структура выводит мусор #5
Цитата Сообщение от иван_пропал Посмотреть сообщение
p1[i].namefilm и p1[i].namereg являются char.
не char
а строкой типа char*
и простое сравнение здесь не проканает
да и присвоение тоже
вот так не получится
C++
1
2
char w[]="blala"
char d[10]=w
нужно или копирование памяти или использования вместо char [] типа string
иван_пропал
36 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 110
27.10.2012, 11:22  [ТС]     Структура выводит мусор #6
Я не сравниваю а присваиваю и выходят эти две ошибки
Кликните здесь для просмотра всего текста

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
void poisk_cena(){
if (est){ 
dvd *p1 = new dvd[t];
int rub;
cout<<"Задайте цену: ";
cin>>rub;
//*******
int m = 0; 
dvd *p2 = new dvd[m];// сюда сохр отсортированные диски
int e = 0; // количество оставшихся дисков
//*********
 
fstream f("f.dat", ios::in | ios::out);
for(int i = 0; i<t; i++)
{  
    f >> p1[i].namefilm; 
    f >> p1[i].namereg;
    f >> p1[i].prodol;
    f >> p1[i].cena;
    if (p1[i].cena<rub){
    cout<<"       Диск: "<<i+1<<"\n";
 
    cout<<"Название фильма: "<<p1[i].namefilm<<"\n";    
    cout<<"Имя режиссера: "<<p1[i].namereg<<"\n";       
    cout<<"Продолжительность: "<<p1[i].prodol<<"\n";    
    cout<<"Цена: "<<p1[i].cena<<"\n\n";                 
 
p2[m].namefilm = p1[i].namefilm;
p2[m].namereg  = p1[i].namereg;
p2[m].prodol   = p1[i].prodol;
p2[m].cena     = p1[i].cena;
 
    m++;
    e++;
    }
}


Структура:
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
struct dvd //структура dvd диска 
{
char namefilm[20];//название фильма
char namereg[20];// имя режиссера
int prodol; // продолжительность в минутах
int cena; // цена
};
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
27.10.2012, 11:30     Структура выводит мусор #7
Цитата Сообщение от иван_пропал Посмотреть сообщение
Я не сравниваю а присваиваю и выходят эти две ошибки
простым + ты здесь не обойдешся
Цитата Сообщение от ValeryS Посмотреть сообщение
нужно или копирование памяти или использования вместо char [] типа string
иван_пропал
36 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 110
27.10.2012, 12:09  [ТС]     Структура выводит мусор #8
Изменил с char на string. приложение запускается но при выводе на экран выходит ошибка

Необработанное исключение типа "System.AccessViolationException" произошло в kurs_9.exe

Дополнительные сведения: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.

Добавлено через 11 минут
И выводит только один результат
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2012, 14:29     Структура выводит мусор
Еще ссылки по теме:

C++ Сортировка массива, вместо массива выводит мусор
C++ Почему выводит в конце строки мусор?
C++ При добавлении студента, сбивается вся структура, и при выводе всего списка студентов, выводит какой то мусор

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
27.10.2012, 14:29     Структура выводит мусор #9
!!!!!
Цитата Сообщение от иван_пропал Посмотреть сообщение
//*******
int m = 0;
dvd *p2 = new dvd[m];// сюда сохр отсортированные диски
Цитата Сообщение от иван_пропал Посмотреть сообщение
p2[m].namefilm = p1[i].namefilm;
p2[m].namereg = p1[i].namereg;
p2[m].prodol = p1[i].prodol;
p2[m].cena = p1[i].cena;

m++;
Yandex
Объявления
27.10.2012, 14:29     Структура выводит мусор
Ответ Создать тему
Опции темы

Текущее время: 02:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru