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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Inn
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
#1

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

17.10.2010, 17:52. Просмотров 2717. Ответов 11
Метки нет (Все метки)

помогите пожайлуста с задачей.

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

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

Преобразовать массив: сначала элементы больше заданного числа f, а затем - все остальные - C++
Всем привет, помогите пожалуйста добить лабу: нужно преобразовать массив так, чтобы сначала шли элементы больше заданного числа f, а затем...

Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные - C++
#include <iostream> #include <stdlib.h> #include <time.h> #include <cmath> using namespace std; void float1(double...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом - все остальные - C++
Помогите, пожалуйста. как составить код в с++. Дан целочисленный массив размера N. Преобразовать массив таким образом, чтобы сначала...

Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные.как доработать? - C++
#include <iostream> #include <stdlib.h> #include <time.h> #include <cmath> using namespace std; void float1(double...

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом все остальные - C++
привет всем) никак не могу придумать влгоритм для куска задачи: преобразовать массив таким образом, чтобы сначала располагались все...

11
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
17.10.2010, 18:24 #2
Inn, вот и преобразуй. Ты хоть код выложи
0
Inn
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
17.10.2010, 20:14  [ТС] #3
что за код?
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
17.10.2010, 20:15 #4
Inn, Попыток своих.
0
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 минут
в итоговом массиве криво отображаются символы
0
PointsEqual
ниначмуроФ
836 / 520 / 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;
}
1
Inn
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
17.10.2010, 22:16  [ТС] #7
PointsEqual,
спасибо, Вам,
но я только 1ый курс,
а ваша праграмма выходит за пределы того, что нам пока дают)
0
PointsEqual
ниначмуроФ
836 / 520 / 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;
}
1
Inn
0 / 0 / 0
Регистрация: 17.10.2010
Сообщений: 6
28.10.2010, 19:02  [ТС] #9
PointsEqual, спасибо
и всё равно это слишком..

Я не знаю почему, но в моей программе в конечном итоге, там где должы выводится символы, воводится .. нечто.
я не знаю где там ошибка
0
saserlend
11 / 11 / 1
Регистрация: 25.11.2011
Сообщений: 145
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;
}
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;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2011, 05:47
Привет! Вот еще темы с ответами:

Преобразовать массив таким образом чтобы сначала располагались все элементы равные нулю а потом остальные - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int main() { int...

Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке - C++
Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке. Только начали изучать С++,...

Вывести на экран сначала цифры, затем буквы, затем остальные символы исходной строки - C++
Вывести на экран сначала цифры, затем буквы, затем остальные символы исходной строки. : a - указатель исходной стpоки

Сформировать из значений массива другой массив, расположив в нем сначала цифры, затем – буквы, затем - символы, не являющихся ни буквами, ни цифрами - C++
Создать массив из 20 символьных значений. Сформировать из его значений другой массив, расположив в нем сначала цифры, затем – буквы, затем...


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
26.11.2011, 05:47
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru