С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/40: Рейтинг темы: голосов - 40, средняя оценка - 4.95
 Аватар для VolodiaVoz
32 / 32 / 12
Регистрация: 17.11.2010
Сообщений: 140

Сравнения двух строк s1 и s2 не используя библиотеку <string.h>

17.07.2011, 01:00. Показов 8458. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста! Нужно написать программу для сравнения двух строк s1 и s2 не используя библиотеку <string.h>, а создать собственную функцию int Compare (s1, s2) - которая выводит результат:

0 - строки одинаковые
+1 - Строка s1 больше (посимвольно) за s2
-1 - Строка s1 меньше (посимвольно) за s2.

Аналог библиотечной функции strcmp.
Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.07.2011, 01:00
Ответы с готовыми решениями:

Удалить подряд идущие пробелы, не используя библиотеку string
Удалить подряд идущие пробелы не используя библиотеку string.h Пример реализации: #include &lt;stdio.h&gt; #include &lt;string.h&gt; ...

Вычислить длину введенной с клавиатуры строки используя библиотеку string
Напишите программу, которая вычисляет длину введенной с клавиатуры строки используя библиотеку string

Программа сравнения двух строк
Написать программу сравнения двух строк на языке с++ помогите, пожалуйста

13
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.07.2011, 01:20
http://www.student.cs.uwaterlo... ource.html
надеюсь что прочитаете комментарии к тому коду и разберетесь в нём
1
 Аватар для VolodiaVoz
32 / 32 / 12
Регистрация: 17.11.2010
Сообщений: 140
17.07.2011, 01:34  [ТС]
Но здес используетса библиотека <string.h>! Мне не нужно использовать эту библиотеку! А написать аналог данной функции описанной выше!
Но и за это спасибо!
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.07.2011, 01:40

я же написал,
Цитата Сообщение от Maxwe11 Посмотреть сообщение
надеюсь что прочитаете комментарии к тому коду и разберетесь в нём
там подключен файл string.h только потому что в этом файле описан прототип этой функции, а реализация(запрограммированый алгоритм) находится по приведенной мной ссылке и не требует string.h

