Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631

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

22.10.2011, 16:25. Показов 3490. Ответов 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.10.2011, 16:25
Ответы с готовыми решениями:

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

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

Формирование упорядоченного списка юбиляров (из текстового файла)
Написать программу формирования упорядоченного списка юбиляров. Список юбиляров дан в текстовом файле. Помогите мне пожалуйста:(

4
 Аватар для aeshes
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
22.10.2011, 16:53
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

ответила, что смогла

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
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
22.10.2011, 16:56  [ТС]
Цитата Сообщение от 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
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
22.10.2011, 17:07
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
24.10.2011, 14:28  [ТС]
спасибо большое

Добавлено через 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2011, 14:28
Помогаю со студенческими работами здесь

Формирование текстового файла из n строк
Всем здрасте помоги решить ! Разработать программу формирования текстового файла из n строк, в первой из которых 1 символ 1 во второй...

Формирование нового текстового файла из данного
Дано текстовый файл f1. Разработать программу с процедурой P(f1,f2), которая, игнорируя начальное деление файла f1 на строки, формирует...

Формирование отчета из текстового файла в Excel
Здравствуйте уважаемые форумчане, мне попался файл в котором формируется отчет в книге екселя из сплошного текста и переносится в другую...

Формирование контроллов по данным из текстового файла
всем доброго времени суток. сразу оговорюсь, в C# я полный новичек, поэтому просьба выражаться более понятным языком:) Ну и сразу вопрос....

Формирование векторов из строк текстового файла
Помогите, пожалуйста. Есть текстовый файл, каждая строка которого - целые числа, разделенные пробелами. Количество чисел в каждой...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru