0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 17
1

Необходимо создать связной список с записью в файл и восстановлением из файла

13.03.2014, 12:40. Показов 1276. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ выручайте. В задании необходимо создать связной список с записью в файл и восстановлением из файла. Со списком я более-менее разобрался, но я не пойму по КАКОМУ принципу происходит чтение/запись и каким образом это прикрутить. Подскажите зашиваюсь времени в обрез.
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
#include <iostream>
#include <stdio.h>
#include <string>
#include <locale>
 
 
using namespace std;
 
class STATE
{
    public:
    char countryName [128];
    char countryCapital [128];
    char countryLang [128];
    char countryPolitical [128];
    char countryMoney [128];
    char countryPopulation [128];
    char countryArea [128];
    char moneyTodollar [128];
 
    STATE* eNext;               // указатель на следующий элемент
};
 
STATE* eFirst=0;            //в начале список пуст
 
void addLast (STATE* eLast)     //функция добавления в конец списка
{
    
    eLast -> eNext=0;            // переходим на следующий элемент
    if (eFirst == 0)            // если первый элемент равен 0 (список пуст)
    {
        eFirst = eLast;         //присваеваем указателю на 1й элемент, значение на текущий элемент
        return;
    }
    
    STATE* eCurrent = eFirst;           // иначе задаем временный указатель на начало
    while (eCurrent -> eNext)           // пока не дойдем до последнего элемента
    {
        eCurrent = eCurrent -> eNext;            // цикл перехода с текущего на следующий элемент
    }
    eCurrent -> eNext = eLast;            //для последнего элемента следующим делаем тот, что передали в функцию
}
 
 
STATE* getData ()                          // функция возврата указателя на элемент для добавления
{
    
    STATE* eLast = new STATE;           //создаем новый элемент
    
    cout << "Название страны - " ;
    cin >> eLast -> countryName;
    
        if ((stricmp (eLast -> countryName, "end") == 0))           // при вводе "end"
        {                                                           
            delete eLast;                                          // удаляем элемент
            return 0;
        }
 
    cout << "Столица - ";                             // ВВОД ДАННЫХ В СПИСОК                      
    cin >> eLast -> countryCapital;
    
    cout << "Язык - ";
    cin >> eLast -> countryLang;
    
    cout << "Госстрой - ";
    cin >> eLast -> countryPolitical;
    
    cout << "Денежная единица - ";
    cin >> eLast -> countryMoney;
    
    cout << "Численность наседения млн.чел.- ";
    cin >> eLast -> countryPopulation;
    
    cout << "Площадь территории кв.км.- ";
    cin >> eLast -> countryArea;
    
    cout << "Курс валют за 1$ - ";
    cin >> eLast -> moneyTodollar;    
    
    eLast -> eNext = 0;              // данных больше нет
    return eLast;
}
 
 
 
void showData (STATE* eLast)            // функция вывода данных на экран
{
 
    cout << eLast -> countryCapital
         <<"/ "
         << eLast -> countryLang 
         <<"/ "
         << eLast -> countryPolitical 
         <<"/ "
         << eLast -> countryMoney
         <<"/ "
         << eLast -> countryPopulation
         <<"/ "
         << eLast -> countryArea
         <<"/ "
         << eLast -> moneyTodollar
         <<" for 1$/" << endl;
}
 
