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

написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[]. - C++

Восстановить пароль Регистрация
 
Akimzhan
-25 / 0 / 0
Регистрация: 25.09.2011
Сообщений: 14
19.10.2011, 07:39     написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[]. #1
написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[].выводить только символы из dest[]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2011, 07:39     написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[].
Посмотрите здесь:

Написать функцию, которая в массиве char ищет цифры и заменяет их символом "#" C++
Написать функцию, которая переворачивает строку (массива типа char). C++
Преобразование из «void*» в «char*» C++
преобразование void в char C++
C++ Поворот массива на 90 градусов (cannot convert form char to char*)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
19.10.2011, 09:36     написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[]. #2
Akimzhan, вот код на Си, нужно будет С++ переделать труда для меня не составит
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 <string.h>//strlen
#include <ctype.h>//isalpha
#include <stdio.h>//printf scanf
 
//Копиует в dest буквы из source,
//все остальные символы пропускаются
void getAlphas(char source[], char dest[]);
 
int main()
{
    char ch;//Символ служит условием продолжения или окончания 
    //do while
    char str[1025] = {0};//Думаю 1024 символов с лихвой хватит
    char dst[1025] = {0};//Сюда копировать буквы из str будем
    do
    {
        printf("\tEnter input string\n");
        //В str введенная строка (можно с пробелами)
        scanf("%[^\n]%c",str,&ch);//В ch \n от ввода можно этого не делать
        printf("\tAlphas in str :\n");
        getAlphas(str, dst);
        printf("%s\n",dst);
        printf("Enter 1 for new input\n");
        scanf("%c",&ch);
    }
    while(ch == '1');
    return 0;
}
 
void getAlphas(char source[], char dest[])
{
    long i,k,sLen = strlen(source);
    for(i = 0,k = 0; i < sLen; i++)
    {
        if(isalpha(source[i]))
        {
            dest[k] = source[i];
            k = k + 1;
        }
    }
}
Миниатюры
написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[].  
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
19.10.2011, 09:50     написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[]. #3
Так лучше:
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
void copy_alphabetical(const char* src, char* dest)
{
    for(; *src != '\0'; ++src)
    if(isalpha(*src))
        *dest++ = *src;
}
 
int main(int argc, char* argv[])
{
    char buffer[BUFSIZ];
    size_t i;
    
    for(i = 1; i < argc; ++i)
    {
    copy_alphabetical(argv[i], buffer);
    puts(buffer);
    }
    
    exit(0);
}
-=ЮрА=-
Заблокирован
Автор FAQ
19.10.2011, 12:49     написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[]. #4
Akimzhan, программу можно сделать и короче + избавиться от пары хедеров и заменив
стандартную функцию
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
isalpha
проверки символа принадлежности буквам, условием
C++
1
2
if('a' <= source[0] && source[0] <= 'z' ||
           'A' <= source[0] && source[0] <= 'Z')
- для наглядности расписал source[0] и пределы 'a' и 'Z' в идеале всё ещё короче может быть, только вот понимание происходящего может потеряется, вобщем вот новый прототип
C
1
2
3
4
5
6
7
8
9
10
11
void getAlphas(char source[], char dest[])
{
    long sLen = 0;
    while(*source != NULL)
    {
        if('a' <= source[0] && source[0] <= 'z' ||
           'A' <= source[0] && source[0] <= 'Z') 
           *dest++ = *source;
        *source++;
    }
}
хедер всего один
C
1
#include <stdio.h>//printf scanf
, тело main без изменений
Yandex
Объявления
19.10.2011, 12:49     написать програму void(char source[] ,char dest[]) которая скопирует все символы из source[] ,которые не принадлежат алфавиту , в dest[].
Ответ Создать тему
Опции темы

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