Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/47: Рейтинг темы: голосов - 47, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
1

Написать программу, которая позволяет во введенной строке поменять первые буквы каждого слова на прописные

12.12.2013, 20:31. Показов 8922. Ответов 36
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
нужно составить текст программы, которая позволяет по введенной строке поменять первые буквы каждого слова на прописные. Вывести на экран символьную строку до и после изменения.

p.s:знаю только как на паскале написать, а нужно на С++; приветствую любую помощь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2013, 20:31
Ответы с готовыми решениями:

Во введенной строке поменять первые буквы каждого слова на прописные
составить текст программы, которая позволяет по введенной строке поменять первые буквы каждого...

Написать программу, которая распечатывает все буквы, которых нет в введенной строке
Помогите, если можете

От каждого слова в строке оставить только первые 3 буквы.
Дана строка. От каждого слова оставить только первые 3 буквы. Например, вводим "мама мыла раму",...

Строки. Заменить все первые буквы каждого слова во введенной фразе цифрой "1"
Написать программу, которая заменяет все первые буквы каждого слова во введенной фразе цифрой "1"....

36
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
14.12.2013, 21:38  [ТС] 21
Author24 — интернет-сервис помощи студентам
написал по своему и вот что вышло... что это за буквы м как их убрать?
Миниатюры
Написать программу, которая позволяет во введенной строке поменять первые буквы каждого слова на прописные  
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
14.12.2013, 22:31 22
i1 - другая переменная, индекс цикла меняется от нуля до i.
Прошу прощения внутри цикла str[i1][j];
А по j Надо перебирать все символы до терминального нуля,
который стоит в конце строки. Все, что после него и выводится как буквы М.
0
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
14.12.2013, 22:49  [ТС] 23
вот что получается не выводит целую строку а только последнее слово 2 раза...
как это исправить? и что такое терминальный ноль?
0
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
14.12.2013, 22:51  [ТС] 24
к предыдущему забыл прикрепить..
Миниатюры
Написать программу, которая позволяет во введенной строке поменять первые буквы каждого слова на прописные  
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
15.12.2013, 11:18 25
Цитата Сообщение от drovosek-95 Посмотреть сообщение
что такое терминальный ноль?
Интересно, а о чем Вы думали когда писали
C++
1
           str[i][j++] = '\0';
Добавлено через 10 минут
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
#include <stdio.h>
#include <conio.h>
#include<locale.h>  
#define N 30
#define M 21
int main()
{
    char str[N][M];
    int i, j, v;
    i = 0;
    j = 0;
    setlocale(LC_ALL, "Russian");
    printf("Введите предложение\n");
    while (1)
    {
        v = getchar();
        if ((v == '!') || (v == '?') || (v == '.') || v=='\n')
        {
            str[i][j] = '\0';
            i++;
            break;
        }
        if ((v >= 'a') && (v <= 'z') || (v >= 'A') && (v <= 'Z') || (v == ' '))
        {
        }
        else
        {
            printf("Ошибка:недопустимый символ\n");
            return 0;
        }
        if (v != ' ')
            str[i][j++] = v;
        if (j > 21)
        {
            printf("Ошибка:слишком длинное слово\n");
            return 0;
        }
 
        if (v == ' ')
        {
            str[i][j++] = '\0';
            i++;
            j = 0;
        }
        if (i > 31)
        {
            printf("Ошибка:слишком длинное предложение\n");
            return 0;
        }
    }
    for(int i1=0;i1<i;i1++)
    {
        for(int j=0;str[i1][j];j++)
           printf("%c",str[i1][j]);
        printf("\n");
    }
    _getch();
}
1
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
15.12.2013, 11:33  [ТС] 26
последнее слово не печатает
Миниатюры
Написать программу, которая позволяет во введенной строке поменять первые буквы каждого слова на прописные  
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
15.12.2013, 12:03 27
А Вы это исправление сделали:
C++
1
2
3
4
5
6
        if ((v == '!') || (v == '?') || (v == '.') || v=='\n')
        {
            str[i][j] = '\0';
            i++;
            break;
        }
1
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
15.12.2013, 12:22  [ТС] 28
а исправлять где? в самом условии вначале? где проверяется введенная пользователем строка?

