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

С++ «Неделя первая - Условный оператор и циклы- Второе вхождение» #3

Войти
Регистрация
Восстановить пароль
Оценить эту запись

С++ «Неделя первая - Условный оператор и циклы- Второе вхождение» #3

Запись от acmades размещена 13.07.2017 в 02:35
Обновил(-а) acmades 15.07.2017 в 13:10 (Изменение категории)

Задание:
Дана строка. Найдите в этой строке второе вхождение буквы f и выведите индекс этого вхождения. Если буква f в данной строке встречается только один раз, выведите число -1, а если не встречается ни разу, выведите число -2. Индексы нумеруются с нуля.

Пример

stdin -> stdout
comfort -> -1
coffee -> 3
car -> -2

Моё решение:
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
#include "stdafx.h" //срока для Visual Studio
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
    string a;
    cin >> a; //вводим буквы
    int s = 0, ch = 0; //инициализируем переменные для подсчета
    for (auto simvol : a) { //перебираем буквы по-порядку
        if (simvol == 'f') { //если встретили f...
            ++s; //...плюсуем в счетчик
            if (s == 2) { //если встретили второй раз букву f, выводим её индекс
                cout << ch;
            }
        }
        ch++; //считаем нужный индекс
    }
    if (s == 1) { //если насчиталась только одна f
        cout << "-1";
    }
    else if (s == 0) { //если f нет
        cout << "-2";
    }
    return 0;
}
Что-то в самом начале обучения уже много чего горожу, как дойти до того, чтобы писать компактный код?
Что-то глючит Эклипс, перешел на Вижуал Студио.
Всего комментариев 0

Комментарии

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