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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
#1

Как написать максимально оптимизированную функцию поиска длинны строки? - C++

23.08.2013, 16:59. Просмотров 1154. Ответов 32
Метки нет (Все метки)

Мысль о максимально оптимизированной функции длинны строки, где строка это указатель на литерал типа char.
Не будем использовать не std::string, не std::wstring, не wchar_t
в функцию передается указатель на строку, вот тело:
C++
1
2
3
4
5
6
7
int main()
{
    char * str= "hello world";
    int v = length(str);
    std::cout << v << std::endl;
    std::cin.get();
}
Пожалуйста подскажите ваши варианты...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2013, 16:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как написать максимально оптимизированную функцию поиска длинны строки? (C++):

Написать функцию рекурсивного бинарного поиска - C++
Рекурсия. Двоичный поиск. Написать функцию рекурсивного бинарного поиска. Использовать написанную функцию для знаходення...

Написать функцию рекурсивного бинарного поиска - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; void input(int Arr,int r); void output(int Arr,int r); int...

Как поместить строки разной длинны в двумерный массив? (файловый ввод/вывод) - C++
Всем доброго времени суток! Есть файл с нескольким количеством строк и все эти строки разной длинны, как мне их поместить в двумерный...

Написать функцию поиска структуры с заданным значением - C++
Здравствуйте уважаемые программисты. Помогите пожалуйста с программой. Написать функцию поиска структуры с заданным значением выбранного...

Написать generic функцию линейного поиска в массиве - C++
Предложите ваши варианты решения заданий 5. Имеем чистый C. Напишите generic функцию линейного поиска в массиве. И приведите пример...

Написать функцию поиска структур (записей) с заданными признаками - C++
Написать функцию поиска структур (записей) с заданными признаками (например, выбор структур по заданному диапазону значений элемента). ...

32
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:08 #2
что-то ничего кроме функции length не могу придумать))))
1
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:13  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
unsigned int length(const char * str)
{
    const char * p = str;
    while(str != "")
    {
        str++;
    }
    return str-p;
}
Моя функция не работает, думаю надо создавать еще одну переменную, но возможно можно это как-то изменить...

Цитата Сообщение от Atlant_V Посмотреть сообщение
что-то ничего кроме функции length не могу придумать))))
Ну хоть попытался, у меня такое ощущение что вопрос не из разряда, как сменить текст на русский в консоли и надо переносить в раздел для профессионалов )) Никто не заходит в этот пост.
0
Hugra
48 / 48 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
23.08.2013, 17:17 #4
Цитата Сообщение от vbloodv Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
unsigned int length(const char * str)
{
    const char * p = str;
    while(str != "")
    {
        str++;
    }
    return str-p;
}
Ты возвращаешь разницу адресов?

Ты хочешь свой алгоритм написать что-ли? Чем тебя стандартная strlen() к примеру не устраивает?
2
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
23.08.2013, 17:17 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
unsigned int length(char *str);
int main(int argc, char *argv[])
{
    char *str = "hello world !!!";
    printf("String length: %d", length(str));
 
    return 0;
}
 
unsigned int length(char *str)
{
    int i = 0;
    while(str[i] != 0) i++;
 
    return i;
}
1
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:21  [ТС] #6
Цитата Сообщение от Hugra Посмотреть сообщение
Ты хочешь свой алгоритм написать что-ли? Чем тебя стандартная strlen() к примеру не устраивает?
Цитата Сообщение от extenup Посмотреть сообщение
unsigned int length(char *str)
Спасибо соратники, я просто практиковался.
Мой код работает только в такой интепретации:
C++
1
2
3
4
5
6
7
8
9
unsigned int length(const char * str)
{
    const char * p = str;
    while(strcmp(str,""))
    {
        str++;
    }
    return str-p;
}
И смысл от него теряется, стандартная функция наиболее быстрая...
0
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:24 #7
иногда хочется придумать "велосипед" заново
0
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:25  [ТС] #8
Я ошибся есть еще более сатанитский вариант, вот только экономии памяти достигнуть не получилось,
C++
1
sizeof(char *) = sizeof(int )
C++
1
2
3
4
5
6
7
8
9
unsigned int length(const char * str)
{
    const char * p = str;
    while(str[0] != 0)
    {
        str++;
    }
    return str-p;
}
0
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:27 #9
Цитата Сообщение от vbloodv Посмотреть сообщение
у меня такое ощущение что вопрос не из разряда, как сменить текст на русский в консоли и надо переносить в раздел для профессионалов ))
а на счет того, как здесь порой отвечают на вопросы, я с тобой согласен.
0
Hugra
48 / 48 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
23.08.2013, 17:28 #10
Цитата Сообщение от Atlant_V Посмотреть сообщение
иногда хочется придумать "велосипед" заново

Не по теме:

Дело не в этом. Иногда сложно понять , что хочет ТС и для чего. Придумывание велосипедов в процессе обучения обычное дело.
Я пока читаю книгу по C++ напридумывал велосипедов , хоть свою библиотеку функций и классов собирай вместо стандартной. Процесс создания велосипедов, это способ разобраться и понять что и как работает изнутри.

0
vbloodv
23.08.2013, 17:29  [ТС]
  #11

Не по теме:

Цитата Сообщение от Hugra Посмотреть сообщение
Дело не в этом. Иногда сложно понять , что хочет ТС и для чего. Придумывание велосипедов в процессе обучения обычное дело.
Я пока читаю книгу по C++ напридумывал велосипедов , хоть свою библиотеку функций и классов собирай вместо стандартной. Процесс создания велосипедов, это способ разобраться и понять что и как работает изнутри.
У меня нет таких мотивов, это тестовое задание в одной из IT компаний.

0
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:33 #12
Hugra,
так я не хотел кого-то обидеть. а с тобой полностью согласен!

Добавлено через 3 минуты
vbloodv, ты только собираешься в IТ-компании или уже был там?
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
23.08.2013, 17:37 #13
Как вариант
C++
1
2
3
4
5
int i = 0;
while(s[i] != "\0")
{
++i;
}
1
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:39 #14
Bend3r, маладца. Все гениальное просто
0
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:46  [ТС] #15
Цитата Сообщение от Bend3r Посмотреть сообщение
Как вариант
C++
1
2
3
4
5
int i = 0;
while(s[i] != "\0")
{
++i;
}
Не совсем могу уловить чем этот способ отличается от предложенного в msdn и 2-мя другими участниками форума:
C++
1
2
3
4
5
6
7
unsigned int length(char *str)
{
    int i = 0;
    while(str[i] != 0) i++;
 
    return i;
}
У меня появились вопросы по: должно ли быть unsigned int i и
C++
1
return static_cast<unsigned int>(i);
0
23.08.2013, 17:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2013, 17:46
Привет! Вот еще темы с ответами:

Написать рекурсивную функцию поиска заданного числа Фибоначчи - C++
. Написать рекурсивную функцию поиска заданного числа Фибоначчи.

Нужно написать своеобразную функцию поиска строк в кавычках - C++
Мне нужна функция которая в текстовом файле примерно со следующим содержанием &quot;string1&quot; sometext &quot;string2&quot; искала строки заключённые в...

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

Написать функцию двоичного поиска в упорядоченном по алфавиту массиве слов - C++
Написать функцию двоичного поиска в упорядоченном по алфавиту массиве слов


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

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

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