ฉันมี "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 ] ดังนั้นใครสามารถช่วยฉันแก้ไขปัญหานี้ได้บ้าง
คำถามอื่น: หลังจากเก็บสองคอลัมน์ด้านบนไว้ในอาร์เรย์ 2 ชุด 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