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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2014, 01:27   #11
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Вот и я попытался сделать) Я понимаю что что не правильное решение и можно короче и т. д. Но подскажите, где У МЕНЯ ошибка то?
Код:
#include <iostream>
#include <string>
using namespace std;

int main()
{
    cout << "Enter the string: ";
    string s;
    cin >> s;
    int count = 0;
    for (int i=0; i<s.length(); i++)
        if (s[i] == ' ')
            for (int j = i; j<s.length(); j++)
                if (s[j] == 'a')
                    cout <<++count;
    cout << "\nThere is " << count << " letter(-s) in the last word!" << endl;
}

Последний раз редактировалось igoreshka3333; 17.10.2014 в 12:20.
igoreshka3333 вне форума Ответить с цитированием
Старый 17.10.2014, 01:51   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Но подскажите, где У МЕНЯ ошибка то?
в алгоритме.
перебираете символы строки.
Как только встретили пробел, считаете, сколько букв "a" от этого пробела до конца строки.

например, возьмём простую строку
astra terra santa barbara
идём по строке, дошли до первого пробела.
i=5
делаем цикл j от 5 и до конца строки, считаем буквы "a"
счётчик count уже равен 6
а цикл по i продолжается.
находим следующий пробел
i=11
делаем цикл j от 11 и до конца строки, считаем буквы "a"
счётчик count становится 6 + 5 = 11

а цикл по i продолжается.
находим следующий пробел
i=17
делаем цикл j от 17 и до конца строки, считаем буквы "a"
счётчик count становится 11 + 3 = 14

ответ:
There is 14 letter(-s) in the last word!

ещё вопросы есть?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2014, 11:14   #13
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Вот именно: счетчик то показывает 0 на двух компиляторах!

Выполнял программу пошагово! На первом операторе if сразу перескакивает на последнюю строку!

Последний раз редактировалось Stilet; 18.10.2014 в 10:25.
igoreshka3333 вне форума Ответить с цитированием
Старый 17.10.2014, 11:49   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я не знаю C/C++
но проверил программу, работает именно так, как я сказал.
Убедитесь в этом сами: http://ideone.com/iK4bOi

Код:
#include <iostream>
using namespace std;

int main() {
    cout << "Enter the string: ";
    string s;
    // cin >> s;
    s = "astra terra santa barbara";
    int count = 0;
    cout << "\nSource string is " << s;
    for (int i=0; i<s.length(); i++)
        if (s[i] == ' ')
            for (int j = i; j<s.length(); j++)
                if (s[j] == 'a') 
                    count++;
    cout << "\nThere is " << count << " letter(-s) in the last word!" << endl;
    return 0;
}
результат:
Цитата:
Код:
 stdout
Enter the string: 
Source string is astra terra santa barbara
There is 14 letter(-s) in the last word!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2014, 11:55   #15
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Спасибо! Компилятор странный у меня, однако) Еще и ругается чего то...

я заметил, если предлагаю пользователю ввести - то выдает ноль, а если есть инициализированная строка - нормально подсчитывает!

Последний раз редактировалось Stilet; 18.10.2014 в 10:26.
igoreshka3333 вне форума Ответить с цитированием
Старый 17.10.2014, 19:35   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
я заметил, если предлагаю пользователю ввести - то выдает ноль, а если есть инициализированная строка - нормально подсчитывает!
у меня тоже такое подозрение возникло..Но знаний языка и компилятора нет, поэтому ничего предпринять не смог. Странно, что никто в в этой теме не отписался, почему строка не вводится нормально... я надеялся, что гуру С++ подскажут..


p.s. только не пойму, а зачем Вам этот алгоритм. Вы же убедились, что он работает некорректно. Я объяснил, почему он работает именно так..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2014, 19:48   #17
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Цитата:
p.s. только не пойму, а зачем Вам этот алгоритм. Вы же убедились, что он работает некорректно. Я объяснил, почему он работает именно так..
Написал сходу, на скорую руку - нажал РАН: подсчитало 0 - это меня удивило - поэтому и интересно какая именно в этом некорректном алгоритме ошибка!

Туплю
Эта строка
Код:
getline (cin, s);
позволяет пользователю ввести обьект СТРИНГ с пробелами! А так
Код:
cin >> s
можно ввести лишь слово!

Последний раз редактировалось Stilet; 18.10.2014 в 10:26.
igoreshka3333 вне форума Ответить с цитированием
Старый 17.10.2014, 20:46   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

igoreshka3333, молодец!!
Разобрался всё таки!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2014, 21:06   #19
igoreshka3333
Форумчанин
 
Аватар для igoreshka3333
 
Регистрация: 26.09.2014
Сообщений: 176
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
igoreshka3333, молодец!!
Разобрался всё таки!
____________
igoreshka3333 вне форума Ответить с цитированием
Старый 18.10.2014, 02:11   #20
Kirillgr
Пользователь
 
Регистрация: 23.01.2014
Сообщений: 25
По умолчанию

С getchar и putchar еще необходимо.
Кстати, забыл добавить, что проги задали по предмету "структуры и алгоритмы обработки данных", и надо использовать "\0".
Kirillgr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить количество букв в каждом слове (Паскаль) afdotya Паскаль, Turbo Pascal, PascalABC.NET 0 16.10.2013 19:26
Дано предложение, слова отделяются друг от друга пробелами. Подсчитать, сколько букв «а» в каждом слове. alexx7312 Помощь студентам 1 28.05.2013 20:51
Работа со строками. Подсчитать количество четных/нечетных букв в слове. snusmumr Помощь студентам 4 04.06.2011 18:52
Подсчитать количество букв "А" в предложении и общее количество букв.В тексте из файла несколько строк. kvas91 Общие вопросы C/C++ 3 14.11.2010 16:51
подсчет букв С в последнем слове Obey177 Помощь студентам 7 10.09.2010 16:06