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

как в с++ создается типизированный файл? и как вообще понять типизированный? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ дана целочисленная прямо угольная матрица http://www.cyberforum.ru/cpp-beginners/thread376658.html
1) задача Дана цедочисленная прямоугольная матрица определить: найти номер первой из строк, содержащих хотябы один положительный элемент размер массива 5х5 замолнить случайными числами. 2) задача В одномерном массиве, состоящем из 10 целых элементов вычислить 1) номер максимального по модулю элемента 2)Сумму элементов массива, расположенных после первого положительного элемента ...
C++ В чем разница между простым линейным списком, и динамическим линейным списком? вопрос в теме http://www.cyberforum.ru/cpp-beginners/thread376641.html
C++ Двоеточие в конструкторе, что это?
Пример - конкретно из книги дейтела, вопрос вызывает двоеточие после конструктора, если оно позвляет производить инициализацию - то почему не делать бы этого в теле. Было бы очень хорошо если бы кто-нибудь ткнул носом в мануал по возможным вариантам использования этой вундервафли. String::String( const char *s):length( ( s != 0) ? strlen(2) : 0){/*...*/} Поиском по форуму не нашел, если было...
C++ проверьте правильность программ
Нужно составить программу который подсчитывает площадь прямоугольного треугольника когда известна длина и высота: { Float a, h, s; Printf (“vvedite dlinu I visotu: ”); Scanf (“%f %f”, &a, &h); S=(1.0/2.0)*a*h Printf (“ploshad= %f”, s); Return 0; }
C++ Определить количество нечетных членов последовательности, имеющих четные номера http://www.cyberforum.ru/cpp-beginners/thread376620.html
Даны натуральные числа n, а1,......,аn. Определить количество членов ак последовательности а1,......,аn : имеющих четные порядковые номера и являющихся нечетными числами.
C++ Просканировать локальную сеть и найти ip всех компьютеров Привет всем. Только начал писать c++ под windows, мне нужно просканировать локальную сеть и найти, и найти все ip которые там есть. подскажите каким способом можно это сделать? подробнее

Показать сообщение отдельно
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
02.11.2011, 16:19  [ТС]
Блин вот немного понять не могу, вот листинг проги до функции считывания типизированого файла, там я сам должен ввести имя и тип файла для открытия, я вот не знаю как написать программу самую простую для создания этого типизированного файла, чтоб вот этой функцие можно было его открыть
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
using namespace std;
    char bufRus[256];
    char* Rus(const char* text)
    {
        CharToOem(text, bufRus);
    return bufRus;
    }
 
struct lfile{
    char name[15];
    char data[10];
    int upd;
};
struct sp{
    lfile elfile;   // поле данных
    sp *next;   // указатель
};
 
sp*print_list(sp *list);//прототип функции вывод на экран
 
 
sp* ft_enter();//прототип функции ввод из текстового файла
sp* fb_enter();// прототип функции ввод из типизированного файла
sp* fs_enter();// прототип функции ввод с экрана
sp* sort(sp *list);// прототип сортировки
void search(sp *list); // прототип функций поиск по имени и вывод в файл
void fsearch(sp *list); //прототип функции поиск файла с наибольшим количеством обращений
 //
sp* pind(sp *list); //прототип получения адреса
sp* del(sp *list,sp *adr);// прототип функции удаления файла
sp * vst(sp *list,sp *adr);// прототип фунции вставка файла
void zmn(sp *list); // прототип функции замена файла
 
