Сортировка чисел в строке в порядке возрастания - 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;
}

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


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

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

13   голосов , оценка 4.231 из 5
Похожие ответы