Форум программистов, компьютерный форум CyberForum.ru

Упорядочить целые числа в строке по возрастанию. - C++

Восстановить пароль Регистрация
 
den790
 Аватар для den790
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 40
12.12.2010, 18:10     Упорядочить целые числа в строке по возрастанию. #1
Помогите пожалуйста с задачей на СИ: Задана строка, содержащая целые числа (максимум 15 чисел). Упорядочить числа в строке по возрастанию. При реализации программы необходимо использовать функции для обработки строк.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2010, 18:10     Упорядочить целые числа в строке по возрастанию.
Посмотрите здесь:

C++ Упорядочить строки матрицы по возрастанию количества заданных символов в каждой строке
C++ Занести в бинарный файл h из текстового файла t целые числа, упорядоченные по возрастанию
Упорядочить целые числа в строке по убыванию C++
C++ Задана строка, содержащая целые числа (максимум 15 чисел). Упорядочить целые числа в строке по убыванию.
дано 3 числа. упорядочить их по возрастанию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Просто Это Я
 Аватар для Просто Это Я
7 / 7 / 0
Регистрация: 12.12.2010
Сообщений: 14
12.12.2010, 18:20     Упорядочить целые числа в строке по возрастанию. #2
если с функциями, то можно, перевести строку в число типа long. (если что,можно сначала разбить её на несколько строк). Затем из этого числа можно выделять и сравнивать цифры, строить их по порядку в виде другого числа. А его потом перевести в строку. как-то так... (не факт, что это самый лучший вариант)
den790
 Аватар для den790
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 40
12.12.2010, 18:32  [ТС]     Упорядочить целые числа в строке по возрастанию. #3
Просто Это Я, как-то сложновато получается. помогите с реализацией
Просто Это Я
 Аватар для Просто Это Я
7 / 7 / 0
Регистрация: 12.12.2010
Сообщений: 14
12.12.2010, 18:41     Упорядочить целые числа в строке по возрастанию. #4
реализуем это с помощью следующей ф-и:
long atol (const char *str) - преобразует троку str в целое число типа long (честно говоря, сама с ней пока не работала - так что придётся экспериментировать))
далее полученное число в цикле делим , скажем, на 10) и остаток от деления заносим в массив.
Далее массив сортируем по возрастанию. Потом этот массиб преобразуем в число.
Ну, и собственно, последнее - переводим число обратно с троку : char *ltoa(long value, char *str, int radix) - преобразует длинно целое число value в строку Str.
Напоминаю, что не уверена в эффективности данных методов)
den790
 Аватар для den790
0 / 0 / 0
Регистрация: 21.02.2010
Сообщений: 40
12.12.2010, 19:52  [ТС]     Упорядочить целые числа в строке по возрастанию. #5
помогите, не получается что-то
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.12.2010, 20:48     Упорядочить целые числа в строке по возрастанию. #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
 
int split_n(const char * str, int * arr, int size, const char * delim){
    char * buf, * p, * tail;
    int cnt;
    long val;
    
    if ( ( buf = strdup(str) ) == NULL ){
        perror("strdup");
        return -1;
    }
    for ( cnt = 0, p = strtok(buf, delim); p && cnt < size; ++cnt, p = strtok(NULL, delim) ){
        errno = 0;
        val = strtol(p, &tail, 10);
        if ( errno || *tail ){
            free(buf);
            return -1;
        }
        arr[cnt] = (int)val;
    }
    
    free(buf);
    return cnt;
}
 
int asc_cmp(const void * a, const void * b){
    return *(int*)a - *(int*)b;
}
 
#define MAX_NUMBERS 15
#define DELIM " \t\n"
 
int main(void){
    int arr[MAX_NUMBERS], cnt, i;
    char buf[BUFSIZ];
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ){
        if ( ( cnt = split_n(buf, arr, MAX_NUMBERS, DELIM) ) < 1 ){
            fprintf(stderr, "Error while parsing string!\n");
            exit(1);
        }
        qsort(arr, cnt, sizeof(int), asc_cmp);
        printf("Sorted: ");
        for ( i = 0; i < cnt; ++i )
            printf("%d ", arr[i]);
        printf("\n");
    }
    
    exit(0);
}
Yandex
Объявления
12.12.2010, 20:48     Упорядочить целые числа в строке по возрастанию.
Ответ Создать тему
Опции темы

Текущее время: 04:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru