X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fquick-cluster.c;h=68b50123144e2b0b10c19d494d2e4b02b32ac430;hb=0df9cdd3df66caf4353128feff3008289cda8115;hp=e6987f4b10b5db503a799b66665a796665407a17;hpb=ba1e1587fc7d5e6851a7eb9f9e8d7956dca0f936;p=pspp diff --git a/src/language/stats/quick-cluster.c b/src/language/stats/quick-cluster.c index e6987f4b10..68b5012314 100644 --- a/src/language/stats/quick-cluster.c +++ b/src/language/stats/quick-cluster.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011, 2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -390,11 +390,10 @@ static void quick_cluster_show_centers (struct Kmeans *kmeans, bool initial, const struct qc *qc) { struct tab_table *t; - int nc, nr, heading_columns, currow; + int nc, nr, currow; int i, j; nc = qc->ngroups + 1; nr = qc->n_vars + 4; - heading_columns = 1; t = tab_create (nc, nr); tab_headers (t, 0, nc - 1, 0, 1); currow = 0; @@ -433,14 +432,14 @@ quick_cluster_show_centers (struct Kmeans *kmeans, bool initial, const struct qc tab_double (t, i + 1, j + 4, TAB_CENTER, gsl_matrix_get (kmeans->centers, kmeans->group_order->data[i], j), - var_get_print_format (qc->vars[j])); + var_get_print_format (qc->vars[j]), RC_OTHER); } else { tab_double (t, i + 1, j + 4, TAB_CENTER, gsl_matrix_get (kmeans->initial_centers, kmeans->group_order->data[i], j), - var_get_print_format (qc->vars[j])); + var_get_print_format (qc->vars[j]), RC_OTHER); } } } @@ -549,6 +548,11 @@ cmd_quick_cluster (struct lexer *lexer, struct dataset *ds) { lex_force_int (lexer); qc.ngroups = lex_integer (lexer); + if (qc.ngroups <= 0) + { + lex_error (lexer, _("The number of clusters must be positive")); + goto error; + } lex_get (lexer); lex_force_match (lexer, T_RPAREN); } @@ -559,6 +563,11 @@ cmd_quick_cluster (struct lexer *lexer, struct dataset *ds) { lex_force_int (lexer); qc.maxiter = lex_integer (lexer); + if (qc.maxiter <= 0) + { + lex_error (lexer, _("The number of iterations must be positive")); + goto error; + } lex_get (lexer); lex_force_match (lexer, T_RPAREN); }