Я делаю код для USACO, но чтение и запись файлов не работает. Я пытаюсь прочитать первую строку файла и сохранить его как целое число. Последующие строки будут прочитаны и сохранены в массив для выполнения вычислений. Я думаю, что проблема как-то связана с fopen. Я всегда получаю окно отмены, и оно говорит stream.valid ()
Вот код
_
__________________
// USACO MARATHON.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"#include "stdio.h"#include "stdlib.h"
int main()
{
FILE *infp;
FILE *outfp;
int num_points = 0;
int x[] = { 0 };
int y[] = { 0 };
int total_dist = 0;
int i;
infp = fopen("C:\\Users\\jalen\\documents\\visual studio 2017\\Project\\real_marathon\\real_marathon\\Debug\\marathon.in", "r");
outfp = fopen("marathon.out", "w");
/*if ((infp = fopen("marathon.in", "r")) != NULL)
{
fscanf(infp, "%d", num_points);
}*/
num_points = fgetc(infp);
for (i = 0; i < num_points; i++)
{
fscanf(infp, "%d %d", &x[i], &y[i]);
}
for (i = 1; i < num_points; i++)
{
int total_distance = abs((x[i] - x[i - 1])) + abs((y[i] - y[i - 1]));
}
int max_skip = 0;
for (i = 1; i < num_points - 1; i++)
{
int dont_skip = abs((x[i + 1] - x[i])) + abs((x[i] - x[i - 1])) + abs((y[i + 1] - y[i])) + abs((y[i] - y[i - 1]));
int skip = abs((x[i + 1] - x[i - 1])) + abs((y[i + 1] - y[i - 1]));
int z = dont_skip - skip;
max_skip = z;
}
int output = total_dist - max_skip;
fprintf(outfp, "%d\n", output);
fclose(infp);
fclose(outfp);
return 0;
}
Я бы порекомендовал использовать ofstream и ifstream:
Там, где в моем коде написано «имя файла», замените его на имя файла, указанное в описании проблемы USACO. fin
а также fout
аналогичны cin
а также cout
Кроме этого fin
а также fout
читать и распечатывать файлы ввода / вывода.
#include <fstream>
using namespace std;
ofstream fout("filename.out");
ifstream fin("filename.in");
int main()
{
int N;
fin >> N;
fout << N << endl;
}
Других решений пока нет …