Сортировка чисел в строке в порядке возрастания - C (СИ)
Формулировка задачи:
Вот код:
Исправьте, пожалуйста, часть кода. Срочно!
Выдается вот какой результат:
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- int main()
- {
- int p = 0;
- int k=0;
- char str[]="54 -6 23 -56 27 -15 17 -23 0 -5 6 0 24 -11 82 -90 43 -31";
- printf("Iskhodnaya posl. chisel\n");
- printf("%s", str);
- int l=strlen(str);
- int i, j;
- for (i = 0; i < l; ++i) {
- for (j = l - 1; j > i; j--)
- {
- if (strchr("1234567890 -", str[j])) {
- int t = str[j - 1];
- str[j - 1] = str[j];
- str[j] = t;
- }
- }
- }
- printf("\nKonechnaya posl. chisel\n");
- printf("%s", str);
- printf("\n");
- return 0;
- }
Решение задачи: «Сортировка чисел в строке в порядке возрастания»
textual
Листинг программы
- /* ANSI C 99 */
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <glib.h>
- gint key_cmp(gconstpointer a, gconstpointer b) {
- return GPOINTER_TO_INT(a) - GPOINTER_TO_INT(b);
- }
- gboolean tree_to_string(gpointer key, gpointer value, gpointer data) {
- int nKey = GPOINTER_TO_INT(key);
- int nValue = GPOINTER_TO_INT(value);
- GString * sData = (GString*)data;
- for ( int i = 0; i < nValue; ++i )
- g_string_append_printf(sData, "%d ", nKey);
- return FALSE;
- }
- #define DELIM " \t\n"
- int main(void) {
- char buf[BUFSIZ];
- while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
- GTree * tree = g_tree_new(key_cmp);
- for ( char * tok = strtok(buf, DELIM); tok; tok = strtok(NULL, DELIM) ) {
- int n = atoi(tok);
- g_tree_insert(tree, GINT_TO_POINTER(n), GINT_TO_POINTER(GPOINTER_TO_INT(g_tree_lookup(tree, GINT_TO_POINTER(n))) + 1));
- }
- GString * str = g_string_new("");
- g_tree_foreach(tree, tree_to_string, str);
- printf("Result: %s\n", str->str);
- g_tree_destroy(tree);
- g_string_free(str, TRUE);
- }
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д