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

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

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

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

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

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

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

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

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

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

Определить слово с максимальным числом букв "а" и количество таких букв "а" - C (СИ)
Слова в предложении разделены пробелом.Предложения заканчиваются на . ! ? Определить слово с максимальным числом букв "а"и количество таких...

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

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

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

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

11
Байт
Эксперт C
17653 / 11691 / 1863
Регистрация: 24.12.2010
Сообщений: 23,310
10.01.2017, 21:32 #2
marysluva, Какие-то собственные попытки решения есть? Хотя бы скелет программы и ввод данных?
0
LFC
729 / 534 / 294
Регистрация: 17.09.2015
Сообщений: 1,597
11.01.2017, 02:13 #3
В заданиях с кириллицей всё не просто.Если использую:
C
1
system("chcp 1251 > nul");
вроде работает всё.
А если:
C
1
2
#include <locale.h>
setlocale(LC_ALL,"rus");
то с клавиатуры вводятся кракозябры.
подозреваю что в других конфигурациях будет по-другому.
1
marysluva
0 / 0 / 0
Регистрация: 09.09.2016
Сообщений: 62
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);
        }
    }
}
Да, только не выводит на экран сколько букв "а"
0
Байт
Эксперт C
17653 / 11691 / 1863
Регистрация: 24.12.2010
Сообщений: 23,310
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 надо внимательно следить за соответствием количества и типа аргументов
0
marysluva
0 / 0 / 0
Регистрация: 09.09.2016
Сообщений: 62
11.01.2017, 17:11  [ТС] #6
Цитата Сообщение от Байт Посмотреть сообщение
Итог. Работая с форматными функциями printf, scanf надо внимательно следить за соответствием количества и типа аргументов
Переделала, теперь пишет ...(а): 0
Может что-нибудь еще неправильно ?
0
Байт
Эксперт C
17653 / 11691 / 1863
Регистрация: 24.12.2010
Сообщений: 23,310
11.01.2017, 17:30 #7
Цитата Сообщение от marysluva Посмотреть сообщение
что-нибудь еще
Вводите по русски? По латински? С чем буквы сравниваете?
Попробуйте все тоже, но с буквой d(D). Их не перепутаешь.

Добавлено через 50 секунд
len правильно печатает?
0
LFC
729 / 534 / 294
Регистрация: 17.09.2015
Сообщений: 1,597
11.01.2017, 17:30 #8
Байт, зря тратите свое время,ТС-жулик настолько неумелый,что даже не может нормально скопипастить чужой код.Это мой код,но с какими-то небольшими идиотскими переделками.
1
Байт
Эксперт C
17653 / 11691 / 1863
Регистрация: 24.12.2010
Сообщений: 23,310
11.01.2017, 17:30 #9
len правильно печатает?
0
marysluva
0 / 0 / 0
Регистрация: 09.09.2016
Сообщений: 62
11.01.2017, 17:33  [ТС] #10
Цитата Сообщение от Байт Посмотреть сообщение
Вводите по русски? По латински? С чем буквы сравниваете?
Попробуйте все тоже, но с буквой d(D). Их не перепутаешь.
по латински, с буквой d тоже самое. Все букви считает, а (d) - нет
0
Байт
Эксперт C
17653 / 11691 / 1863
Регистрация: 24.12.2010
Сообщений: 23,310
11.01.2017, 17:36 #11
Цитата Сообщение от LFC Посмотреть сообщение
ТС-жулик настолько неумелый,
Учителя - как врачи. Больного - лечат, неумелого - учат. А уж жулик он или нет - пусть милиция разбирается
1
LFC
729 / 534 / 294
Регистрация: 17.09.2015
Сообщений: 1,597
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 минут
Цитата Сообщение от Байт Посмотреть сообщение
А уж жулик он или нет - пусть милиция разбирается

Не по теме:

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

1
11.01.2017, 18:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2017, 18:07
Привет! Вот еще темы с ответами:

Определить,есть ли в этой строке русские символы "а" и "е" ,а также количество каждого из этих символов - C (СИ)
Дана строка символов.Определить,есть ли в этой строке русские символы &quot;а&quot; и &quot;е&quot; ,а также количество каждого из этих символов. язык...

Дано какой нибудь текст, в нем есть символ ":" мне надо заменить его на "-" - C (СИ)
Дано какой нибудь текст, в нем есть символ &quot;:&quot; мне надо заменить его на &quot;-&quot;. Пытался развязать ну что то не выходит. #include &lt;stdio.h&gt;...

Подсчитать общее количество вхождений в строку символов "А", "a", "B" и "b" - C (СИ)
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; main() { int i; int k; char...

Подсчитать количество сдвоенных символов "сс", "нн", "лл" в тексте, расположенном в текстовом файле - C (СИ)
Пожалуйста) Подсчитать количество сдвоенных символов сс, нн, лл в тексте, расположенном в текстовом файле.


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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