Написать код - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Ввести фамилию, имя и отчество как одно текстовое данное. Определить длину данного и количество букв "а" в нем. Решить задачу двумя способами: а) используя функции из библиотеки string.h; б) рассматривая введенный текст как массив символов. Вывести фамилию и количество букв в имени.

Решение задачи: «Написать код»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 80
#define DELIM " ,.?!    "
void withoutString(char* );
void fast(char* );
int main()
{
    char str[N];
    int i = 0, len = 0, count = 0, n;
    system("chcp 1251 > nul");
    puts("KushnyrukMariaViktorivna:");
    while((str[i] = getchar()) != '\n'){
        len++;
        if(str[i] == 'а' || str[i] == 'А')
            count++;
        i++;
    }
    str[i] = '\0';
    printf("%d %d\n \'a\'\n", len, count);
    puts("1");
    while(1 != scanf("%d", &n) || (n != 1 && n != 2)){
        puts("Неправильный ввод данных!Попробуйте снова.");
        getchar();
    }
    if(n == 2)
        withoutString(str);
    if(n == 1)
        fast(str);
    return 0;
}
void withoutString(char* p)
{
    char delim[] = " \t\n,.?!;:", *first, *last;
    int j, flag = 0, sym = 1, count = 0;
    for(count = 0; *p; p++, sym = 1){
        for(j = 0; delim[j]; j++)
            if(*p == delim[j])
                sym = 0;
        if(sym){
            if(!flag){
                first = p;
                flag = 1;
            }
        }
        else{
            if(flag){
                last = p;
                flag = 0;
                if(!count){
                    puts("Kushnyruk:");
                    while(first < last)
                        putchar(*first++);
                    putchar('\n');
                }
                if(count == 1){
                    printf("%d n", last - first);
                    exit(0);
                }
                count++;
            }
        }
    }
}
void fast(char* str)
{
    char* p;
    int count;
    for(p = strtok(str, DELIM), count = 0; p; p = strtok(NULL, DELIM), count++){
        if(!count)
            printf("\nKushnyruk: %s", p);
        else{
             printf("%d %d\n", strlen(p));
                    exit(0);
        }
    }
}

Объяснение кода листинга программы

  1. Ввод строки с помощью функции getchar() до тех пор, пока не будет введен символ новой строки.
  2. Вычисление длины строки и количества вхождений символов 'а' и 'А'.
  3. Вывод результатов на экран.
  4. Ввод числа от 1 до 2 с помощью функции scanf().
  5. Если введено 1, то вызывается функция withoutString(), если 2 - функция fast().
  6. Функция withoutString() принимает строку и разделяет ее на подстроки, используя в качестве разделителя пробел, таб, новую строку, запятую, точку, восклицательный и вопросительный знаки.
  7. Результат выводится на экран.
  8. Функция fast() принимает строку и разделяет ее на подстроки с помощью функции strtok().
  9. Результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5
Похожие ответы