Добавлено через 2 минуты
а вы даже не удосужились почитать, или ваше знание английского ограничено одним словом?
Цитата Сообщение от VolodiaVoz Посмотреть сообщение
Compare (
1
 Аватар для VolodiaVoz
32 / 32 / 12
Регистрация: 17.11.2010
Сообщений: 140
17.07.2011, 01:54  [ТС]
Понятно! Просто глянул Ёсть string.h и подумал что она используетса!
А в щет анг. яз. я б воздержалса!

Добавлено через 9 минут
Может есть другой вариант?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.07.2011, 01:57
Цитата Сообщение от VolodiaVoz Посмотреть сообщение
Может есть другой вариант?
варианты всегда есть, вот например обратитесь сюда
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
17.07.2011, 02:30
Цитата Сообщение от VolodiaVoz Посмотреть сообщение
Может есть другой вариант?
А то!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int compare(const char * a, const char * b){
    return ( *a == *b ) ? ( ( ! *a ) ? 0 : compare(a + 1, b + 1) ) : ( *a < *b ) ? -1 : 1;
}
 
int main(void){
    char a[BUFSIZ], b[BUFSIZ];
    int cmp;
    
    while ( printf("A: ") && scanf("%[^\n]%*c", a) == 1 && printf("B: ") && scanf("%[^\n]%*c", b) == 1 )
        printf("A is %s B\n", ( cmp = compare(a, b) ) < 0 ? "less then" : ( cmp > 0 ) ? "greater then" : "equals to");
    
    return 0;
}
1
 Аватар для VolodiaVoz
32 / 32 / 12
Регистрация: 17.11.2010
Сообщений: 140
17.07.2011, 02:35  [ТС]
Спасибо! Етот вариант подходящей!
Ище раз спасибо!
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
17.07.2011, 10:55
Цитата Сообщение от easybudda Посмотреть сообщение
int compare(const char * a, const char * b){
return ( *a == *b ) ? ( ( ! *a ) ? 0 : compare(a + 1, b + 1) ) : ( *a < *b ) ? -1 : 1;
}
Если задать, равные строки но разные вот эта функция вернёт значение 1. Если точнее к стандартной функции strcmp("ado", "dao") она вернёт совсем другое значение не 0, 1, -1 , вот написал что-то похожее.
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
#include <stdio.h>
 
int  _strcmp(const char* s1, const char* s2) {
      while( *s1 == *s2 ) {
          *s1++;
          *s2++;
          if( ! *s1 && ! *s2)
               return 0;
      }
      do {
          if(! *s1 && *s2)
             return -1;
          if(! *s2 && *s1)
             return  1;
      } while( *s1++ && *s2++);
      return -2;
}
 
 
int main(void) {
 
   printf("%i\n", _strcmp("asp.net", "asp.net") );
   printf("%i\n", _strcmp("pascal",  "pascale") );
   printf("%i\n", _strcmp("mike",    "mik") );
   printf("%i\n", _strcmp("RDO",     "DAO") );
 
   getchar();
   return 0;
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
17.07.2011, 11:08
Цитата Сообщение от xAtom Посмотреть сообщение
Если задать, равные строки но разные вот эта функция вернёт значение 1. Если точнее к стандартной функции strcmp("ado", "dao") она вернёт совсем другое значение не 0, 1, -1
"Равные, но разные" - это круто! Стандартная strcmp() возвращает отрицательное число, 0, или положительное. Тут по заданию было -1, 0, 1...
И прежде, чем утверждать что-то, неплохо бы сначала в этом убедиться!
Code
1
2
3
4
5
$ ./compare
A: ado
B: dao
A is less then B
A:
1
17.07.2011, 12:03

Не по теме:

Цитата Сообщение от VolodiaVoz Посмотреть сообщение
А в щет анг. яз. я б воздержалса!
Насчёт русского тоже лучше воздержитесь

1
 Аватар для VolodiaVoz
32 / 32 / 12
Регистрация: 17.11.2010
Сообщений: 140
17.07.2011, 12:11  [ТС]
Извените я не очень умею писать по руски.
0
 Аватар для агерон
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
18.07.2011, 04:37
держи решение
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>
#include <conio.h>
#include <math.h>
 
int strlen(char* str)
{
 char *copy=str;
 while (*str++);
 return str-copy-1;
}
 
int compare(char *first,char *second)
{
 int result=strlen(first)-strlen(second);
 if (result) return result/abs(result);
 while (*first++==*second++);
 first--,second--;
 result=(*first)-(*second);
 return (result)?result/abs(result):result;
}
 
void main()
{
 int i=compare("1235","1253");
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
18.07.2011, 09:02
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
#include <stdio.h>
 
int Compare(const char *s1, const char *s2);
 
int main(void)
{
    printf("%d %d %d\n",
           Compare("a", "a"),
           Compare("a", "b"),
           Compare("b", "a"));
    printf("%d %d %d\n",
           Compare("ab", "ab"),
           Compare("a", "ab"),
           Compare("ab", "a"));
    return 0;
}
 
int Compare(const char *s1, const char *s2)
{
    int diff;
    
    for ( ; *s1 && *s1 == *s2; s1++, s2++)
        ;
    diff = *s1 - *s2;
    return diff < 0 ? -1 : diff == 0 ? 0 : 1;
}
Code
1
2
3
4
[guest@localhost tests]$ ./t
0 -1 1
0 -1 1
[guest@localhost tests]$
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.07.2011, 09:02
Помогаю со студенческими работами здесь

Функция сравнения двух строк
Написать функцию сравнения двух строк, используя указатели на них. Прошу помочь написать код программа для заданного условия

Написать функцию сравнения двух строк
Работа со строками Написать функцию сравнения двух строк, которая возвращает 0, если строки равны, или 1 в противном случае - C++

Доделать программу, сравнения двух строк
Задание: Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве ее аргументов. Если аргумент...

Оптимизация кода сравнения двух строк
Как сравнить 2 строки. Вот как их задавал в ходе программы string h,b; ... char * text = NULL; if ( OpenClipboard(0) ) { ...

Написать программу сравнения двух строк
Написать программу сравнения двух строк.


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru