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

При считывании файла выходит "мммммммммм" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создание исключения при динамическом выделении памяти http://www.cyberforum.ru/cpp-beginners/thread1151791.html
Вот код из учебника в нем мне все понятно. #include<iostream> #include<cstdlib> //exit() #include<new> using std::cout;using std::bad_alloc;using std::endl; int main(){ int *p=0;// создаем указатель try { p=new int;//выделяем память }
C++ Двоичное число перевести в десятичное Введите целое число в двоичной системе счисления и выведите его десятичный эквивалент. Указание. Примените операции деления (/) и взятия по модулю (%) для отделения справа налево одного за другим «двоичного» числа. http://www.cyberforum.ru/cpp-beginners/thread1151784.html
C++ Ввести с клавиатуры число линий и построить фигуру
Ввести с клавиатуры число линий и построить фигуру: Начал изучать графику в c++...
Программа по вычислению корней нелинейных уравнений C++
Нужна помощь с программой по вычислению корней нелинейных уравнений.\ Суть задачи научится пользоваться указателем на функцию. Вообщем есть две функции в каких нужно найти корни методом половинного деления (дихотомии). \cos \frac{t}{x}-2\sin \frac{1}{x}+\frac{1}{x}=0, x\in \sin(\ln (x))-\cos(\ln (x))+t\ln(x)=0 , x\in
C++ Ввод массива как с клавиатуры, так и из файла http://www.cyberforum.ru/cpp-beginners/thread1151754.html
Мое задание предполагает что массив будет вводиться на усмотрение пользователя либо с клавиатуры, либо из файла. Как это реализовать по отдельности знаю, а как сделать выбор из двух способов - нет. Собственно, прошу вашей помощи.
C++ Error: a function-definition is not allowed here before '{' token| Всем привет. Вот переписал код из учебника под названием "Дирк Хенкеманс и Марк Ли программирование на c++". Код из игры под название "Приключение в пещере" (стр. 119) Вот собстенно код: #include <iostream> #include <string> using namespace std; подробнее

Показать сообщение отдельно
Pavel_2011
1 / 1 / 0
Регистрация: 23.10.2013
Сообщений: 66
19.04.2014, 21:05     При считывании файла выходит "мммммммммм"
Ребята, помогите разобраться с программой. При считывание файла выходит мммммммммм. Не пойму в чем дело. Помогите исправить эту ошибку



