Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2012, 13:05   #1
геннадий522
Пользователь
 
Регистрация: 16.12.2011
Сообщений: 20
По умолчанию сравнение строк

Объясните пожалуйста подробно как происходит сравнение строк:
Код:
setlocale (0, "rus");
  char s3[1000000], s4[1000000];
  int (*p)(const char *, const char *);


  p = strcmp;
  cout << "Введите первую строку" << endl;
  cin >> s3;
  cout << "Введите вторую строку" << endl;
  cin >> s4;
  if(!(*strcmp)(s3, s4)) 
	  cout << "Строки равны" << endl;
  else 
	  cout << "Строки не равны" << endl;
  system ("pause");
  return 0;
}
геннадий522 вне форума Ответить с цитированием
Старый 12.01.2012, 13:09   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от геннадий522 Посмотреть сообщение
Объясните пожалуйста подробно как происходит сравнение строк:
Код:
setlocale (0, "rus");
  char s3[1000000], s4[1000000];
  int (*p)(const char *, const char *);  //<--- объявление указателя на функцию.


  p = strcmp; //<---теперь указатель на функцию смотрит на функцию strcmp
  cout << "Введите первую строку" << endl;
  cin >> s3;
  cout << "Введите вторую строку" << endl;
  cin >> s4;
  if(!(*strcmp)(s3, s4))  //<--- запуск функции, на которую смотрит указатель
	  cout << "Строки равны" << endl;
  else 
	  cout << "Строки не равны" << endl;
  system ("pause");
  return 0;
}
Смотри комментарии к коду
_Bers вне форума Ответить с цитированием
Старый 12.01.2012, 15:32   #3
ElectroMent
Пользователь
 
Регистрация: 28.12.2011
Сообщений: 27
По умолчанию

Цитата:
Сообщение от геннадий522 Посмотреть сообщение
Объясните пожалуйста подробно как происходит сравнение строк:
Код:
setlocale (0, "rus");
  char s3[1000000], s4[1000000];
  int (*p)(const char *, const char *);


  p = strcmp;
  cout << "Введите первую строку" << endl;
  cin >> s3;
  cout << "Введите вторую строку" << endl;
  cin >> s4;
  if(!(*strcmp)(s3, s4)) 
	  cout << "Строки равны" << endl;
  else 
	  cout << "Строки не равны" << endl;
  system ("pause");
  return 0;
}
внутри функция strcmp делает примерно так:
шаг 1. проверить на равенство длин строк, если не равны значит строки не равны, сообщаем о результате сравнения: какая больше.

шаг 2. цикл посимвольного сравнения ( до конца строки (не важно какой, они одной длины), признак 0 )
если очередная пара символов не равна значит строки не равны, сообщаем о результате.


Это простое сравнение строк. Есть и другие хитрые способы.

Последний раз редактировалось ElectroMent; 12.01.2012 в 15:36.
ElectroMent вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение строк в C# Павел111 Помощь студентам 3 17.12.2010 17:26
Сравнение строк в С++ Китти Общие вопросы C/C++ 2 12.10.2010 16:56
Макрос на сравнение и подсчет в первом столбце строк, и сумирование значений этих строк в другом столбце Shpr0T Microsoft Office Excel 8 30.08.2010 17:52
Сравнение строк в Си Maiden Помощь студентам 2 29.07.2010 12:45
Сравнение строк Rivendell Microsoft Office Excel 8 18.12.2009 10:29