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

Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Inn
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
17.10.2010, 17:52     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #1
помогите пожайлуста с задачей.

Задан массив из k символов. Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные симво-лы. Взаимное расположение символов в каждой группе не должно изменяться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 17:52     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы
Посмотрите здесь:

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом все остальные C++
Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом - все остальные C++
C++ Преобразовать массив таким образом чтобы сначала располагались все элементы равные нулю а потом остальные
Вывести на экран сначала все цифры, входящие в текст, а затем все остальные литеры C++
C++ Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
17.10.2010, 18:24     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #2
Inn, вот и преобразуй. Ты хоть код выложи
Inn
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
17.10.2010, 20:14  [ТС]     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #3
что за код?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
17.10.2010, 20:15     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #4
Inn, Попыток своих.
Inn
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
17.10.2010, 21:16  [ТС]     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #5
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
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
int main()
{
int k,i,j=0,m=0;
char A[100],B[100],C[100];
 
cout<<"vvedite k:";
cin>>k;
 
for (i=0;i<k;i++)
{cout<<"vvedite elementy massiva:";
cin>>A[i];}
 
 
for (i=0;i<k;i++)
{
    if( A[i]>'0' && A[i]<'9') B[j++]=A[i];
    else C[m++]=A[i];
};
 
m=j=i=0;
while (j<k)
 
{
    A[i]=B[j]; i++; j++;
}
 
while (m<k)
 
{
    A[i]=C[m]; i++; m++;
}
 
for (i=0;i<k;i++)
cout<<A[i];
 
return 0;
}
Добавлено через 8 минут
в итоговом массиве криво отображаются символы
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
17.10.2010, 22:11     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #6
такое пойдет?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
int main()
{
    string s1("123{5+67;8");
    string res;
    res.clear();
 
    for (int i = 0; i <s1.size(); ++i)
        if (isdigit(s1[i]))
            res += s1[i];
 
    for (int i = 0; i <s1.size(); ++i)
        if (!isdigit(s1[i])){
            res += s1[i];
 
    cout << res;
 
    return 0;
}
Inn
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
17.10.2010, 22:16  [ТС]     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #7
PointsEqual,
спасибо, Вам,
но я только 1ый курс,
а ваша праграмма выходит за пределы того, что нам пока дают)
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
17.10.2010, 22:56     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #8
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
#include <iostream>
 
using namespace std;
 
int main()
{
    const int size = 31;
 
    char s[size]="12+;543+*";
    char res[size]={'\0'};
    char numb[11] = "0123456789";
    int pos = 0;
 
    for (int i = 0; i < size; ++i){
        for (int j = 0; j < 10; ++j)
            if (s[i] == numb[j]){
                res[pos] = s[i];
                ++pos;
                break;
            }
    }
 
 
    for (int i = 0; i < size; ++i){
        bool ok = false;
        for (int j = 0; j < 10; ++j){
            if (s[i] == numb[j]){
                ok = true;
                break;
            }
        }
        if (!ok){
                res[pos] = s[i];
                ++pos;
        }
    }
 
    cout<<res;
 
    return 0;
}
Inn
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
28.10.2010, 19:02  [ТС]     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #9
PointsEqual, спасибо
и всё равно это слишком..

Я не знаю почему, но в моей программе в конечном итоге, там где должы выводится символы, воводится .. нечто.
я не знаю где там ошибка
saserlend
10 / 10 / 1
Регистрация: 25.11.2011
Сообщений: 138
25.11.2011, 23:15     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #10
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
#include <iostream.h>
int main()
{
    int k,i,c,j=0,m=0,a=0;
    char A[100], B[100], C[100];
        cout<<"Vvedite k: ";
        cin>>k;
 
        for (i=0;i<k;i++)
            {
                cout<<"Vvedite elementy massiva: ";
                cin>>A[i];
            }
 
        for (i=0;i<k;i++)
            {
                if(A[i]>'0' && A[i]<'9') {B[j++]=A[i]; c=j;}    
                else C[m++]=A[i];
            };
 
        for (i=0;i<c;i++) {A[i]=B[i];}
        for (i=c;i<k;i++,a++) {A[i]=C[a];}
        for (i=0;i<k;i++) cout<<A[i];   
 
    return 0;
}
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
26.11.2011, 00:07     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #11
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
#include <stdio.h>
 
char *stable_partition(char *a, int (*pred)(char))
{
        int i, j;
        char t;
        
        for (i = 1, j = 0; a[i] != '\0'; i++)
                if (pred(a[j]))
                        j++;
                else if (pred(a[i])) {
                        t = a[i], a[i] = a[j], a[j] = t;
                        j++;
                }
    return a + j;
}
 
int myisdigit(char c)
{
    return c >= '0' && c <= '9';
}
 
int main()
{
    char s[] = "Pr0tect 11 the intern3t ! 8";
 
    stable_partition(s, myisdigit);
    printf("%s\n", s);       
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2011, 05:47     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы
Еще ссылки по теме:

C++ Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные.как доработать?
Вывести на экран сначала цифры, затем буквы, затем остальные символы исходной строки C++
Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.11.2011, 05:47     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы #12
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
#include <stdio.h>
#include <ctype.h>
 
char * digits_letters(char * str){
    char * p;
    for ( p = str; *p; ++p ){
        if ( ! isdigit(*p) ){
            char * t;
            for ( t = p + 1; *t && ! isdigit(*t); ++t )
                ;
            if ( *t == '\0' )
                break;
            while ( t > p ){
                char c = *t;
                *t = *(t-1);
                *(t-1) = c;
                --t;
            }
        }
    }
    
    return str;
}
 
int main(void){
    char str[BUFSIZ];
    
    while ( printf("String: ") && scanf("%[^\n]%*c", str) )
        printf("Result: %s\n", digits_letters(str));
    
    return 0;
}
Yandex
Объявления
26.11.2011, 05:47     Преобразовать массив следующим образом: сначала должны стоять цифры, входящие в массив, а затем все остальные символы
Ответ Создать тему
Опции темы

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