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

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

Войти
Регистрация
Восстановить пароль
 
 
vovamakr
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 32
#1

Функция, которая на вход принимает строку и в качестве результата возвращает ее копию - C++

22.09.2015, 11:51. Просмотров 1750. Ответов 26
Метки нет (Все метки)

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

Напишите функцию, которая принимает три числа в качестве параметров и возвращает их сумму. - C++
Напишите функцию, которая принимает три числа в качестве параметров и возвращает их сумму. Пишите по-русски!

Напишите программу, содержащую функцию, которая принимает два числа в качестве аргументов и возвращает их произведения. - C++
Напишите программу, содержащую функцию, которая принимает два числа в качестве аргументов и возвращает их произведения.

Написать функцию, которая принимает строку звуков, а возвращает звук - C++
Всем привет! В общем, я хочу разобраться с алгоритмом в такой задаче: в каком-то языке есть только 4 звука, назовем их А, В, C, D, а...

Функция F1, которая не принимает и не возвращает значений, но выводит на экран любое сообщение - C++
На языке С/C++ написать программу в которой имеется функция F1, которая не принимает и не возвращает значений, но выводит на экран любое...

Создайте функцию, которая принимает в качестве аргумента целое число и возвращает число Люка с таким номером - C++
1. Создайте функцию, которая принимает в качестве аргумента целое число и возвращает число Люка с таким номером. Воспользуйтесь...

Написать функцию atoi(), которая принимает параметр - строку цифр и возвращает соответствующее ей целое - C++
Это оказалось мне не по-силам, поэтому прошу помощи,господа:) Напишите функцию atoi(), которая имеет параметр - строку цифр и...

26
nonedark2008
1006 / 746 / 173
Регистрация: 28.07.2012
Сообщений: 2,074
22.09.2015, 11:52 #2
Цитата Сообщение от vovamakr Посмотреть сообщение
Я понимаю что наглость, но просто подскажите сам алгоритм.
Ага. Создаешь функцию, которая на вход принимает ссылку на строку (std::string?) и возращает ее же.
0
Пытливый Ум
20 / 20 / 8
Регистрация: 04.06.2015
Сообщений: 126
22.09.2015, 12:27 #3
проверяйте
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char sDictionary[] = гласные_и_точка_с_запятой // вводишь строкой. не забудь байт для конца строки
 