Добавлено через 3 минуты
и еще у меня ругается на _getch();
пишет что идентификатор не определен
0
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
15.12.2013, 13:14  [ТС] 29
нужно исправить ошибки(они подчеркнуты красным) см фото

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
84
#include <stdio.h>
#include <string.h>
#include<locale.h>  
#include <ctype.h>
#define N 30
#define M 21
int main()
{
    char str[N][M];
    int i, i1 = 0, j, v,y;
    i = 0;
    j = 0;
    setlocale(LC_ALL, "Russian");
    printf("Введите предложение\n");
    while (1)
    {
        v = getchar();
        if ((v == '!') || (v == '?') || (v == '.') || (v == '\n'))
        {
            str[i][j] = '\0';
            i++;
            y = i;
            break;
        }
        if ((v >= 'a') && (v <= 'z') || (v >= 'A') && (v <= 'Z') || (v == ' '))
        {
        }
        else
        {
            printf("Ошибка:недопустимый символ\n");
            return 0;
        }
        if (v != ' ')
        {
            str[i][j++] = v;
        }
        if (j > 21)
        {
            printf("Ошибка:слишком длинное слово\n");
            return 0;
        }
 
        if (v == ' ')
        {
            str[i][j++] = '\0';
            i++;
            j = 0;
        }
        if (i > 31)
        {
            printf("Ошибка:слишком длинное предложение\n");
            return 0;
        }
    }
    printf("Ваше предложение\n");
    for (i1 = 0; i1 < y; i1++)
    {
        for (j = 0; str[i1][j]; j++)
            printf("%c", str[i1][j]);
        printf(" ");
    }
    _getch();
 
    bool newWord = true; // это переменная типа булево, принимает значения "Ложь" или "Истина"
    for (i = 0; i < strlen(str); i++) // цикл по всей длине строки-массива
    {
        if (str[i][j] == ' ') // если текущий символ строки равен пробелу
            newWord = true; // ставим значение "Истина" для переменной newWord
        if (str[i][j] >= 'A' && str[i][j] <= 'Z') // если текущий символ в верхнем регистре анг. алфавита
            if (newWord) // если переменная newWord равна "Истина"
            {
                str[i][j] = tolower(str[i][j]); // переводим текущий символ в нижний регистр
                newWord = false; // устанавливаем переменную newWord в значение "Ложь"
            }
    }
    printf("Измененное предложение\n");
    for (i1 = 0; i1 < y; i1++)
    {
        for (j = 0; str[i1][j]; j++)
            printf("%c", str[i1][j]);
        printf(" ");
    }
    _getch();
}
Миниатюры
Написать программу, которая позволяет во введенной строке поменять первые буквы каждого слова на прописные  
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
15.12.2013, 13:16 30
Программа написана на языке Си, в котором нет типа bool и ключевых слов true и false.
1
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
15.12.2013, 13:19  [ТС] 31
а чем их можно заменить чтобы смысл остался такой же?
как исправить?
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
15.12.2013, 13:21 32
int, 1 и 0 соответственно.
0
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
15.12.2013, 13:29  [ТС] 33
а можно поподробней? я не очень понимаю
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
15.12.2013, 13:30 34
int вместо bool, 1 вместо true, 0 вместо false.
1
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
15.12.2013, 13:34 35
В посте номер 8 я ведь привел ПОЛНЫЙ код.
Скопируйте его весь.
0
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
15.12.2013, 14:08  [ТС] 36
у меня не переводит в нижний регистр... в чем может быть проблема?(ТОЛЬКО ПЕРВАЯ БУКВА КАЖДОГО СЛОВА ДОЛЖНА ПЕРЕВОДИТСЯ В НИЖНИЙ РЕГИСТР)
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
84
85
86
#include <stdio.h>
#include <string.h>
#include<locale.h>  
#include <ctype.h>
#define N 30
#define M 21
int main()
{
    char str[N][M];
    int i, i1 = 0, j, v, y, proverka;
    i = 0;
    j = 0;
    setlocale(LC_ALL, "Russian");
    printf("Введите предложение\n");
    while (1)
    {
        v = getchar();
        if ((v == '!') || (v == '?') || (v == '.') || (v == '\n'))
        {
            str[i][j] = '\0';
            i++;
            y = i;
            break;
        }
        if ((v >= 'a') && (v <= 'z') || (v >= 'A') && (v <= 'Z') || (v == ' '))
        {
        }
        else
        {
            printf("Ошибка:недопустимый символ\n");
            return 0;
        }
        if (v != ' ')
        {
            str[i][j++] = v;
        }
        if (j > 21)
        {
            printf("Ошибка:слишком длинное слово\n");
            return 0;
        }
 
        if (v == ' ')
        {
            str[i][j++] = '\0';
            i++;
            j = 0;
        }
        if (i > 31)
        {
            printf("Ошибка:слишком длинное предложение\n");
            return 0;
        }
    }
    printf("Ваше предложение\n");
    for (i1 = 0; i1 < y; i1++)
    {
        for (j = 0; str[i1][j]; j++)
            printf("%c", str[i1][j]);
        printf(" ");
    }
    //_getch(); 
    for (i1 = 0; i1 < y; i1++) // цикл по всей длине строки-массива
    {
        for (j = 0; str[i1][j]; j++)
        {
 
            if (str[i1][j] == ' ') // если текущий символ строки равен пробелу
                proverka = 1; // ставим значение "Истина" для переменной newWord
            if (str[i1][j] >= 'A' && str[i1][j] <= 'Z') // если текущий символ в верхнем регистре анг. алфавита
                if (proverka == 1) // если переменная newWord равна "Истина"
                {
                    str[i1][j] = tolower(str[i1][j]); // переводим текущий символ в нижний регистр
                    proverka = 0; // устанавливаем переменную newWord в значение "Ложь"
                }
        }
    }
    printf("\nИзмененное предложение\n");
    for (i1 = 0; i1 < y; i1++)
    {
        for (j = 0; str[i1][j]; j++)
            printf("%c", str[i1][j]);
        printf(" ");
    }
    //_getch();
}
Миниатюры
Написать программу, которая позволяет во введенной строке поменять первые буквы каждого слова на прописные  
0
0 / 0 / 0
Регистрация: 10.11.2013
Сообщений: 27
15.12.2013, 15:21  [ТС] 37
кажется ошибка в 73 строке
0
15.12.2013, 15:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2013, 15:21
Помогаю со студенческими работами здесь

Написать программу, которая сортирует прописные русские буквы по возрастанию
Написать программу, которая сортирует прописные русские буквы по возрастанию методом пузырька

Поменять местами 1-ю и 3-ю буквы каждого слова в строке
Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены...

Составьте программу которая позволяет ввести строку S затем замените все буквы ''и'' в ведённой строке на ''e''
Составьте программу которая позволяет ввести строку S затем замените все буквы ''и'' в ведённой...

Поменять местами первую и последнюю буквы каждого слова в строке
Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru