Цей шматочок коду написаний завдяки ресурсу: http://www.cplusplus.com/doc/tutorial/files/.
Він відкриває файл і видаляє наявний зміст. Перезаписує в файл ввід користувача. Потім читає із файлу дані і записує їх в змінні.
Якщо можна, покажіть, будь ласка, Ваш input_file.
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#define INT_MAX 10
using namespace std;
struct point {
double x;
double y;
};
int main () {
int i;
double c, n, e;
double cost[10][10];
string line;
point arc_start, arc_end;
// Створюємо файл
std::ofstream outfile ("input_file.txt", ios::trunc);
outfile.close();
// Відкриваємо файл для запису
fstream infile;
infile.open("input_file.txt");
if ( !(infile.is_open()) ){
std::cout << "Cannot open file" << endl;
return -1;
}
// Читаємо ряд вузлів і ребер
cout << "Введіть, будь ласка дані.\n";
cout << "Кількість вузлів.\n";
do {
cout << "n = ";
cin >> line;
n = atof(line.c_str());
} while (n < 0 || n > 10);
cout << "Кількість дуг.\n";
do {
cout << "e = ";
cin >> line;
e = atof(line.c_str());
} while (e < 0 || e > 10);
// Запис у файл
infile << n << ' ' << e << endl;
cout << "Початок дуги.\n";
do {
cout << "arc_start.x = ";
cin >> line;
arc_start.x = atof(line.c_str());
cout << "arc_start.y = ";
cin >> line;
arc_start.y = atof(line.c_str());
} while ( (arc_start.x < 0 || arc_start.x > 10)
&& (arc_start.y < 0 || arc_start.y > 10) );
cout << "Кінець дуги.\n";
do {
cout << "arc_end.x = ";
cin >> line;
arc_end.x = atof(line.c_str());
cout << "arc_end.y = ";
cin >> line;
arc_end.y = atof(line.c_str());
} while ( (arc_end.x < 0 || arc_end.x > 10)
&& (arc_end.y < 0 || arc_end.y > 10) );
cout << "Пропускна спроможність.\n";
do {
cout << "c = ";
cin >> line;
c = atof(line.c_str());
} while (c < 0 || c > 10);
infile << arc_start.x << ' ' << arc_start.y << endl;
infile << arc_end.x << ' ' << arc_end.y << endl;
infile << c << endl;
cout << "n - кiлькiсть вузлiв, е - кiлькiсть дуг." << endl;
cout << "a - початок дуги, b - кiнець дуги, с - пропускна спроможнiсть." << endl;
// Переносимо каретку на початок файлу
infile.close();
infile.open("input_file.txt", ios::in);
if (infile.is_open())
{
infile >> n >> e;
cout << "n = " << n << endl;
cout << "e = " << e << endl;
infile >> arc_start.x >> arc_start.y;
infile >> arc_end.x >> arc_end.y;
cout << "a = (" << arc_start.x << "; " << arc_start.y << ")" << endl;
cout << "b = (" << arc_end.x << "; " << arc_end.y << ")" << endl;
infile >> c;
cout << "c = " << c << endl;
}
// Ініціалізуємо матрицю з величезними вагами дуг
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
cost[i][j] = INT_MAX;
}
}
infile.close();
}
Вивід програми:
▼Прихований текст
Введіть, будь ласка дані.
Кількість вузлів.
n = 1
Кількість дуг.
e = 2
Початок дуги.
arc_start.x = 3
arc_start.y = 4
Кінець дуги.
arc_end.x = 5
arc_end.y = 6
Пропускна спроможність.
c = 7
n - кiлькiсть вузлiв, е - кiлькiсть дуг.
a - початок дуги, b - кiнець дуги, с - пропускна спроможнiсть.
n = 1
e = 2
a = (3; 4)
b = (5; 6)
c = 7
RUN FINISHED; exit value 0; real time: 6s; user: 0ms; system: 0ms