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

C для начинающих

Войти
Регистрация
Восстановить пароль
 
marysluva
0 / 0 / 0
Регистрация: 09.09.2016
Сообщений: 61
#1

Определить длину данного текста и количество букв "а" в нем - C (СИ)

10.01.2017, 20:29. Просмотров 184. Ответов 11
Метки нет (Все метки)

Ввести фамилию, имя и отчество как одно текстовое дано. Определить длину данного и

количество букв "а" в нем. Решить задачу в соответствии с вашим варианта двумя способами:

а) используя функции из библиотеки string.h;

б) рассматривая введенный текст как массив символов.
Вывести фамилию и количество букв в имени.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2017, 20:29     Определить длину данного текста и количество букв "а" в нем
Посмотрите здесь:

Определить длину строки и количество букв "а" в ней - C (СИ)
Помогите создать программу: В ней нужно: 1)ввести фамилию, имя и отчество как одно данное строкового типа; 2)определить длину строки...

В трех предложения определить количество букв А в первом предложении заменить их на "*" - C (СИ)
В трех предложения определить количество букв А в первом предложении заменить их на "*", Е в втором и заменить их пробелом, Н в третьем и...

В трех предложения определить количество букв А в первом предложении заменить их на "*" - C (СИ)
В трех предложения определить количество букв А в первом предложении заменить их на "*", Е в втором и заменить их пробелом, Н в третьем и...

Определить количество букв А в первом предложении заменить их на "*" с использованием файла - C (СИ)
Второй код http://www.cyberforum.ru/c-beginners/thread841117.html

Удалить символ "_" из текста и найти длину текста, который получился - C (СИ)
написать програму которая удаляет "_" с текста и считает количество текста который получился (помогите пожалуйста)

