Сортировка чисел в строке в порядке возрастания - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вот код:
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. int main()
  5. {
  6. int p = 0;
  7. int k=0;
  8. char str[]="54 -6 23 -56 27 -15 17 -23 0 -5 6 0 24 -11 82 -90 43 -31";
  9. printf("Iskhodnaya posl. chisel\n");
  10. printf("%s", str);
  11. int l=strlen(str);
  12. int i, j;
  13. for (i = 0; i < l; ++i) {
  14. for (j = l - 1; j > i; j--)
  15. {
  16. if (strchr("1234567890 -", str[j])) {
  17. int t = str[j - 1];
  18. str[j - 1] = str[j];
  19. str[j] = t;
  20. }
  21. }
  22. }
  23. printf("\nKonechnaya posl. chisel\n");
  24. printf("%s", str);
  25. printf("\n");
  26. return 0;
  27. }
Исправьте, пожалуйста, часть кода. Срочно! Выдается вот какой результат:

Решение задачи: «Сортировка чисел в строке в порядке возрастания»

textual
Листинг программы
  1. /* ANSI C 99 */
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #include <glib.h>
  7.  
  8. gint key_cmp(gconstpointer a, gconstpointer b) {
  9.     return GPOINTER_TO_INT(a) - GPOINTER_TO_INT(b);
  10. }
  11.  
  12. gboolean tree_to_string(gpointer key, gpointer value, gpointer data) {
  13.     int nKey = GPOINTER_TO_INT(key);
  14.     int nValue = GPOINTER_TO_INT(value);
  15.     GString * sData = (GString*)data;
  16.    
  17.     for ( int i = 0; i < nValue; ++i )
  18.         g_string_append_printf(sData, "%d ", nKey);
  19.    
  20.     return FALSE;
  21. }
  22.  
  23. #define DELIM " \t\n"
  24.  
  25. int main(void) {
  26.     char buf[BUFSIZ];
  27.    
  28.     while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
  29.         GTree * tree = g_tree_new(key_cmp);
  30.        
  31.         for ( char * tok = strtok(buf, DELIM); tok; tok = strtok(NULL, DELIM) ) {
  32.             int n = atoi(tok);
  33.             g_tree_insert(tree, GINT_TO_POINTER(n), GINT_TO_POINTER(GPOINTER_TO_INT(g_tree_lookup(tree, GINT_TO_POINTER(n))) + 1));
  34.         }
  35.        
  36.         GString * str = g_string_new("");
  37.         g_tree_foreach(tree, tree_to_string, str);
  38.         printf("Result: %s\n", str->str);
  39.        
  40.         g_tree_destroy(tree);
  41.         g_string_free(str, TRUE);
  42.     }
  43.    
  44.     return 0;
  45. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы