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

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

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

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

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

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

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

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

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

Посчитать количество слов в строке и определить длину каждого слова C (СИ)
Нужно найти для заданого текста max длину серии символов отличающихся от букв и пробелов C (СИ)
Определить длину самой длинной подстроки из подряд стоящих букв «и» C (СИ)
Дано слово. Определить сколько в нем различных букв C (СИ)
Вывести в обратном порядке второе слово строки. Подсчитать количество букв в нем C (СИ)
Набрать с клавиатуры предложение и произвести в нем поиск слова в котором будет наиболшее количество гласных букв C (СИ)
Дано слово, определить, сколько в нем различных букв (использовать стандартные функции библиотеки <string.h>) C (СИ)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15240 / 9642 / 1428
Регистрация: 24.12.2010
Сообщений: 17,950
10.01.2017, 21:32     Определить длину данного текста и количество букв "а" в нем #2
marysluva, Какие-то собственные попытки решения есть? Хотя бы скелет программы и ввод данных?
LFC
603 / 407 / 259
Регистрация: 17.09.2015
Сообщений: 1,229
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
Сообщений: 58
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
15240 / 9642 / 1428
Регистрация: 24.12.2010
Сообщений: 17,950
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
Сообщений: 58
11.01.2017, 17:11  [ТС]     Определить длину данного текста и количество букв "а" в нем #6
Цитата Сообщение от Байт Посмотреть сообщение
Итог. Работая с форматными функциями printf, scanf надо внимательно следить за соответствием количества и типа аргументов
Переделала, теперь пишет ...(а): 0
Может что-нибудь еще неправильно ?
Байт
Эксперт C
15240 / 9642 / 1428
Регистрация: 24.12.2010
Сообщений: 17,950
11.01.2017, 17:30     Определить длину данного текста и количество букв "а" в нем #7
Цитата Сообщение от marysluva Посмотреть сообщение
что-нибудь еще
Вводите по русски? По латински? С чем буквы сравниваете?
Попробуйте все тоже, но с буквой d(D). Их не перепутаешь.

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

Дано натуральное число. Определить количество цифр 3 в нем C (СИ)
Определить длину строки и количество букв "а" в ней C (СИ)
C (СИ) Дано слово. Определить количество различных букв в нем
C (СИ) Удалить из заданного текста те слова, которые встречаются в нем заданное количество раз
C (СИ) Определить, можно ли из букв первого данного слова получить второе

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

Или воспользуйтесь поиском по форуму:
LFC
603 / 407 / 259
Регистрация: 17.09.2015
Сообщений: 1,229
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     Определить длину данного текста и количество букв "а" в нем
Ответ Создать тему
Опции темы

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