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

Массивы. Только учусь. Выборка и сортировка - C++

Восстановить пароль Регистрация
 
HoTHa
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 6
07.12.2010, 21:28     Массивы. Только учусь. Выборка и сортировка #1
Задание такое.

Язык: C

Define использовать нельзя!!!
С клавиатуры вводятся слова разделенные пробелами.
На экран выводятся в порядке убывания все слова, состоящие только из арабских цифр.

Данные: N = 5
S = "ade5 543 3sa6 12 5796"

Результат: 5796 543 12

Заранее болшое СПАСИБООООО!!!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2010, 21:28     Массивы. Только учусь. Выборка и сортировка
Посмотрите здесь:

C++ Массивы, сортировка
C++ массивы сортировка
C++ Учусь c ++
Учусь умножать C++
C++ Динамические массивы и не только
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kenwood2010
48 / 59 / 7
Регистрация: 26.11.2010
Сообщений: 192
07.12.2010, 21:40     Массивы. Только учусь. Выборка и сортировка #2
не в обиду!
на твоем месте я бы ее решал сам!
много основ тут заложено без которых потом будет трудно.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
07.12.2010, 22:08     Массивы. Только учусь. Выборка и сортировка #3
HoTHa,
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 <string.h>
#include <ctype.h>
#include <stdlib.h>
 
#define MAXSIZE 256
 
void _sort(int m[], int _cnt)
{
    for(int i = _cnt - 1; i >= 1; --i)
    {
        for(int j = 0; j < i; ++j)
        {
            if(m[j] < m[j + 1])
            {
                int temp = m[j];
                m[j] = m[j + 1];
                m[j + 1] = temp;
            }
        }
    }
}
 
int main()
{
    char str[MAXSIZE];
    int j = 0, m[MAXSIZE], cnt = 0, _cnt = 0;
    printf("Enter str: ");
    gets(str);
    for(char *p = strtok(str, " "); p ; p = strtok(NULL, " "))
    {
        char *_p;
        for(int i = 0; i < strlen(p); ++i)
            if(isdigit(p[i]))
                ++cnt;
 
        if(cnt == strlen(p))
        {
            m[j] = atoi(p);
            ++j;
            ++_cnt;
        }
        cnt = 0;
    }
 
    _sort(m, _cnt);
 
    printf("\nNumbers: ");
    for(int i = 0; i < _cnt; ++i)
        printf("%d ", m[i]);
 
    return 0;
}
HoTHa
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 6
07.12.2010, 23:53  [ТС]     Массивы. Только учусь. Выборка и сортировка #4
Добавлено через 1 минуту
asics, Большое спасибо! Но почему то в этом ряду
C
1
for(int i = _cnt - 1; i >= 1; --i)
когда сохраняешь в C ошибка!
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
08.12.2010, 00:00     Массивы. Только учусь. Выборка и сортировка #5
HoTHa, у меня никакой ошыбки нет.Какой у тебя компилятор ?
HoTHa
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 6
08.12.2010, 00:11  [ТС]     Массивы. Только учусь. Выборка и сортировка #6
asics, dev c++ 4.9.9.2
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
08.12.2010, 00:16     Массивы. Только учусь. Выборка и сортировка #7
HoTHa, Незнаю, компили на dev c++ 4.9.9.2 - никаких ошыбок нет.Можэт вы что-то добавляете?Просто скопируйте код в редактор и скомпилируйте.
HoTHa
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 6
08.12.2010, 00:32  [ТС]     Массивы. Только учусь. Выборка и сортировка #8
asics, Я меняю некоторые вещи, например ++ ставлю после символа, еще вместо *p мы используем p[]. А ети элементы _cnt, cnt генерируются вначале произвольно, всмысле название?
strtok, atoi(p) для чего используется?

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
54
55
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <conio.h>
 
#define MAXSIZE 256
 
void _sort(int m[], int _cnt)
{
    for(int i = _cnt - 1; i >= 1; i--)
    {
        for(int j = 0; j < i; j++)
        {
            if(m[j] < m[j + 1])
            {
                int temp = m[j];
                m[j] = m[j + 1];
                m[j + 1] = temp;
            }
        }
    }
}
 
int main()
{
    char str[MAXSIZE];
    int j = 0, m[MAXSIZE], cnt = 0, _cnt = 0;
    printf("Sisesta tekstirida: ");
    gets(str);
    for(char p[] = strtok(str, " "); p ; p = strtok(NULL, " "))
    {
        char _p[];
        for(int i = 0; i < strlen(p); i++)
            if(isdigit(p[i]))
                cnt++;
 
        if(cnt == strlen(p))
        {
            m[j] = atoi(p);
            j++;
            _cnt++;
        }
        cnt = 0;
    }
 
    _sort(m, _cnt);
 
    printf("Araabia numbrid kahanevas jГ¤rjekorras: ");
    for(int i = 0; i < _cnt; i++)
        printf("%d ", m[i]);
 
    return 0;
    getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2010, 00:35     Массивы. Только учусь. Выборка и сортировка
Еще ссылки по теме:

C++ учусь разбирать чужой код
Учусь программированию на языке с++ самостоятельно C++
Вывести массивы номеров строк и столбцов, все элементы которых равны только 1 или только 0 C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
08.12.2010, 00:35     Массивы. Только учусь. Выборка и сортировка #9
strtok() - разбивает строку на лексемы.
atoi() - переобразовует строку в число.
Yandex
Объявления
08.12.2010, 00:35     Массивы. Только учусь. Выборка и сортировка
Ответ Создать тему
Опции темы

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