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

Подскажите где ошибка - C++

Восстановить пароль Регистрация
 
qwer1234
12 / 12 / 3
Регистрация: 30.10.2012
Сообщений: 463
26.02.2014, 20:46     Подскажите где ошибка #1
Ругаться на 15-ю строчку Ниже условие и код.

Данный массив строк, состоящих из трех символов. Отсортировать строки по первой букве в убывающем порядке

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
bool comparestring(const string &s1, const string &s2) {
    if (s2[0] <= s1[0])
        return true;
    return false;
}
 
int main() {
    const char* words[6] = {"Привет", "Hello", "A two", "A big", "Как дела", "Django"};
    vector<string> ws(words, words + 6);
    sort(ws.begin(), ws.end(), comparestring);
    for (int i = 0; i < ws.size(); ++i)
        cout << ws[i] << endl;
    return 0;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
26.02.2014, 20:49     Подскажите где ошибка #2
Цитата Сообщение от qwer1234 Посмотреть сообщение
Ругаться на 15-ю строчку
что пишет?

Добавлено через 37 секунд
http://ideone.com/99QMn0
qwer1234
12 / 12 / 3
Регистрация: 30.10.2012
Сообщений: 463
26.02.2014, 20:55  [ТС]     Подскажите где ошибка #3
Croessmah, error C2664: '__thiscall std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,c
lass std::allocator<char> > > >::std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >(uns
igned int,const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,const class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > &)' : cannot convert param
eter 1 from 'const char *[6]' to 'unsigned int'
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
26.02.2014, 21:05     Подскажите где ошибка #4
У меня собралось но на твой comparestring вылетает

Добавлено через 1 минуту
Как понять это условие (s2[0] <= s1[0])

Добавлено через 2 минуты
А что если так сделать? но проблемы не решит
C++
1
    string words[6] = {"Привет", "Hello", "A two", "A big", "Как дела", "Django"};
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.02.2014, 21:19     Подскажите где ошибка #5
Нужно просто <, тогда не вылетает.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
26.02.2014, 21:46     Подскажите где ошибка #6
хз какой компилятор. не компилится возможно из-за того, что типы первого и второго аргумента
не совпадают. ( vector<string> ws(words, words + 6) и у компилятора не получается их
к одному привести. студия это дело сжирает и какой-то онлайн компилятор тоже.
можно попробовать так:
C++
1
vector<string> ws(&words[0], &words[6]);
на счет крашей уже сказали что оператор должен быть <, а не <=
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
26.02.2014, 22:14     Подскажите где ошибка #7
Цитата Сообщение от DU Посмотреть сообщение
можно попробовать
А надо ли, чем мой вариант плох в 4 посте?

Добавлено через 4 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Нужно просто <
Попытка сортировки по алфавиту с меньше? но тогда почему только по-первому символу...
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
26.02.2014, 22:34     Подскажите где ошибка #8
может прокатит, а может и нет. в конструктор вектора по прежнему будут передаваться разные типы, даже если это будет массив std::string. не имея компилятор на руках сказать сложно.
сортировка по первой букве - почему бы и нет. для сортировки всей целой строке касмотный компаратор
писать вообще не надо. если автор его написал то возможно ему это надо было.
ну и до кучи автору еще один потенциальный баг: в компаратор может прийти пустая строка. поэтому
безусловно обращатся к первому символу - не очень хорошо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 22:45     Подскажите где ошибка
Еще ссылки по теме:

Подскажите где ошибка C++
Подскажите, где ошибка C++
C++ Подскажите где ошибка?

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

Или воспользуйтесь поиском по форуму:
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
26.02.2014, 22:45     Подскажите где ошибка #9
Цитата Сообщение от DU Посмотреть сообщение
компаратор может прийти пустая строка
Вот об этом то не подумал,...
Yandex
Объявления
26.02.2014, 22:45     Подскажите где ошибка
Ответ Создать тему
Опции темы

Текущее время: 19:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru