Другие языки программирования и технологии

Непонятка с C++. Хочу посчитать колво точек в строке и почему то на 1 больше считает

#include
#include
#include

using namespace std;

int main(int argc, char *argv[])
{
int i,c=0;
string a;
cin>>a;
for(i=0;i<15;i++)
{
if(a[i]=='.') c++;
}
cout<<c;
system("PAUSE");
return EXIT_SUCCESS;
}
Олег Зеркаль
Олег Зеркаль
1 354
6 и выдает
http://ideone.com/HLSH1M
СИ
Сергей Исаенко
88 655
Лучший ответ
#include < iostream >
#include < string >
#include < algorithm >

using namespace std;

int main() {
string s = "lim...iddqd...ikdfa...idnoclip...";
cout << count(s.begin(), s.end(), '.');
}
Alex Hutinaev
Alex Hutinaev
84 764
Alex Hutinaev Опечатался... idkfa...."мы писали, мы писали, наши пальчики устали" %)))
Ильдар Ахмеров Заметно, что месье понимает толк в Doom-e )))
А что за волшебное число 15?
TC
Tarik Cetin
25 516
Олег Зеркаль ну строка не будет больше 15
Отнимайте от ответа -1
Костыли, но будет правильно)
Зароб Одинаев
Зароб Одинаев
10 017
Олег Зеркаль не, так мне не надо. почему так считает вообще?
Alex Hutinaev А если их бу 0? =)
так попробуй
for(i=0;i< a.size();i++)
{
if(a[i]=='.') c++;
}
ПШ
Павел Шамов
7 018
>>for(i=0;i<15;i++)
>>{
>>if(a[i]=='.') c++;
>>}
Заменить на.
while(i<strlen(a))
{
if(a[i]=='.') c++;
i++;
}
и поиграцо с начальным i или 0 или 1, не в курсе с какого индекса у вас нумерация строк =)
Олег Зеркаль для strlen походу надо библиотеку включать. подскажите какую
Роман Мачнев Какой strlen() там std::string
Учебное пособие по программированию Рецензенты: д. ф-м. н., проф. Афанасьев А. П.

Символы строкового литерала сохраняются в области оперативной памяти. В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0.
Строковый литерал имеет тип char[] . Это означает, что строка рассматривается как массив символов. Отметим важную особенность, число элементов массива равно числу символов в строке плюс 1, так как нулевой символ (символ конца строки) также является элементом массива. Все строковые литералы рассматриваются компилятором как различные объекты. Строковые литералы могут располагаться на нескольких строках. Такие литералы формируются на основе использования обратной дробной черты и клавиши ввод. Обратная черта с символом новой строки игнорируется компилятором, что приводит к тому, что следующая строка является продолжением предыдущей. Например:

"строка неопределенной \n

длины"

полностью идентична литералу

"строка неопределенной длинны" .

Строковая константа (литерал) - последовательность символов (включая строковые и прописные буквы русского и латинского а также цифры) заключенные в кавычки (") . Например: "Школа N 35", "город Тамбов", "YZPT КОД".

Похожие вопросы