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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
#1

Формирование списка из текстового файла - C++

22.10.2011, 16:25. Просмотров 536. Ответов 4
Метки нет (Все метки)

Люди объясните пожалуйста словесно выполнение функции ввода списка из текстового файла, желатено построчно очень важно понять, ну и по комментарием посмотрите правильно написал там вопросы поставил... Заранее спасибо
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
# include <iostream>                   // класс для работы с вводом-выводом
# include <windows.h>              // для функции   CharToOem();
# include <fstream>           // класс для работы с файлом
# include <string>                  // класс для работы со строками
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 в нем полю elfile присваивается список что выше и тоесть имя дата ?
    sp *next;   // тут next указывает на список ? тоесть получается на строку elfile?
};
 
void print_list(sp *list);// это все прототипы функций?
void fb_output(sp *list);
sp* fromtipf();// может ли быть это прототипом если нет void?
sp* ft_enter();
sp* fb_enter();
sp* fs_enter();
sp* sort(sp *list);
void search(sp *list);
void fsearch(sp *list);
sp* ddf(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;
    while(1){
      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("вариант ")<<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;
        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:return; break;
        }
    }
}
 
//ввод списка из текстового файла
sp* ft_enter(){
    char name[10];
    cout<<Rus("введи имя входн тип.файла")<<endl;
    cin>>name;
    char f[20];
    sp* list =и sp;
    sp *ptr;
    bool on=true;
    ifstream inf(name);
    while (!inf.eof()){
        if(on){
            ptr=list;
            on=false;
        }else{
            ptr->next=new sp;
            ptr=ptr->next;
        }
        inf>> ptr->elfile.name;
        inf>> ptr->elfile.data;
        inf>> ptr->elfile.upd;
        inf.ignore();
    }
    ptr->next=NULL;
    inf.close();
    return list;
}
Добавлено через 32 минуты
люди хелп

Добавлено через 1 час 41 минуту
видать тоже никто ниче понять не может
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2011, 16:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Формирование списка из текстового файла (C++):

Формирование текстового файла, записав в него 20 случайных чисел от –10 до +10, по одному на строке - C++
Вот полностью задание : Следующее задание требуется решить с использованием текстовых файлов. Предусмотреть в программе: 1....

Сохранение и считывания списка с текстового файла - C++
Всем привет! Ребята я делаю программу по работе со списками и она уже почти готова, по сути всё сделал! Вот только не знаю как сохранить...

Дублирование вхождения каждого элемента списка One и формирование из этих значений списка Double (пояснить условие) - C++
Здравствуйте. Вот собственно само задание: В составе программы описать функцию, которая дублирует вхождение каждого элемента списка One и...

Формирование и просмотр списка и функция, которая изменяет каждое значение информационной части элемента списка на его квадрат - C++
Написать программу, содержащую процедуры формирования и просмотра списка и функцию, которая изменяет каждое значение информационной части...

Добавить в конец первого текстового файла содержимое второго текстового файла - C++
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

Формирование упорядоченного списка из целых чисел; удаление из списка отрицательные чисел и удвоение положительных - C++
Составить программу, которая: • обеспечивает первоначальный ввод целых чисел и формирует из них упорядоченного списка; • затем ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
aeshes
440 / 203 / 13
Регистрация: 07.10.2011
Сообщений: 462
22.10.2011, 16:53 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
ответила, что смогла

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
# include <iostream>    // заголовочный файл/библиотека для работы с вводом-выводом
# include <windows.h>         // для функции       CharToOem();
# include <fstream>             // для работы с файлом
# include <string>                // для работы со строками
using namespace std;
        char bufRus[256];
        char* Rus(const char* text)
        {
                CharToOem(text, bufRus);
        return bufRus;
        }
 
struct lfile{                   // эта структура описывает данные, которые будут хранится в списке 
        char name[15];     //в данном случае данные состоят из 2-х полей-массивов char (строки)
        char data[10];      //и одного целочисленного поля
        int upd;
};
struct sp{           //эта структура описывает 1 элемент (узел) списка. Каждый узел состоит из:
        lfile elfile;   // данных (их структура выше)
        sp *next;   // и указателя на следующий элемент списка
};
 
void print_list(sp *list);// это прототипы функций
void fb_output(sp *list);
sp* fromtipf();// эта функция возвращает указатель на элемент списка (sp* - тип ее возвращаемого значения, void тут не нужен)
sp* ft_enter(); //аналогично
sp* fb_enter();
sp* fs_enter();
sp* sort(sp *list);
void search(sp *list);
void fsearch(sp *list);
sp* ddf(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; //объявлен указатель на начальный элемент (голову) списка
        while(1){
          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("вариант ")<<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;
                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:return; break;
                }
        }
}
 
//ввод списка из текстового файла
sp* ft_enter(){
        char name[10];
        cout<<Rus("введи имя входн тип.файла")<<endl;
        cin>>name;
        char f[20];
        sp* list =и sp;
        sp *ptr;
        bool on=true;
        ifstream inf(name);
        while (!inf.eof()){
                if(on){
                        ptr=list;
                        on=false;
                }else{
                        ptr->next=new sp;
                        ptr=ptr->next;
                }
                inf>> ptr->elfile.name;
                inf>> ptr->elfile.data;
                inf>> ptr->elfile.upd;
                inf.ignore();
        }
        ptr->next=NULL;
        inf.close();
        return list;
}
1
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
22.10.2011, 16:56  [ТС] #3
Цитата Сообщение от aeshes Посмотреть сообщение
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
sp* ft_enter(){
 char name[10];
 cout<<Rus("введи имя входн тип.файла")<<endl;
 cin>>name;
 char f[20];
 sp* list = new sp;
 sp *ptr;
 bool on=true;
 ifstream inf(name);
 while (!inf.eof()){
 if(on){
 ptr=list;
 on=false;
 }else{
 ptr->next=new sp;
 ptr=ptr->next;
 }
 inf>> ptr->elfile.name;
 inf>> ptr->elfile.data;
 inf>> ptr->elfile.upd;
 inf.ignore();
 }
 ptr->next=NULL;
 inf.close();
 return list;
}
а вот этот кусок листинга нельзя словесно прокоментировать подробно?
0
aeshes
440 / 203 / 13
Регистрация: 07.10.2011
Сообщений: 462
22.10.2011, 17:07 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
//ввод списка из текстового файла
sp* ft_enter(){
        char name[10];
        cout<<Rus("введи имя входн тип.файла")<<endl;
        cin>>name;     //вводим имя файла, из которого будем читать список
        char f[20];      //не знаю, зачем эта строка 
        sp* list =new sp;  //создаем указатель на голову списка
        sp *ptr;            //указатель на элемент списка
        bool on=true;     //флажок, который определяет, читаем ли мы первый элемент списка или последующие (первый элемент списка в пустой список добавляется по-особому)
        ifstream inf(name);  //открываем файл со списком для чтения
        while (!inf.eof()){       //пока не достигнут конец файла
                if(on){             //если до этого список был пуст, то
                        ptr=list;   //записываем в него первый элемент 
                        on=false;
                }else{             //если список не пуст, то записываем в него текущий элемент (настраиваем указатель на след. элемент)
                        ptr->next=new sp;
                        ptr=ptr->next;
                }
                inf>> ptr->elfile.name; //читаем конкретные данные в текущий элемент списка
                inf>> ptr->elfile.data;
                inf>> ptr->elfile.upd;
                inf.ignore();
        }
        ptr->next=NULL; //для последнего элемента списка указатель на следующий элемент не определен/пуст (установлен в NULL)
        inf.close(); //закрываем файл
        return list; //возвращаем полученный список
}
1
lexflax
10 / 10 / 1
Регистрация: 03.04.2011
Сообщений: 627
24.10.2011, 14:28  [ТС] #5
спасибо большое

Добавлено через 20 часов 38 минут
Можно эти две функции так же прокоментировать в тех местах где поставил пустые "//" и так где в них вопросы поставил, заранее спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sp* fb_enter(){//ввод списка из типизированного файла
    sp* list =new sp; //создаем указатель на голову списка
    sp *ptr,*q;//
    int ok=1;//
    char name[15];
    cout<<Rus("введи имя входн тип.файла")<<endl;
    cin>>name;
    ifstream intf(name, ios::binary);//что такое тут ios::binary?
    ptr=list;//
    while (!intf.eof()){
        intf.read(reinterpret_cast<char *>(&ptr->elfile),sizeof(lfile));// вот эту если можно подробней
            if(ptr->elfile.upd != NULL){//
                q=ptr;//
                ptr->next=new sp;//
                ptr=ptr->next;//
            }
    }
    q->next=NULL;//
    intf.close();
    return list;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//ввод списка с экрана
sp* fs_enter(){
    sp* list =new sp; //создаем указатель на голову списка
    sp *ptr;//указатель на элемент списка
    char name;
    cout<< Rus("Введиде имя, дату создания, кольчество обращений к файлу")<<endl;
    ptr=list;//
    while (true){
        cin>>ptr->elfile.name;
        cin>>ptr->elfile.data;
        cin>>ptr->elfile.upd;
        cout<<Rus("ещё (y/n)")<<endl;
        cin>>name;
        if(name=='n') break;
        ptr->next=new sp;
        ptr=ptr->next;
    }
    return list;
}
Добавлено через 1 час 1 минуту
helppppppppp

Добавлено через 37 минут
HELPP

Добавлено через 1 час 12 минут
люди ну помогите понять

Добавлено через 21 час 38 минут
люди ну помогите по двум функциям что выше понять как работают поставьте комменты
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2011, 14:28
Привет! Вот еще темы с ответами:

Формирование списка - C++
Начал учить Си недавно. ВРоде все идет более-менее нормально, но на списках я встал колом и не могу понять почему так происходит. Итак,...

Разработка консольного приложения средствами DevC++. Формирование пользовательского текстового меню - C++
на фото есть таблица с фамилиями... мне нужна работа Васильевой Анастасии, а конкретно написать код. Спасибо.

Формирование списка и работа с ним - C++
Задали написать программу на с++. Написал её, а точнее составил из разных кусков, которые были даны на семинаре. Программа работает, но ,к...

Формирование символьного двухсвязного списка - C++
нужна функция формирования символьного 2вусвязного списка!!! Хэлп!!!


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.10.2011, 14:28
Ответ Создать тему
Опции темы

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