Saya memiliki "Temp.dat" dengan 200 baris yang terlihat seperti ini:
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
Saya mencoba membaca setiap baris dan menyimpan setiap kolom data ke dalam array terpisah dengan kode berikut:
#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);
}
Saat saya mencoba mencetak hasilnya, hasilnya 1 13258992
, bukan 0.165453 0
. Saya tidak mengerti dari mana ia mendapatkan pasangan 1 13258992
, karena saya pikir baris fscanf(file, "%d %d", &a, &b) == 2
melakukan apa yang seharusnya dilakukan: menelusuri setiap baris file Temp.dat
dan membaca dua bilangan bulat double-type
, kemudian disimpan dalam dua array x[MAX]
dan `y[MAX ]. Oleh karena itu, adakah yang bisa membantu saya memperbaiki masalah ini?
Pertanyaan lain: Setelah menyimpan dua kolom di atas dalam dua larik x[MAX]
dan y[MAX]
, saya ingin mengurutkan kedua larik tersebut dalam urutan menaik berdasarkan nilai pada larik pertama x[MAX]
. Ini akan terlihat seperti:
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
Bagaimana saya bisa melakukan rutinitas sorting
ini di C, karena cukup sulit untuk mengatur elemen di y[MAX]
mengikuti urutan elemen terkait di x[MAX]
?
while
, dan mengubah%d
menjadi%lf
, tetapi hasilnya masih salah. Sekarang ini memberi saya-1 34902256
untukx[4] y[1]
yang sama. Bisakah Anda memberi saya beberapa petunjuk tentang cara mengurutkan array kedua saat saya menukar setiap elemen dari array pertama? - person user177196   schedule 19.02.2018printf
. Lihat jawaban saya. - person Pablo   schedule 19.02.2018