void StrFilter(char *sInString, char *sOutString)
{
      char *p1 = sInString;
      char *p2;
      char *p3 = sOutString;
      do{
            *p2 = sDictionary;
            do{
                  if(*p1 = *p2) // если символ встретился среди запретных останавливаемый цикл
                  { break; }
            }while(++*p2 != 0x00);
            if(*p2 == 0x00) // если цикл не был пройден полностью, добавляем символ в строку-выход
            { *p3++ = *p1; }
      }while(++*p1 != 0x00); //работаем до конца входной строки
}
0
vovamakr
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 32
22.09.2015, 12:46  [ТС] #4
nonedark2008,
Как то так?
C++
1
2
3
4
5
6
7
8
9
int StrCopy(const char* str)
{   
    int copy= 0;
    for (; *str != '\0'; ++str, ++str)
        {
        copy = *str;
    }
 
    return copy;
0
nonedark2008
1006 / 746 / 173
Регистрация: 28.07.2012
Сообщений: 2,074
22.09.2015, 13:01 #5
Цитата Сообщение от vovamakr Посмотреть сообщение
Как то так?
Что это за страшилище?
Копия строки - это новая строка. Где она у тебя?
Если работа с char * не обязательна, то для хранения и работы со строками используй std::string.
Цитата Сообщение от vovamakr Посмотреть сообщение
в ней не было гласных английских букв и точки с запятой
Создаешь функцию, которая принимает на вход букву char и возращает true или false в зависимости от того, нужно ли удалять данный символ или нет. Далее пробегаешь по всей строке и копируешь в новую только нужные символы. В STL можно воспользоваться std::remove_if.
0
vovamakr
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 32
22.09.2015, 13:23  [ТС] #6
nonedark2008,
Я на Си делаю:
C++
1
2
3
4
5
6
7
8
9
10
11
12
unsigned StrCopy( const char& str)
{   
    int* copy = (int*)malloc(sizeof(int));
          if (сopy != nullptr)
    {
        free(copy);
    }
    for (; &str != '\0'; ++str){
        copy = str;
    }
    return copy;
}
0
nonedark2008
1006 / 746 / 173
Регистрация: 28.07.2012
Сообщений: 2,074
22.09.2015, 13:55 #7
Цитата Сообщение от vovamakr Посмотреть сообщение
const char& str
Это ссылка на один символ, а не строка.
Цитата Сообщение от vovamakr Посмотреть сообщение
int* copy = (int*)malloc(sizeof(int));
Цитата Сообщение от vovamakr Посмотреть сообщение
free(copy);
Память выделил и сразу освободил, зачем?
Цитата Сообщение от vovamakr Посмотреть сообщение
&str != '\0'
Несоответствие типов, слева указатель char *, справа - символ char.
Цитата Сообщение от vovamakr Посмотреть сообщение
copy = str;
Опять, слева int *, справа char.
0
vovamakr
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 32
22.09.2015, 14:35  [ТС] #8
nonedark2008, честно я уже не знаю как делать. Можете пример навести и я по примеру сделаю. Бо я уже запутался(((
0
Пытливый Ум
20 / 20 / 8
Регистрация: 04.06.2015
Сообщений: 126
22.09.2015, 14:48 #9
vovamakr, а моё решение что не работает?
0
vovamakr
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 32
22.09.2015, 15:01  [ТС] #10
Пытливый Ум, понимаете, я ваш код не могу понять, он сложный для меня) Я хочу по проще сделать и по порядку. Сначала просто возвратить копию строки . Потом гласные самому написать через if проверку чтобы их пропускало .
0
Пытливый Ум
20 / 20 / 8
Регистрация: 04.06.2015
Сообщений: 126
22.09.2015, 16:16 #11
vovamakr, подумайте. зачем писать if'ы, если можно создать массив "запретных" символов типо
C++
1
char sDictionary[8] = "eyuioa;"
а потом проверять есть ли один из этих символов в копируемой строке?
0
vovamakr
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 32
22.09.2015, 17:10  [ТС] #12
Пытливый Ум, я понял. а можно через for написать а не через do , а то я не шарю что такое do

Добавлено через 45 минут
У меня так и не вышло ничего((((
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
unsigned StrCopy( const char* inStr)
{
    int* outStr = (int*)malloc(sizeof(int));
    char sDistionary[9] = "eyuioa;";
    bool run = true;
    for (; &inStr != '\0'; ++inStr)
    {
        if (*inStr == *sDistionary)
            return false;
        else
            return true;
        *outStr++ = *inStr;
    }
    return *outStr;
}
0
nmcf
6081 / 5392 / 1878
Регистрация: 14.04.2014
Сообщений: 22,368
22.09.2015, 17:26 #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char * StrCopy(const char* inStr)
{
    char * sDistionary = "eyuioa;";
 
    char* outStr = new char[strlen(inStr) + 1];
 
    for (; *inStr != '\0'; ++inStr)
        if (strchr(sDistionary, *inStr) == NULL)
        {
            *outStr = *inStr;
            ++outStr;
        }
 
    *outStr = '\0';
 
    return outStr;
}
0
vovamakr
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 32
22.09.2015, 17:34  [ТС] #14
nmcf, откуда if (strchr(sDistionary, *inStr) == NULL) - strchr ? И что это такое?
0
sswt
0 / 0 / 0
Регистрация: 31.08.2015
Сообщений: 49
22.09.2015, 19:21 #15
vovamakr, может это вы имеле введу? За правильность я не отвечаю, так как не сама еще плаваю в этом
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unsigned StrCopy( const char* inStr)
{
    char * sDistionary = "eyuioa;";
    int* outStr = (int*)malloc(sizeof(int));
    for (; *inStr != '\0'; ++inStr)
    if (*inStr == *sDistionary)
    {
        *outStr = *inStr;
        ++outStr;
    }
 
    return *outStr;
 
}
Добавлено через 2 минуты
nmcf, а как без этих функций встроеных strchr и strlen сделать?

Добавлено через 1 час 7 минут
Както так, но снова я не проверяла :
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
unsigned StrCopy( const char* inStr)
{
    char * sDistionary = "eyuioa;";
    int len = 0;
    int j = 0;
 
    for (int index = 0; *inStr; ++index)
    {
        len += (*inStr == 'a' || *inStr == 'e' || *inStr == 'y' || *inStr == 'u' || *inStr == '0' || *inStr == ';');
            
    }
    char* outStr = (char*)malloc(len) + 1;
 
 
    for (int index = 0; *inStr; index++)
    {
        if ((*inStr == 'a' || *inStr == 'e' || *inStr == 'y' || *inStr == 'u' || *inStr == '0' || *inStr == ';'))
        {
            outStr[j++] = inStr[index];
            
        }
        outStr[j] = 0;
    }
    return *outStr;
 
}
0
22.09.2015, 19:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2015, 19:21
Привет! Вот еще темы с ответами:

Напишите функцию, которая получает на вход строку цифр, и возвращает соответствующее целочисленное значение - C++
Напишите функцию atoi (), которая получает строку цифр, и возвращает соответствующее int. Например, atoi ("123") - это 123

Функция, которая получает в качестве параметров два целых числа и возвращает сумму - C++
Написать функцию, которая получает в качестве параметров два целых числа и возвращает сумму чисел из диапазона между ними Помогите:-| ...

Функция, которая возвращает максимальное из двух целых чисел, полученных в качестве аргумента. - C++
Дана матрица размера M х N. Вывести ее элементы в следующем порядке: первая строка слева направо, вторая строка справа налево, третья...

функция Reverse которая паспологает строку в обратном положении-никакого результата - C++
//alex.h public: char reverse(char s){ int c,i,j; c=i=j=0; for(i=0,j=strlen(s)-1;i<j;i++,j--){ c=s; s=s; s=c; }


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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