int main (int argc, char* eArgc[])
{
    
    setlocale (LC_ALL, "Russian");
 
    cout << "Enter data" << endl 
         << "Enter 'end' for close" <<"\n \n" << endl;
         
    STATE* eLast;                               // указатель на элемент списка
    while (eLast = getData())               // пока не будет введена команда "end"
    {
        addLast (eLast);                    // добавление элементов в конец списка
    }
    cout << "ГОСУДАРСТВО:" <<"\n"<< endl;
    eLast = eFirst;                       // определяем начало списка
    while (eLast)
    {
        showData (eLast);               // вывод содержимого списка по полям каждого элемента
        eLast = eLast -> eNext;         // переход на следующий элемент
    }
    system ("PAUSE");
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2014, 12:40
Ответы с готовыми решениями:

Создать связной список с добавлением числа перед заданным
Помогите пожалуйста Мне нужно зделать связной список с додаванием числа перед заданым есть исходник. type spusok = record ...

Перед выполнением задания необходимо создать в рабочей папке файл SIMP.FOR. Создать командный файл с именем _E
Перед выполнением задания необходимо создать в рабочей папке файл SIMP.FOR. Создать командный файл с именем _EXIST.BAT, выполняющий...

Необходимо создать список, элемент которого может быть список
Всем доброго времени суток! Стоит следующая задача: необходимо создать список, элемент которого может быть список (да да, звучит...

3
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
13.03.2014, 13:09 2
C++
1
2
#include <ifstream>
#include <fstream>
Дальше..
C++
1
2
3
4
5
6
int main() {
 
ifstream input; // инпут функция.
ofstream output; // оутпут функция.
input.open("file.txt");
output.open("output.txt");
чтение из файла:

C++
1
2
3
4
5
6
7
8
9
10
int NUM_OF_FILE = 0;
 
while(!input.eof()) {
string str;
getline(input, str);
//NUM_OF_FILE++; // подсчитать кол-во чисел в файле
//cout << str << endl; // показать инпут дату(прямо в консоли)
//output << str << endl; // отпутить данные из файла в output.txt
}
// cout << NUM_OF_FILE << endl; // показать кол-во чисел в файле.
C++
1
 }
1
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 17
15.03.2014, 15:09  [ТС] 3
Esecman, спс за наводку. По самим командам вроде как все понятно, понятно как написать две програмки одну для чтения, другую для записи файла. Но я не пойму как прикрутить чтение/запись файла в свою программу. По какому принципу?
Т.е. допустим для записи данных в файл после строки
C++
1
cin >>  eLast -> countryName;
добавить
C++
1
input >> countryName;
Или я неправильно понял?
0
39 / 27 / 12
Регистрация: 31.12.2013
Сообщений: 329
15.03.2014, 20:27 4
Лучший ответ Сообщение было отмечено SARS как решение

Решение

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
void read_file() {
       
  ofstream output;
  output.open("output.txt"); // êóäà îóòïóòèòü
  FILE* file;
  file = fopen("data.txt", "r"); // ÷òåíèå, ôëàã "r"
  float i = 0;
  int NUM_OF_FILE = 0;
  
  if(!file) {
  perror("File not found!");
  }
  else {
  while(!feof(file)) {
  fscanf(file, "%f", &i);
  NUM_OF_FILE++;
  cout << i << endl; // ÷òåíèå èç ôàéëà è âûâîä
  output << i << endl; // îóòïóòèì ýòîò âûâîä â ôàéë output.txt
  }
  cout << "The number of integers in the file is " << NUM_OF_FILE << endl; // ïîêàçàòü êîëè÷åñòâî ÷èñåë â ôàéëå(input);
  }  
}
 
int main () {
 
  read_file();
  system("pause");
  return 0;
}
Добавлено через 5 минут
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
void read_file() {
       
  ifstream input;
  ofstream output;
  
  input.open("data.txt"); // âõîä
  output.open("output.txt"); // êóäà îóòïóòèòü
  
  int i = 0;
  float n[i];
  int NUM_OF_FILE = 0;
  
  if(!input) {
  perror("File not found!");
  }
  
  else {
       
  while(!input.eof()) {
  input >> n[i];
  output << n[i] << endl;
  NUM_OF_FILE++;
  }
  
  }
  
  cout << "The number of integers in the file is " << NUM_OF_FILE << endl;
}
 
int main () {
 
  read_file();
  system("pause");
  return 0;
}
Или вот этот пример, немного меньше кода, тут вариант записи в массив и оутпут
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2014, 20:27
Помогаю со студенческими работами здесь

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

Создать новый текстовый файл, содержащий список ip без повторений из исходного файла
Дан текстовый файл со статистикой посещения сайта за неделю. Имеется 10 строк(10 посещений). Каждая строчка содержит ip адрес, время и...

Создать скрипт с записью данных в файл
Привет всем! Помогите разобораться Необходимо: Создать скрипт, который находит все файлы в указанной директории, имя которых...

Связной список в Си++
Помогите организовать связной список. Здание:Организовать связной список, хранящий фамилии по алфовиту и оклады 10-ти сотрудников отдела....

Связной список
Вывод не работает, помогите найти проблему и можно как-нибудь через freopen осуществить ввод? #include&lt;iostream&gt; #include...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Protobuf в Go и новый Opaque API
golander 15.03.2025
Распределенные системы опираются на эффективные протоколы обмена данными — о чем вы, скорее всего, прекрасно знаете, если работаете с микросервисной архитектурой. Protocol Buffers (Protobuf) от. . .
Преобразование строк в C++: std::from_chars от C++17 до C++26
NullReferenced 15.03.2025
Конвертация строк в числа — задача, с которой сталкивается практически каждый C++ разработчик. Несмотря на кажущуюся простоту, эта операция таит множество подводных камней и неочевидных последствий. . .
Управление памятью в Java и новые сборщики мусора
Javaican 15.03.2025
Эффективное управление памятью всегда было ахиллесовой пятой высоконагруженных Java-приложений. При разработке на Java мы обычно полагаемся на автоматическое управление памятью через сборщики мусора. . .
Angular или Svelte - что выбрать?
Reangularity 15.03.2025
Во фронтенд-разработке Angular и Svelte представляют собой два совершенно разных подхода к решению схожих задач. Один — полноценный, мощный монолит с корпоративной поддержкой, другой — компактный,. . .
Spring Cloud микросервисы: обнаружение и отслеживание
Javaican 15.03.2025
В разработке корпоративных приложений всё больше команд обращают внимание на микросервисную архитектуру. Но с этой архитектурой приходят и специфичные трудности: как сервисам находить друг друга в. . .
Запуск контейнера Docker в облаке
Mr. Docker 15.03.2025
Что такое Docker-контейнер? Если коротко — это легковесный, автономный пакет, содержащий всё необходимое для запуска приложения: код, зависимости, библиотеки и конфигурации. Когда мы говорим о. . .
Осваиваем Kubernetes: Подробная шпаргалка
Mr. Docker 15.03.2025
Kubernetes — это открытая платформа для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями. Он был создан для решения проблем, с которыми сталкиваются. . .
Лучшие PHP REST API фреймворки
Jason-Webb 15.03.2025
Современные PHP REST API фреймворки предлагают большой набор функциональности: от автоматической валидации данных и управления маршрутизацией до генерации документации и интеграции с различными. . .
Многопоточность в Java с Project Loom: виртуальные или обычные потоки
Javaican 15.03.2025
Многопоточность всегда была одноим из основных элементов в разработке современного программного обеспечения. Она позволяет приложениям обрабатывать несколько задач одновременно, что критично для. . .
Что нового в Swift 6 и особенности миграции
mobDevWorks 15.03.2025
Swift 6 — это новый крупный релиз языка программирования от Apple, анонсированный на WWDC 2024. Если вы следили за эволюцией Swift, то наверняка заметили, что многие значимые возможности, которые. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru