1

Тема: Як визначити парні порядкові номери?

Завдання:
Ввести довільну послідовність символів. Визначити у заданій послідовності кількість символів, котрі є цифровими та мають парні порядкові номери.

Я знайшов схожий код на С++ та переписав його на С, але не розумію як зробити другу частину завдання (парні порядкові номери)

Код, який я знайшов

#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
    std::string sequence{ "0ab.c1defg,2hi:3jk=lmo4pqr5s67tu" };
    std::size_t index = 0;
    auto digit_count =
        std::count_if(std::begin(sequence), std::end(sequence), [&index](unsigned char c) { return ++index % 2 == 0 && std::isdigit(c); });
    std::cout << "Result = " << digit_count << std::endl;
 
    return 0;
}

Мій код

 
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
main()
{
    const char enter = '\r';
    unsigned int s = 0;
    char c;
    printf("Input text:");
    do
    {
        c = _getche();  
        if (isdigit(c))s++;  
    } while (c != enter);
    printf("\nDigits=%u", s);

    
    _getch();
    return 0;
}

2 Востаннє редагувалося ch0r_t (22.04.2021 03:49:19)

Re: Як визначити парні порядкові номери?

Можна (перед цим записавши ввід в масив)перевіряти, генерований як звично, індекс на парність тим же оператором "Остача від ділення"

(index % 2 == 0 && є_числом(c))

або (знову ж таки спочатку отримати ввід весь і потім) відразу генерувати парний індекс для перевірки

(int i=2; i<ARRAY_SIZE_HERE; i=i+2){}
//й перевіряти його, ігноруючи введене з не парним порядк.номером взагалі.
isdigit(c);

Але звісно, доведеться виділити пам'яті на те під ввід даних.

Коли не треба такого і бажаєте так як у вас "на льоту".

//знову той же цикл.
for(int index=0;(c != enter);index++){//тут ваша перевірка (є_числом(с) &&  (index % 2 == 0) ){ і інкремент "s" коли перевірку пройдено} }

*тут ще нагода дізнатися(про) і (можливо) застосувати "Тернарний умовний оператор". Використовуйте пошук.