void main()
{
   int v;
   sp *k;
   do{
      cout<<Rus("  0: формирование списка из текстового файла")<<endl;
      cout<<Rus("  1: формирование списка из типизированного файла")<<endl;
      cout<<Rus("  2: формирование списка с экрана")<<endl;
      cout<<Rus("  3: сортировка")<<endl;
      cout<<Rus("  4: поиск по заданному полю с сохранением результатов в файле")<<endl;
      cout<<Rus("  5: выборка файла с наибольшим количеством обращений")<<endl;
      cout<<Rus("  6: замена записи")<<endl;
      cout<<Rus("  7: удаление записи после указанного адреса")<<endl;
      cout<<Rus("  8: вставка записи после указанного адреса")<<endl;
      cout<<Rus("  9: вывод списка")<<endl;
      cout<<Rus("  10: выход")<<endl;
      cout<<Rus("вариант ")<<endl;
      cin>>v;
      switch(v){
        case 0: k = ft_enter(); break;/*вызов функции ввод тектового файла в переменную к, чтоб по ней потом можно было делать сортировку, поиск и тд*/
        case 1: k = fb_enter(); break; // вызов функции ввод с типизированного файла
        case 2: k = fs_enter(); break;// вызов функции ввод с экрана
        case 3: k = sort(k); print_list(k); break;// вызов 2 функций сортировки по переменной к, и вывод списка на экран
        case 4: search(k);break;//вызов функции поиск по переменной к и сохранение в файл одной строки
        case 5: fsearch(k); break;//вызов функции поиск файла с наибольшим количеством обращений к нему
        case 6: zmn(k); print_list(k); break;//вызов функции замена строки по указаному номеру
        case 7: k = del(k,pind(k)); print_list(k); break;// вызов функции удаление строки после указанного номера
        case 8: k = vst(k,pind(k)); print_list(k); break;//вызов функции вставка строки после указанного номера
        case 9: print_list(k);break;//вызов функции вывод списка на экран
        case 10:return; break;
 
        }
    } while(true);//цикл будет повтрятся
}
 
//ввод списка из текстового файла
sp* ft_enter(){
    char name[10];// символьный тип которое будет именем файла и его типом не больше 10знаков
    cout<<Rus("введи имя входн тип.файла")<<endl;
    cin>>name;// ввод имени и типа
    sp* list = new sp;    //создаем указатель на голову списка
    sp *ptr;  //указатель на элемент списка
    bool on=true; //флажок, который определяет, читаем ли мы первый элемент списка или последующие
    ifstream inf(name);//считывание файла по имени name в inf
    while (!inf.eof()){ // цикл пока не будет достигнут конец файла
        if(on){     //если до этого список был пуст, то
            ptr=list;  //записываем в него первый элемент
            on=false;
        }else{  //если список не пуст, то записываем в него текущий элемент (настраиваем указатель на след. элемент)
            ptr->next=new sp; //выделяем память под следующий элемент списка
            ptr=ptr->next;//ptr теперь указывает на тот элемент который был выделен строкой выше
        }
        inf>> ptr->elfile.name;   //читаем конкретные данные в текущий элемент списка
        inf>> ptr->elfile.data;
        inf>> ptr->elfile.upd;
        inf.ignore();
    }
    ptr->next=NULL; //для последнего элемента списка указатель на следующий элемент не определен/пуст (установлен в NULL)
    inf.close();//закрытие файла
    return list;  //  возвращаем указатель на первый элемент списка
}
 
//ввод списка из типизированного файла
sp* fb_enter(){
    sp* list =new sp; //создаем указатель на голову списка
    sp *ptr,*q;//два указателя на sp.
    int ok=1;//Переменная ok со значением 1.
    char name[15];// символьный тип которое будет именем файла и его типом не больше 15знаков
    cout<<Rus("введи имя входн тип.файла")<<endl;
    cin>>name;// ввод имени и типа
    ifstream intf(name, ios::binary); //режим бинарного открытия файла
    ptr=list; //теперь ptr указывает туда же куда и list
    while (!intf.eof()){  // // цикл пока не будет достигнут конец файла
        intf.read(reinterpret_cast<char *>(&ptr->elfile),sizeof(lfile)); /*читаем из бинарного файла байты кол-вом размер структуры lfile в переменную. reinterpret_cast<T> - небезопасное преобразование. В данном случае т.к. read принимает указатель на char* преобразовываем указатель на lfile в указатель на char и читаем в него. */
            if(ptr->elfile.upd != NULL){  // если не ноль
                q=ptr;//q теперь указывает туда же куда и ptr.
                ptr->next=new sp;//ptr теперь указывает на тот элемент который был выделен строкой выше
                ptr=ptr->next;// ptr теперь указывает на тот элемент который был выделен строкой выше
            }
    }
    ptr->next=NULL;//обнуляем следующий элемент за q.
    intf.close();//закрытие файла
    return list; // возвращаем указатель на первый элемент списка
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru