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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 35, средняя оценка - 4.80
Хиромант99
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 19
#1

Функция сравнивает две строки, игнорируя различия в регистрах - C++

24.01.2011, 04:03. Просмотров 5032. Ответов 5
Метки нет (Все метки)

Я студент 1 курса на зачёт сказали написать программку помогите!!
не хочу вылететь из универа
С++ Консоль

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

Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами - C++
Имеется такое задание: Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами. Можете объяснить...

Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами. - C++
Пишу в Microsoft Visual Studio ->Win32 Console application ->C++. Помогите пожалуйста Разработать функцию, которая сравнивает две строки,...

Функция, сравнивающая две строки, игнорируя количество пробелов между словами - C++
Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами (использовать функции работы со строками). ...

Сравнить две строки на различия не учитывая кол-во пробелов и такие различия в буквах как о-и, н-т, в-д. - C++
Здравствуйте. Помогите пожалуйста дополнить программу. Суть программы - нужно сравнить две строки на различия не учитывая кол-во...

Сравнение строк (символьные массивы), игнорируя регистровые различия - C++
Я недавно начал изучать С++ и все не как не пойму что не так с моей программой... Задача: Напишите программу, которая предлагает...

Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве её аргументов - C++
Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве её аргументов. Если аргумент только один,...

5
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
24.01.2011, 05:00 #2
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
30
31
32
33
34
35
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
 
#define TEST(A, B) printf("`%s' compare `%s': %d\n", (A), (B), strcompare((A), (B)))
 
int strcompare(const char*, const char*);
 
int main()
{
    TEST("FooBar", "foobar");
    TEST("FoObAr", "FoobaZ");
    TEST("a", "AB");
    TEST("f", "Ab");
    TEST("a(B)c", "A(b)C");
    exit(0);
}
 
/* Возвращает ноль, если строки равны;
 * -1, если первая строка меньше второй;
 * 1, в противном случае (все без учета различий в регистре символов)
 */
int strcompare(const char* str1, const char* str2)
{
    for( ; *str1 && *str2; ++str1, ++str2)
    {
        if(tolower(*str1) < tolower(*str2))
            return -1;
        else if(tolower(*str1) > tolower(*str2))
            return 1;
   }
        
   return ((!*str1) && (!*str2) ? 0 : (!*str1) ? -1 : 1); 
}
1
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
24.01.2011, 14:51 #3
Задача 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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
//////////////////////////////////////////////////////////////////////////////////////
//Функция сравнивает две строки, игнорируя различия в регистрах.
//////////////////////////////////////////////////////////////////////////////////////
#include <cctype>
#include <iostream>
#include <string>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
//////////////////////////////////////////////////////////////////////////////////////
bool  string_eq_not_match_case(const T_str&  s_L, const T_str&  s_R)
{
    struct  T_symb_comp_not_match_case
    {
        bool  operator() (char L, char R)
        {
            return tolower(L) == tolower(R);
        }        
    };
    return    s_L.size() == s_R.size()
           && std::equal(s_L.begin(), s_L.end(), s_R.begin(), 
                         T_symb_comp_not_match_case());
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        std::cout << std::endl
                  << std::endl
                  << std::endl
                  << "Введите строки для сравнения без учета регистра:" 
                  << std::endl
                  << '\t'
                  << "-> ";
        T_str  s_L;
        getline(std::cin, s_L);
        if(s_L.empty()) break;
 
        std::cout << '\t'
                  << "-> ";
        T_str  s_R;
        getline(std::cin, s_R);
        if(s_R.empty()) break;
 
        std::cout << "Строки "
                  << (string_eq_not_match_case(s_L, s_R) ? "равны." : "не равны.")   
                  << std::endl;    
    }
}
0
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
24.01.2011, 15:49 #4
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
#include<iostream>
#include<list>
using namespace std;
 
struct student: pair<string, float>{
    bool operator<(student a){
        return second>a.second;
    }
};
 
int main(){
    list<student> l;
    cout<<"Vvedite parametri studentov(0 to continue)\n";
    while(true){
        student a;
        cout<<"\nname= ";
        cin>>a.first;
        if(a.first=="0") break;
        cout<<"value= ";
        cin>>a.second;
        l.push_back(a);
    }
    l.sort();
    cout<<"\nAfter sorting: ";
    for(auto it=l.begin(); it!=l.end(); ++it){
        cout<<"\n\n"<<it->first<<"  "<<it->second;
    }
}
0
garkeP91
50 / 50 / 5
Регистрация: 24.10.2010
Сообщений: 131
24.03.2011, 23:43 #5
1.
Две строки без учета регистра сравниваются функциями strcmpi и stricmp.
Надо для них подключить библиотеку string.h
C++
1
#include<string.h>
C++
1
2
3
int strcmpi(string1,string2);
или
int stricmp(string1,string2);
Функции лексикографически сравнивает строки string1
и string2 и возвращает значение, обозначающее их соотношение так,
как показано ниже.

Значение Его смысл

меньше 0 string 1 меньше string 2

0 string 1 равна string 2

больше 0 string 1 больше string 2
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
25.03.2011, 05:47 #6
Цитата Сообщение от garkeP91 Посмотреть сообщение
Две строки без учета регистра сравниваются функциями strcmpi и stricmp.
Надо для них подключить библиотеку string.h
Эти функции нестандартные. К тому же преобразование регистра зависит от локали.
0
25.03.2011, 05:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2011, 05:47
Привет! Вот еще темы с ответами:

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

Какая функция сравнивает строку s2 со строкой s1? - C++
Какая функция сравнивает строку s2 со строкой s1?

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

Сравнить строки, игнорируя регистр - C++
День добрый. Нужно написать программу, которая предлагает пользователю ввести две строки, а затем сравнивает их, игнорируя регистр. Как...


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

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

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