Дано слово. Определить количество различных букв в нем - C (СИ)
Дано слово. Определить количество различных букв в нем

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15636 / 9978 / 1499
Регистрация: 24.12.2010
Сообщений: 18,742
10.01.2017, 21:32     Определить длину данного текста и количество букв "а" в нем #2
marysluva, Какие-то собственные попытки решения есть? Хотя бы скелет программы и ввод данных?
LFC
666 / 470 / 277
Регистрация: 17.09.2015
Сообщений: 1,403
11.01.2017, 02:13     Определить длину данного текста и количество букв "а" в нем #3
В заданиях с кириллицей всё не просто.Если использую:
C
1
system("chcp 1251 > nul");
вроде работает всё.
А если:
C
1
2
#include <locale.h>
setlocale(LC_ALL,"rus");
то с клавиатуры вводятся кракозябры.
подозреваю что в других конфигурациях будет по-другому.
marysluva
0 / 0 / 0
Регистрация: 09.09.2016
Сообщений: 61
11.01.2017, 15:22  [ТС]     Определить длину данного текста и количество букв "а" в нем #4
Цитата Сообщение от Байт Посмотреть сообщение
Какие-то собственные попытки решения есть? Хотя бы скелет программы и ввод данных?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#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("Please enter your name::");
    while((str[i] = getchar()) != '\n'){
        len++;
        if(str[i] == 'а' || str[i] == 'А')
            count++;
        i++;
    }
    str[i] = '\0';
    printf("\nNumber of letters: %d\n", len, count);
    printf("\nNumber of letters(a)": %d\n");
    puts("Select solutions:\nthrough string.h - please enter 1\nnot using string.h - please enter 2");
    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("Last name:");
                    while(first < last)
                        putchar(*first++);
                    putchar('\n');
                }
                if(count == 1){
                    printf("Numbers of letters(a)\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("\nSurname: %s", p);
        else{
             printf("\nNumbers of letters\n", strlen(p));
                    exit(0);
        }
    }
}
Да, только не выводит на экран сколько букв "а"
Байт
Эксперт C
15636 / 9978 / 1499
Регистрация: 24.12.2010
Сообщений: 18,742
11.01.2017, 16:53     Определить длину данного текста и количество букв "а" в нем #5
marysluva, Ну, так уже лучше. Советую вам следовать п.4.7 и всегда так начинать.
Цитата Сообщение от marysluva Посмотреть сообщение
printf("\nNumber of letters: %d\n", len, count);
printf("\nNumber of letters(a)": %d\n");
Цитата Сообщение от marysluva Посмотреть сообщение
Да, только не выводит на экран сколько букв "а"
Так вы его и не выводите. Функция printf просматривает строку формата, как только видит процентик дергает следующий аргумент. В первом он дернул len. До count даже не дошел. Во втором он попытался дернуть, а дергать-то нечего. Но он все равно дернул. Фигню какую-то.
C
1
2
printf("\nNumber of letters: %d %d\n", len, count);
printf("\nNumber of letters(a): %d\n", count);
Итог. Работая с форматными функциями printf, scanf надо внимательно следить за соответствием количества и типа аргументов
marysluva
0 / 0 / 0
Регистрация: 09.09.2016
Сообщений: 61
11.01.2017, 17:11  [ТС]     Определить длину данного текста и количество букв "а" в нем #6
Цитата Сообщение от Байт Посмотреть сообщение
Итог. Работая с форматными функциями printf, scanf надо внимательно следить за соответствием количества и типа аргументов
Переделала, теперь пишет ...(а): 0
Может что-нибудь еще неправильно ?
Байт
Эксперт C
15636 / 9978 / 1499
Регистрация: 24.12.2010
Сообщений: 18,742
11.01.2017, 17:30     Определить длину данного текста и количество букв "а" в нем #7
Цитата Сообщение от marysluva Посмотреть сообщение
что-нибудь еще
Вводите по русски? По латински? С чем буквы сравниваете?
Попробуйте все тоже, но с буквой d(D). Их не перепутаешь.

Добавлено через 50 секунд
len правильно печатает?
LFC
666 / 470 / 277
Регистрация: 17.09.2015
Сообщений: 1,403
11.01.2017, 17:30     Определить длину данного текста и количество букв "а" в нем #8
Байт, зря тратите свое время,ТС-жулик настолько неумелый,что даже не может нормально скопипастить чужой код.Это мой код,но с какими-то небольшими идиотскими переделками.
Байт
Эксперт C
15636 / 9978 / 1499
Регистрация: 24.12.2010
Сообщений: 18,742
11.01.2017, 17:30     Определить длину данного текста и количество букв "а" в нем #9
len правильно печатает?
marysluva
0 / 0 / 0
Регистрация: 09.09.2016
Сообщений: 61
11.01.2017, 17:33  [ТС]     Определить длину данного текста и количество букв "а" в нем #10
Цитата Сообщение от Байт Посмотреть сообщение
Вводите по русски? По латински? С чем буквы сравниваете?
Попробуйте все тоже, но с буквой d(D). Их не перепутаешь.
по латински, с буквой d тоже самое. Все букви считает, а (d) - нет
Байт
Эксперт C
15636 / 9978 / 1499
Регистрация: 24.12.2010
Сообщений: 18,742
11.01.2017, 17:36     Определить длину данного текста и количество букв "а" в нем #11
Цитата Сообщение от LFC Посмотреть сообщение
ТС-жулик настолько неумелый,
Учителя - как врачи. Больного - лечат, неумелого - учат. А уж жулик он или нет - пусть милиция разбирается
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2017, 18:07     Определить длину данного текста и количество букв "а" в нем
Еще ссылки по теме:

В каждой строке массива найти количество букв "с" - C (СИ)
В каждой строке массива найти кол-во букв &quot;с&quot;, расположенный слева от буквы ш (известно, что буква &quot;ш&quot; в каждой строке...

Подсчитать количество букв "D" в каждом четном слове - C (СИ)
Идея вроде ясна : нужно ввести массив , в него занести строку из слов , каким-то образом разделить четные и нечетные слова (четные в плане...

Подсчитать количество слов, которые содержат не менее двух букв "с" - C (СИ)
Подскажите что не так:cry: case '6': { system(&quot;cls&quot;); char st3; int i, l=0, k=0; puts(&quot;Input string&quot;); fgets(st3,...

Записать программу которая считает количество букв "r" в текстовом файле - C (СИ)
Записать программу которая считает количество букв &quot;r&quot; в текстовом файле


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
LFC
666 / 470 / 277
Регистрация: 17.09.2015
Сообщений: 1,403
11.01.2017, 18:07     Определить длину данного текста и количество букв "а" в нем #12
marysluva, вот держите еще раз изначальный правильный вариант,и не докучайте доброму человеку Байт,
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 80
#define DELIM " ,.?!    "
/*Ввести фамилию, имя и отчество как одно текстовое данное. Определить длину данного и
количество букв "а" в нем. Решить задачу двумя способами:
а) используя функции из библиотеки string.h;
б) рассматривая введенный текст как массив символов.
Вывести фамилию и количество букв в имени.*/
void withoutString(char* );
void fast(char* );
int main()
{
    char str[N];
    int i = 0, len = 0, count = 0, n;
    system("chcp 1251 > nul");
    puts("Введите фамилию имя и отчество одной строкой:");
    while((str[i] = getchar()) != '\n'){
        len++;
        if(str[i] == 'а' || str[i] == 'А')
            count++;
        i++;
    }
    str[i] = '\0';
    printf("\nДлина данного: %d символов,из них %d букв(ы) \'a\'\n", len, count);
    puts("Выберите вариант решения:\nс помощью string.h - введите 1\nне используя string.h - введите 2");
    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("Фамилия:");
                    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("\nФамилия: %s", p);
        else{
             printf("\nВ имени %d букв(ы)\n", strlen(p));
                    exit(0);
        }
    }
}
Добавлено через 20 минут
Цитата Сообщение от Байт Посмотреть сообщение
А уж жулик он или нет - пусть милиция разбирается

Не по теме:

Вспомнилось.Сериал "Рим".Юлий Цезарь:-Легионер Пуло,ты вор!Вор глупый и неумелый.Но ты хорошо служил нам в прошлом,поэтому мы притворимся что твоя глупость это род честности и позволим тебе остаться безнаказанным.

Yandex
Объявления
11.01.2017, 18:07     Определить длину данного текста и количество букв "а" в нем
Ответ Создать тему
Опции темы

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