Сортировка чисел в строке в порядке возрастания - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д