http://www.cyberforum.ru/attachment....1&d=1397926975


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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream> 
#include <fstream>
#include <windows.h> 
#include <string.h> 
#include <iomanip> 
using namespace std; 
const int nmax=100; 
struct person //Объявление структуры 
{ 
    char fam[30], //Фамилия 
        name[25], //Имя 
        otch[25], //отчество 
        street[30], //Улица 
        phone[12]; 
    int house, flat;//номер дома, квартиры, номер телефона 
}; 
int vvod(person st[])
    //Функция, выполняющая считывание данных из текстового файла и
    //их сохранение в двоичный файл
{ 
    ifstream in;//Объявляем входной поток для текстового файла
    ofstream out("perbin.dat", ios::binary);
    //Объявляем выходной поток и привязываем его к бинарному файлу
    in.open("persons.txt"); // открываем текстовый файл
    int k=0, s=0;
    if (in)//Если текстовый файл успешно открылся
    {
        while (!in.eof()) // пока не конец текстового файла 
        {   //считываем из файла все данные о абонентах
            in>>st[k].fam;//Фамилия
            in>>st[k].name;//Имя
            in>>st[k].otch;//Отчество
            in>>st[k].street;//Улица
            in>>st[k].house;
            in>>st[k].flat;
            in>>st[k].phone;//номер телефона
            k++;
            out.write((char*)&st,sizeof(person));
        }
            in.close();//закрываем текстовый файл
            out.close();//закрываем двоичный файл
    }
    else cout<<"Такого файла нет!";
    return k;
}
        void print_mas()
            //Функция распечатки данных, хранящихся в двоичном файле
        { 
            person st;
            ifstream in; //Объявляем входной поток для двоичного файла
            in.open("perbin.dat", ios::binary);
            //Связываем поток с двоичным файлом "perbin.dat"
            if (in) //Если двоичный файл успешно открылся
            {//Будем распечатывать данные в виде таблицы
                cout<<"Исходная информация об абонентах"<<endl; 
                cout<<setw(13)<<left<<"Фамилия"<<setw(13)<<"Имя"<< 
                    setw(17)<<"Отчество"<<setw(13)<<"Улица"<<setw(7)<<"Дом"<< 
                    setw(4)<<"Кв."<<setw(5)<<"Телефон"<<endl;
                in.read((char*)&st,sizeof(person));
                // Считываем структуру целиком из двоичного файла
                while (!in.eof())//Пока не конец двоичного файла
                {//Печатаем все данные о текущем студенте
                    cout<<setw(13)<<st.fam<<setw(13)<< 
                        st.name<<setw(17)<<st.otch<<setw(13)<<st.street<<setw(7)<< 
                        st.house <<setw(4) 
                        << st.flat<<setw(5)<< st.phone <<endl;
                    in.read((char*)&st,sizeof(person));
                    //Считываем следующую запись из файла
                }
                in.close();//Закрываем двоичный файл
            }
            else cout<<"Такого файла нет!";
        }
 
        //Функция выводит данные об абонентах, проживающих на улице, 
        //название которой вводится с клавиатуры 
        void dataStreet(char streetname[],person st[], int n) 
        { 
            for (int i=0;i<n; i++) 
                if (strcmp(st[i].street, streetname)==0) cout<<setw(13)<<st[i].fam<<setw(13)<< 
                    st[i].name<<setw(17)<<st[i].otch<<setw(13)<<st[i].street<<setw(7)<< 
                    st[i].house <<setw(4) 
                    << st[i].flat<<setw(5)<< st[i].phone <<endl; 
        } 
        //Функция сортировки данных массива по телефонe 
        void sortPhone(person spisok[], int n) //порядке (пузырек) 
        { person z; 
        bool fl; 
        do 
        { fl=1; //Флаг поднять 
        for (int i=0; i<n-1;i++) 
            if(strcmp(spisok[i].phone,spisok[i+1].phone)>0) 
                //Если они расположены не верно, то переставляем их местами 
            { 
                z=spisok[i]; 
                spisok[i]=spisok[i+1]; 
                spisok[i+1]=z; 
                fl=0; //Флаг опустить 
            } 
        } 
        while (!fl); //Если флаг не опускался, то массив отсортирован 
        } 
        void printNumber(person spisok[], int n, char phonenum[]) 
        { 
            char search[4]; 
            for (int i=0;i<n; i++){ 
                for (int j=0;j<4;j++) search[j]=spisok[i].phone[j]; 
                if (strncmp(search, phonenum, 4)==0) 
                    cout<<setw(13)<<spisok[i].fam<<setw(13)<< 
                    spisok[i].name<<setw(17)<<spisok[i].otch<<setw(13)<<spisok[i].street<<setw(7)<< 
                    spisok[i].house <<setw(4) 
                    << spisok[i].flat<<setw(5)<< spisok[i].phone <<endl; 
            } 
        } 
        void main() 
        {
            setlocale(LC_ALL, "Russian");
            const int nmax=100; //Максимальный размер массива 
            person spisok[nmax]; 
            int i=0; //Число абонентов 
            char streetname[30],phonenum[5]; //Улица 
            int k=vvod(spisok); 
            print_mas(); 
            cout<<"Введите название улицы для поиска абонентов"<<endl; 
            cin>>streetname; 
            cout<<" Абоненты, проживающие на улице "<<streetname<<endl; 
            dataStreet(streetname, spisok, k); 
            cout<<"Введите первые 4 цифры"<<endl; 
            cin>>phonenum; 
            cout<<"Абоненты, номера телефонов которые начинаются с зад.значений"<<endl;
            printNumber(spisok, k,phonenum); 
            sortPhone (spisok,k);
            print_mas(); 
            system ("pause"); 
        }
Миниатюры
При считывании файла выходит "мммммммммм"  
Вложения
Тип файла: txt persons.txt (741 байт, 4 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru