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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 38, средняя оценка - 4.68
infantis
0 / 0 / 0
Регистрация: 10.05.2010
Сообщений: 3
#1

реализация strcmp - C++

10.05.2010, 22:18. Просмотров 5719. Ответов 5
Метки нет (Все метки)

помогите написать реализацию strcmp
Функция должна принимать два указателя на сравниваемые
строки (возможно Вы должны указать компилятору, что функция
не имеет права модифицировать содержимое строк).
Функция должна возвращать отрицательное значение, если
первая строка лексиграфически меньше второй, 0 - если
они равны и положительное значение, если первая строка
больше второй.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.05.2010, 22:18     реализация strcmp
Посмотрите здесь:

Strcmp - C++
Пользуюсь Visual Studio 2013. Читай книжку, выполняю примеры. Там есть пример с использованием strcmp и сказано подключить <cstring>. У...

strcmp - C++
Вот изучаю С++, тут столкнулся с простой проблеммой, функция strcmp,которая проверяет на равенство 2 строки между собою. Попробывал...

STRCMP - C++
Как работает функция strcmp? strncmp? while(L<R) { m=(L+R)/2; ...

strcmp - C++
slovo={'d','d','d'}; char *slovo2=new char; for(int i=0;i<k;i++) { cin>>slovo2; } int s=strcmp(slovo2,slovo); и ввожу...

strcmp - C++
Не могу понять, как правильно прировнять два слова. КОгда компилирую и ввожу слово, програма самостаятельно закрываеться, точне...

strcmp() - C++
#include "stdafx.h" #include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
10.05.2010, 22:31     реализация strcmp #2
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
#include <iostream>
 
unsigned _strlen(const char *rhs){
    int res = 0;
    while(*rhs++) ++res;
 
    return res;
} 
 
// проверка только длины..
int _strcmp(const char *first, const char *last){
    unsigned f = _strlen(first);
    unsigned l = _strlen(last);
 
    if(f == l) return 0;
 
    return (f < l) ? -1 : 1;
}
 
int main(){
 
    std::cout << _strcmp("asd" , "asdf") << std::endl;
    std::cout << _strcmp("asdf", "asdf") << std::endl;
    std::cout << _strcmp("asdf", "asd" ) << std::endl;
 
    return 0;
}
infantis
0 / 0 / 0
Регистрация: 10.05.2010
Сообщений: 3
10.05.2010, 22:53  [ТС]     реализация strcmp #3
спасибо. но, я так понимаю, эта фунция сравнивает длину строк, а не их лексиграфическое значение.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
10.05.2010, 23:00     реализация strcmp #4
infantis, как то так (не проверял):
C++
1
2
3
4
5
6
7
8
9
10
11
int StrCmp(const char* str1, const char* str2) {
  while (*str1 && *str2) {
    if (*str1 < *str2)
      return -1;
    if (*str1 > *str2)
      return 1;
    ++str1; ++str2;
  }
 
  return *str1? -1 : *str2? 1 : 0;
}
easybudda
Эксперт С++
9460 / 5473 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
10.05.2010, 23:01     реализация strcmp #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
#include <stdio.h>
 
int mystrcmp(const char *a, const char *b){
    while ( *a && *b && *a == *b )
        ++a, ++b;
    return *a - *b;
}
 
int main(void){
    char *a = "abcde";
    char *b = "xyz";
    char *c = "abcd";
    char *d = "xyz";
    int res;
    
    printf("A = %s\nB = %s\nC = %s\nD = %s\n\n", a, b, c, d);
    printf("A is %s B\n", ( ( res = mystrcmp(a, b) ) == 0 ) ? "equal to" : ( res < 0 ) ? "less than" : "greater than");
    printf("A is %s C\n", ( ( res = mystrcmp(a, c) ) == 0 ) ? "equal to" : ( res < 0 ) ? "less than" : "greater than");
    printf("A is %s D\n", ( ( res = mystrcmp(a, d) ) == 0 ) ? "equal to" : ( res < 0 ) ? "less than" : "greater than");
    printf("B is %s C\n", ( ( res = mystrcmp(b, c) ) == 0 ) ? "equal to" : ( res < 0 ) ? "less than" : "greater than");
    printf("B is %s D\n", ( ( res = mystrcmp(b, d) ) == 0 ) ? "equal to" : ( res < 0 ) ? "less than" : "greater than");
    printf("C is %s D\n", ( ( res = mystrcmp(c, d) ) == 0 ) ? "equal to" : ( res < 0 ) ? "less than" : "greater than");
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2010, 23:18     реализация strcmp
Еще ссылки по теме:

Функция strcmp - C++
Скажите пожалуйста,по какой причине,если указатель b- это символ &quot;P&quot;, функция strcmp может возвращать не 0? ...

Не работает strcmp - C++
Подскажите, пожалуйста, условие не срабатывает (14 строка), хотя должно visits++ делать. В строке tmp_month находится строка &quot;Sep&quot;. ...

Функция strcmp - C++
Имеется три числа num1, num2 и det. Как используя функцию strcmp определить принадлежит ли число det, промежутку num1, num2?

Баг strcmp - C++
Линк на архив с видео, где записана ошибка. http://upload.com.ua/get/902136351/Bug.zip Пароль: bug Объясните ситуацию.

Функция strcmp - C++
В каком файле посмотреть функцию strcmp? В string.h смотрел и там ничего не нашел. В string тоже нет. Точнее в string.h есть, но там...

[Visual C++]strcmp() - C++
Нужно слова, которые считываются в буфер stroka, отсортировать по алфавиту с пом. strcmp. Ошибка в том, что в условии if (strcmp(...


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

Или воспользуйтесь поиском по форуму:
infantis
0 / 0 / 0
Регистрация: 10.05.2010
Сообщений: 3
10.05.2010, 23:18  [ТС]     реализация strcmp #6
всем спасибо, в целом идея ясна.
Yandex
Объявления
10.05.2010, 23:18     реализация strcmp
Ответ Создать тему
Опции темы

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