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

Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы - C++

Восстановить пароль Регистрация
 
fr
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 5
27.11.2010, 04:51     Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы #1
Задан массив из k символов.Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы.

Помогите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2010, 04:51     Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы
Посмотрите здесь:

Дан массив B[0:n-1].Сформировать два новых массива:первый содержит отрицательные элементы , а второй - чётные C++
C++ Дан массив F[0:n-1].Сформировать два новых массива: первый содержит элементы, не превышающие заданного числа, а второй - все остальные
[C++]Все отрицательные элементы массива перенести в начало, а все остальные - в конец C++
В первый массив перенести все цифры из исходного массива, во второй - все остальные символы. C++
Удалить из массива целых чисел все нули. Сформировать два новых массива. В первый переписать все элементы данного массива с четными номерами, во второ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
27.11.2010, 11:14     Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы #2
fr, isdigit в помощь

Добавлено через 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
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <ctype.h>
 
int main()
{
    const int max_len=200;
    char Arr[max_len];
    printf("Enter string\n");
    fgets(Arr, max_len, stdin);
    int cnt_digits=0;
    int l=strlen(Arr);
    for(int i=0; i<l; ++i)
    {
        if(isdigit(Arr[i]))
            cnt_digits++;
    }
    char* digits_array;
    char* symbols_array;
    digits_array=(char*) malloc((cnt_digits+1)*sizeof(char));
    symbols_array=(char*) malloc((l-cnt_digits+1)*sizeof(char));
    int j=0, k=0;
    for(int i=0; i<l; ++i)
    {
        if(isdigit(Arr[i]))
        {
            digits_array[j]=Arr[i];
            ++j;
        }
        else
        {
            symbols_array[k]=Arr[i];
            ++k;
        }
    }
    digits_array[j]='\0';
    symbols_array[k]='\0';
    printf("Source: %s\n", Arr);
    printf("Digits: %s\n", digits_array);
    printf("Symbols: %s\n", symbols_array);
    free(digits_array);
    free(symbols_array);
    return 0;
}
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
27.11.2010, 11:47     Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы #3
k задаётся при выполнении, динамическое распределение памяти:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    srand(time(0));
    int k,figures=0;
    char *masschars, *nums, *others;
    cout<<"Enter k: ";
    cin>>k;
    masschars = new char[k];
    
    for (int i=0;i<k;i++)
    {
        masschars[i]=rand()%('`'-'!')+'!';
        cout<<masschars[i]<<"  ";
        if (isdigit(masschars[i]))
            figures++;
    }
    
    int okf=0, oko=0;
    nums = new char[figures];
    others = new char[k-figures];
    for (int i=0;i<k;i++)
        if (isdigit(masschars[i]))
            nums[okf++]=masschars[i];
        else
            others[oko++]=masschars[i];
    
    cout<<endl<<"The first array: "<<endl;
    for (int i=0;i<figures;i++)
        cout<<nums[i]<<"  ";
    cout<<endl<<"The second array: "<<endl;
    for (int i=0;i<k-figures;i++)
        cout<<others[i]<<"  ";
    
    delete[] others;
    delete[] nums;
    delete[] masschars;
    
    return 0;
}
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
27.11.2010, 12:09     Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы #4
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 <stdlib.h>
#include <stdio.h>
#include <ctype.h>
 
#define SIZE 10
 
int main()
{
        char string[SIZE] = "as123wg@#";
        char digits[SIZE] = "";
        char others[SIZE] = "";
 
        char *dptr = digits;
        char *optr = others;
 
        int i = 0;
 
        for(i = 0; i < SIZE; ++i) {
                if(isdigit(string[i]))
                        *dptr++ = string[i];
                else
                        *optr++ = string[i];
        }
 
        *dptr = '\0';
        *optr = '\0';
 
        printf("source: %s\ndigits: %s\nothers: %s\n", string, digits, others);
        return 0;
}
fr
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 5
27.11.2010, 15:49  [ТС]     Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы #5
спасибо
Yandex
Объявления
27.11.2010, 15:49     Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы
Ответ Создать тему
Опции темы

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