У меня есть «Temp.dat» с 200 строками, который выглядит так:
0.060493 1 0.5 1
1.596961 0 0.1 2
0.87758 1 0.3 1.5
0.165453 1 0 3
0.07085 1 0.3 4
0.125379 1 0.2 3
0.454202 1 0.2 2
0.373227 1 0.3 1
0.131486 1 0.3 3
0.867477 0 0.5 4
0.122609 0 0.8 9
Я пытаюсь прочитать каждую строку и сохранить каждый столбец данных в отдельные массивы со следующим кодом:
#include <stdio.h>
#include <stdlib.h>
#define MAX 200
int main(){
double x[MAX], y[MAX];
double a, b;
int m = 0;
FILE* file;
file = fopen("Temp.dat", "r");
if ( file != NULL ){
/* Read the two columns. */
while(fscanf(file, "%d %d", &a, &b) == 2)
{ x[m] = a;
y[m] = b;
m++;
}
}
printf("%d %d\n", x[4], y[1]); # Test the stored inputs of the two arrays
return(0);
}
Когда я попытался распечатать результат, он дал 1 13258992
, а не 0.165453 0
. Я не могу понять, откуда взялась пара 1 13258992
, так как я думал, что строка fscanf(file, "%d %d", &a, &b) == 2
делала то, что должна была делать: просматривала каждую строку файла Temp.dat
и считывала два целых числа double-type
, которые затем сохранялись в двух массивах x[MAX]
и `y[MAX ]. Поэтому, может ли кто-нибудь помочь мне решить эту проблему?
Другой вопрос: после сохранения двух столбцов выше в двух массивах x[MAX]
и y[MAX]
я хотел бы отсортировать два массива в порядке возрастания на основе значений в первом массиве x[MAX]
. Это будет выглядеть так:
0.060493 1
0.07085 1
0.122609 0
0.125379 1
0.131486 1
0.165453 1
0.373227 1
0.454202 1
0.867477 0
Как я мог сделать эту процедуру sorting
в C, поскольку довольно сложно расположить элементы в y[MAX]
так, чтобы они следовали порядку соответствующих им элементов в x[MAX]
?
while
и изменил%d
на%lf
, но результат все равно неверный. Теперь он дал мне-1 34902256
за те жеx[4] y[1]
. Не могли бы вы дать мне несколько советов о том, как сортировать второй массив, пока я меняю местами каждый элемент первого массива? - person user177196   schedule 19.02.2018printf
. Смотрите мой ответ. - person Pablo   schedule 19.02.2018