Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
ringer
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 14
1

Программный код написан без ошибок но программу брикает

05.05.2017, 18:13. Просмотров 262. Ответов 3
Метки нет (Все метки)

вот сам код
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
 
struct film
{
 
    string namefilm;
    string rezh;
    int p;
    double cen;
};
bool filetofilebin(char name1[], char name2[],double ykc)
{
    ifstream f1(name1);
    if(!f1){
        cout<<"Нет исходного файла"<<endl;
        system ("pause");
        return false;
    }
    ofstream f2(name2,ios::binary);
    
    film  b;
    
    while (f1.read((char*)&b,sizeof(b)));
    {
        
        string p=b.namefilm;
 
        if(p == "") 
            f1.read((char*)&b.namefilm,sizeof(b.namefilm));
    f1.read((char*)&b.rezh,sizeof(b.rezh))
        ;
        f1>>b.p>>b.cen;
        if(b.cen<ykc)
            f2.write((char*)&b,sizeof(b));
    }
    f1.close();
    f2.close();
    return 1;
}
 
void Displaybin(char name2[])
{
    ifstream f2(name2,ios::binary|ios::in);
    if(!f2)
    {
        cout<<"ERROR.";
        system("pause");
    }
    film ftb;
    cout<<"фильм"<<setw(20)<<""<<setw(20)<<""<<setw(10)<<""<<endl;
    
    while (f2.read((char*)&ftb.namefilm,sizeof(ftb.namefilm[50])))
    {
 
     if(ftb.namefilm == "")f2.read((char*)&ftb.namefilm,sizeof(ftb.namefilm[50]));
     f2.read((char*)&ftb.rezh,sizeof(ftb.rezh[30]));
        f2>>ftb.p>>ftb.cen;
        if(!f2.eof())
        {
    cout<<ftb.namefilm<<setw(20)<<ftb.rezh<<setw(20)<<ftb.p<<setw(10)<<ftb.cen<<endl;
}
    }
    f2.close();
}
 
int main()
{
    setlocale (0,"");
    char name1[]="f1.txt";
    char name2[]="f2.bin";
    double ykc;
    cout<<"Введите цену фильма"<<endl;
    cin>>ykc;
    filetofilebin(name1,name2,ykc);
    Displaybin(name2);
    system ("pause");
    return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2017, 18:13
Ответы с готовыми решениями:

Изменить программу чтобы программный код выполнялся в отдельных функциях
Помогите изменить программу так, чтобы программный код, выполняющий действия пунктов меню...

Как выгрузить программу без ошибок?
Раньше я просто закрывал программу 'крестиком' Потом, когда к проекту добавились некоторые...

Как изменить программный код (сделать программу быстрее, убрать цикл For To Next )?
Как изменить программный код (сделать программу быстрее, убрать цикл For To Next )? Public Sub...

Cygwin скомпилировал программу без ошибок, но потом не запускает
Всем привет! Самостоятельно начал учить язык C. Еще только в начале пути, но уже столкнулся с...

Office.Interop.Word: Comments.Add. Код отработал без ошибок, но комментарий не появился
for (int i = 1; i &lt; doc.Paragraphs.Count; i++) { int kkk =...

3
Max Dark
шКодер самоучка
2026 / 1785 / 879
Регистрация: 09.10.2013
Сообщений: 3,935
Записей в блоге: 6
Завершенные тесты: 2
05.05.2017, 18:33 2

Не по теме:

Цитата Сообщение от ringer Посмотреть сообщение
Программный код написан без ошибок
если код компилируется, это не означает что в нем нет ошибок.


для начала:
Цитата Сообщение от ringer Посмотреть сообщение
ifstream f1(name1);
Цитата Сообщение от ringer Посмотреть сообщение
while (f1.read((char*)&b,sizeof(b)));
файл открыт в "текстовом" режиме, а читается как двоичный.
чуть далее он же читается как текстовый
Цитата Сообщение от ringer Посмотреть сообщение
f1>>b.p>>b.cen;
далее.
Цитата Сообщение от ringer Посмотреть сообщение
struct film
{
string namefilm;
* * string rezh;
* * int p;
* * double cen;
};
Цитата Сообщение от ringer Посмотреть сообщение
film *b;
while (f1.read((char*)&b,sizeof(b)));
структура film не является POD(простым) типом, так как содержит поля класса std::string(который является оберткой над указателем => работает с памятью), а следовательно ее нельзя считать/записать из файла одним куском - нужно читать-писать поэлементно.

дальше не смотрел...
0
ringer
0 / 0 / 0
Регистрация: 28.04.2017
Сообщений: 14
05.05.2017, 21:13  [ТС] 3
необходимо считать из текстового в бинарный, и вывести на экран информацию бинарного файла по условию что мы вводим цену по ней выводится информация
0
nd2
3090 / 2587 / 1131
Регистрация: 29.01.2016
Сообщений: 8,674
06.05.2017, 01:16 4
Цитата Сообщение от ringer Посмотреть сообщение
необходимо считать из текстового в бинарный, и вывести на экран информацию бинарного файла по условию что мы вводим цену по ней выводится информация
И? Читай 2-й пост.
0
06.05.2017, 01:16
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2017, 01:16

Написать программу без ошибок. Что она вообще делает
#include &lt;stdio.h&gt; int f(int n) { if(n==0) { return(o); } else (n==1)&amp;(n=2) { return 1;...

7.7 программный отлов ошибок
Доброго времени суток. Кто-нибудь знает, есть ли способ программного отлова ошибок модуля?...

Код написан в Dev C. Не работает в Visual. Как нужно переделать код?
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru