** Jeśli nie interesuje Cię podstawowa informacja wyjaśniająca moje rozumowanie, przejdź do samego dołu pod koniec mojego pytania.Ciągnięcie zestawów liczb z wiersza poleceń przy użyciu argv []
Mam zestaw równań wielomianowych muszę czytać w moim programie do wykonywania testów jednostkowych wielomianów takich jak
- podział syntetyczny
- Dodatek
- odejmowanie
- Skala
- Mnożenie
- Korzenie
, więc muszę mieć możliwość wprowadzania szerokiego zakresu liczb, aby przetestować funkcje używane w BRLCAD, chociaż mam problem wymyślanie skutecznego rozwiązania do czytania liczb. My obecnego podejścia:
względu na linii polecenia:
./unit_test sd 2 3 4 8 1 4 5
- sd - przeprowadza podział syntetyczny
- 2 - stopień pierwszy poli
- 3,4,8 - 3 x^2 + 4x + 8
- 1 - stopień drugiego poli
Pisanie algorytmu do odczytu zestawu liczb w tym formacie jest uciążliwe i dość mylące dla innych do zrozumienia, a ponadto muszę jeszcze wdrożyć dwa inne wielomiany do odczytywania jako odpowiedzi do porównania. (Ponieważ jest to plik open source, chciałbym, aby moja praca miała pewną przejrzystość).
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...);
}
Czy używając sscanf
być bardziej skuteczny, aby przeczytać w moim wielomianu danego maksymalny stopień jest ustawiony? Po napisaniu pierwszej metody myślałem o używaniu sscanf, ale nie jestem pewien, czy używanie go w taki sposób byłoby tego warte, w przeciwieństwie do pisania w dwóch więcej wielomianowych odczytach od góry:
Biorąc pod uwagę maksymalny stopień piec do wielomianu
./unit_test sd 2,0,0,2,4,5 1,0,0,0,2,3
- 2,0,0,2,4,5 - stopień 2, 0 x^4 + 0 x^3^2 + 2x + 4x + 5
Nie rozumiem, co jest nie tak ze sposobem, w jaki teraz to robisz. –
@jim balter: jest strasznie niechlujny i trudny w implementacji, pytam, czy użycie sscanf byłoby lepszym rozwiązaniem. –
scanf nie zrobi nic dla ciebie tutaj. –