** Nếu bạn không quan tâm đến thông tin cơ bản, hãy giải thích lý do bỏ qua của tôi đến cuối cùng cho đến cuối câu hỏi của tôi.Kéo tập hợp các số từ dòng lệnh bằng argv []
Tôi có một tập hợp các phương trình đa thức tôi cần phải đọc vào chương trình của tôi để thực hiện kiểm tra đơn vị của đa thức như
- bộ phận tổng hợp
- Addition
- Trừ
- Scale
- Phép nhân
- Rễ
vì vậy tôi cần có khả năng nhập một loạt các số để kiểm tra các chức năng được sử dụng trong BRLCAD, mặc dù tôi đang gặp khó khăn khi đưa ra giải pháp hiệu quả để đọc bằng số. Cách tiếp cận hiện tại của tôi:
Với dòng lệnh:
./unit_test sd 2 3 4 8 1 4 5
- sd - thực hiện tổng hợp bộ phận
- 2 - mức độ của poly đầu tiên
- 3,4,8 - 3x^2 + 4x + 8
- 1 - mức độ của poly thứ hai
viết một thuật toán để đọc một tập hợp các số trong định dạng này là cồng kềnh và khá khó hiểu cho người khác để hiểu, cộng với tôi chưa thực hiện hai đa thức khác để được đọc như là câu trả lời để được so sánh. (Vì đây là một tệp nguồn mở, tôi muốn công việc của mình có tính minh bạch).
if(strcmp(argv[1],"sd") == 0){
poly_eqn1.dgr = atoi(argv[2]);
/* start at argv[3], run degree count plus one times */
for(counter = 0; counter < (eqn1.dgr + 1); counter++)
poly_eqn1.cf[counter] = atof(argv[counter+3]);
poly_eqn2.dgr = atoi(argv[4 + poly_eqn1.dgr]);
/* start at end of degree one counter */
for(counter = 0; counter < (dgr2 + 1); counter++)
poly_eqn2.cf[counter] = atof(argv[counter+5+dgr]);
/* grab the answer from end of data */
return test_synthetic(//input proper data...);
}
Sẽ sử dụng sscanf
có nhiều efficent để đọc trong đa thức của tôi được đưa ra một mức độ tối đa được thiết lập? Sau khi viết phương pháp ban đầu tôi nghĩ về việc sử dụng sscanf, nhưng tôi không chắc chắn nếu sử dụng nó theo cách như vậy sẽ có giá trị nó như trái ngược với viết trong hai đa thức hơn đọc trong từ trên cao:
Với mức độ tối đa là bốn cho một đa thức
./unit_test sd 2,0,0,2,4,5 1,0,0,0,2,3
- 2,0,0,2,4,5 - mức độ 2, 0x^4 + 0x^3 + 2x^2 + 4x + 5
Tôi không hiểu điều gì đang xảy ra với cách bạn đang thực hiện ngay bây giờ. –
@jim balter: nó cực kỳ lộn xộn và khó thực hiện, tôi hỏi nếu sử dụng sscanf sẽ là một lựa chọn tốt hơn để chuyển sang. –
scanf sẽ không làm bất cứ điều gì cho bạn ở đây. –