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

Задание из Страуструпа - C++

Восстановить пароль Регистрация
 
mr_Eugene
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 18
29.11.2013, 23:39     Задание из Страуструпа #1
Добрый день,дорогие форумчане.В общем читаю книжечку Страуструпа.Выполняю задания.Вот что-то у меня ступор.Прошу Вашего совета

"Задание:Напишите программу,которая подсчитывает количество повторов пар букв в строке типа string.Например, пара букв "ab" входит в строку "xabaacbaxabb" дважды"

Мой код:
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <locale>
#include <vector>
#include <string.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    string st1,st2,st3;
    vector<string> st,str;
    int amt = 0;
    st1 = "babacabacd";
    int sz = st1.size();
 
    for (int i = 0; i < sz - 1; i++)                //Записываем все комбинации букв
    {
        st2 = st1[i];
        st2 += st1[i + 1];
        st.push_back(st2);               
        amt++;
        st2 = "";
    }
   int fix=0;                                       //Счетчик
 
   for(int i = 0;i<st.size();i++)
   {
       for (int j=0;j<st.size();i++)
         {
           if (strcmp(st[i].c_str(),st[j].c_str())) //Сравниваем элементы
              fix++;                                //Фиксируем в счетчике.Должна быть всегда хотя бы одна комбинация.
         }
    cout<<st[i]<<""<<fix;                           //Выводим пару букв и их количество повторений.
    fix=0;
   }
    system("pause");
    return 0;
}
Компилятор крашится и выдает ошибку стандартной библиотеки - Out of Range вот здесь вот:
C++
1
if (strcmp(st[i].c_str(),st[j].c_str()))
Не очень понимаю,как тогда сравнить 2 строки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 23:39     Задание из Страуструпа
Посмотрите здесь:

пример из книги страуструпа C++
C++ Какая книга Страуструпа
задачки Страуструпа C++
Угадайка от Страуструпа C++
C++ Калькулятор в книге Страуструпа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vensus
 Аватар для Vensus
41 / 23 / 9
Регистрация: 29.11.2013
Сообщений: 74
29.11.2013, 23:45     Задание из Страуструпа #2
функция strcmp - сравнивает строки (два одномерных массива типа char) и возвращает 0 (!) если строки равны, так что как минимум вам надо было написать if(!strcmp(...)), что такое c_str() я не знаю, поэтому тут ручаться ни за что не буду...
mr_Eugene
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 18
30.11.2013, 08:31  [ТС]     Задание из Страуструпа #3
Цитата Сообщение от Vensus Посмотреть сообщение
функция strcmp - сравнивает строки (два одномерных массива типа char) и возвращает 0 (!) если строки равны, так что как минимум вам надо было написать if(!strcmp(...)), что такое c_str() я не знаю, поэтому тут ручаться ни за что не буду...
Поправилспасибо,но все-равно та же ошибка.
c_str() возвращает const* char как раз то,что нужно для функции strcmp()

Добавлено через 8 часов 8 минут
Ошибку))нашел,тему можно закрытьВместо j++ в цикле написал i++ ,мда
rrrFer
Заблокирован
30.11.2013, 09:32     Задание из Страуструпа #4
Мне кажется или я не видел более извращенного решения?

ты берешь строку и формируешь с нее вектор пар, а потом ищешь в этом векторе. Невероятная хренотень.
Твоя программа сожрет, как минимум, в 3 раза больше памяти и работать будет тоже не быстро. Ищи другое решение, если решаешь задачу для саморазвития, а не для препода ))

Код
strcmp(st[i].c_str(),st[j].c_str())
зачем ты используешь strcmp? - неужели st[i] != st[j] не сработало?

Мелких ляпов тут тоже много, на самое главное, ужасный алгоритм ))
mr_Eugene
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 18
30.11.2013, 21:43  [ТС]     Задание из Страуструпа #5
Цитата Сообщение от rrrFer Посмотреть сообщение
Мне кажется или я не видел более извращенного решения?

ты берешь строку и формируешь с нее вектор пар, а потом ищешь в этом векторе. Невероятная хренотень.
Твоя программа сожрет, как минимум, в 3 раза больше памяти и работать будет тоже не быстро. Ищи другое решение, если решаешь задачу для саморазвития, а не для препода ))

Код
strcmp(st[i].c_str(),st[j].c_str())
зачем ты используешь strcmp? - неужели st[i] != st[j] не сработало?

Мелких ляпов тут тоже много, на самое главное, ужасный алгоритм ))
Да это я уже от отчаяния начал использовать,а так изначально st[i]==st[j] былоКасательно вектора,просто "захотелось" сделать с ним)А так конечно подумаю над другим решением))Спасибо за яркий коммент
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
30.11.2013, 21:48     Задание из Страуструпа #6
это задание из книги "The C++ Programming Language" 4-ое издание?
mr_Eugene
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 18
30.11.2013, 21:50  [ТС]     Задание из Страуструпа #7
Цитата Сообщение от XRuZzz Посмотреть сообщение
это задание из книги "The C++ Programming Language" 4-ое издание?
Да)
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
30.11.2013, 21:52     Задание из Страуструпа #8
Цитата Сообщение от mr_Eugene Посмотреть сообщение
Да)
так её же нет в русском переводе.
mr_Eugene
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 18
30.11.2013, 21:53  [ТС]     Задание из Страуструпа #9
Цитата Сообщение от XRuZzz Посмотреть сообщение
так её же нет в русском переводе.
Если поглядывать 3ье издание на русском,вполне так все понятно)Однако у 3ого перевод не очень.Ну и задания конечно совпадают,но не все
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
30.11.2013, 21:55     Задание из Страуструпа #10
Цитата Сообщение от mr_Eugene Посмотреть сообщение
Если поглядывать 3ье издание на русском,вполне так все понятно)
на какой странице эта задача в 4-ом издании?
mr_Eugene
0 / 0 / 0
Регистрация: 26.11.2012
Сообщений: 18
30.11.2013, 22:00  [ТС]     Задание из Страуструпа #11
Цитата Сообщение от XRuZzz Посмотреть сообщение
на какой странице эта задача в 4-ом издании?
Прошу прощения, перепутал, у меня, The С++ Programming Language Special 3rd Edition((страница 153
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2013, 22:14     Задание из Страуструпа
Еще ссылки по теме:

C++ Задание из книги Страуструпа
Калькулятор страуструпа C++
C++ Достаточно ли книги Страуструпа?

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

Или воспользуйтесь поиском по форуму:
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
30.11.2013, 22:14     Задание из Страуструпа #12
Цитата Сообщение от mr_Eugene Посмотреть сообщение
Прошу прощения, перепутал, у меня, The С++ Programming Language Special 3rd Edition((страница 153
а потом будете 4-ое перечитывать? ) я просто к тому, что эту задачку решать необъязательно.
у меня например есть репозиторий для разбора примеров из книги страуструпа(4-ого издания):
svn://axt.su/axt-stroustrup-the-cpp
поэтому я могу предоставить доступ на запись, бум вместе разбирать примеры, а к 3-ему изданию у меня интереса нету.
Yandex
Объявления
30.11.2013, 22:14     Задание из Страуструпа
Ответ Создать тему
Опции темы

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