Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
грэгор
0 / 0 / 0
Регистрация: 25.10.2018
Сообщений: 3
1

Заменить строчные латинские буквы в слове заглавными

30.10.2018, 11:58. Просмотров 634. Ответов 3

Программа должна заменять каждую n-ную букву в слове на заглавную , если это буква английского алфавита , в ином случае , оставить букву без изменений . Всё работает нормально , кроме одного момента , когда перед нужной буквой стоит буква русского алфавита , нужная буква не заменяется заглавной , помогите !))))
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
#include "stdio.h"
#include "limits.h"
#include "string.h"
#include "ctype.h"
int main() {
        
 
    int n = 0, i = 0, p = 0, q = 0;
    char str[101] = "";
    scanf("%d\n", &n);
    gets(str);
 
 
    
 
    while (str[i] != '\0') {
 
        if ((i == n - 1 + p) && (str[i] >= 97) && (str[i] <= 122)) {
        str[i]=str[i]-32;
            
        }
 
        if ((isspace(str[i]))) {
            p = i + 1;
        }
 
        i++;
 
    }
    puts(str);
    
return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2018, 11:58
Ответы с готовыми решениями:

Преобразовать в строке все прописные латинские буквы в строчные
Буду весьма благодарен, если достопочтенные судари помогут с решением задач в треклятом Си =) ...

Первые буквы всех слов заменить на заглавные остальные буквы на строчные
Заголовок (Строка, в которой первые буквы всех слов заменены на заглавные остальные буквы на...

В строке заменить цифры на латинские буквы
Разработать программу, которая запрашивает у пользователя строки, пока не введет end. В строке...

Заменить строчные буквы на заглавные
после комбинаций :точка и ли пробел точка void main() { char s; int r; r=0; while...

Заменить строчные буквы прописными и наоборот
Написать программу на языке &quot;C&quot; codegear, которая в указанном текстовом файле, заменяет все...

3
Байт
Эксперт C
22075 / 13759 / 2908
Регистрация: 24.12.2010
Сообщений: 29,372
30.10.2018, 12:44 2
грэгор, не понял, что делает в коде переменная p. Или не понял условие. А так, как понял, должно решаться так
C
1
2
3
4
5
6
7
while(str[i]) {
  if (i%n==0 && str[i] >= 'a' && str[i]=='z') str[i] -= 32;
  i++;
}
// Или так
for(i=0; i<strlen(str); i+= n)
  if (str[i] >= 'a' && str[i]=='z') str[i] -= 32;
Добавлено через 2 минуты
Прошу прощения. Видимо, не проснулся еще. Каждая n-я буква в слове
Беру все свои слова обратно....

Добавлено через 13 минут
Тогда вот чего. Пусть n=2, входная строка "Hellow, word". Должно получится "HElLoW, wOrD"? Или как?
Вообще, покажи вход и выход.
Возможно, как-то не так работает isspace...
Попробуй заменить ее на что-то вроде
if (strchr(" .,!&:;", str[i])!-NULL))
0
грэгор
0 / 0 / 0
Регистрация: 25.10.2018
Сообщений: 3
30.10.2018, 12:48  [ТС] 3
Вот Задание



В стандартный поток ввода натуральное число N, не больше 100, далее перевод строки, а затем - строка длиной не более 100 символов. На этом входной поток заканчивается. Слова состоят из любых символов, отличных от пробела, разделителями слов являются пробелы.

Необходимо вывести в стандартный поток вывода строку, в которой в каждом слове N-я буква заменена на заглавную. Если буква не латинская, то оставить ее без изменений. Если слово состоит меньше, чем из N букв, то необходимо оставить его без изменений. Если N-я буква является заглавной латинской, то ее оставить без изменений.

Исходную строку нужно считать в память целиком и все манипуляции проводить в памяти, а затем распечатать полученный в памяти результат в стандартный поток вывода.


Пример ввода 1:
1
Lfl ldl KJJ
Вывод:
Lfl Ldl KJJ
Пример ввода 2:
4
adf askd aldld
Вывод:
adf askD aldLd
Пример ввода 3:
2
Cbbv Immd jjdndn ddddddd d dd
Вывод:
CBbv IMmd jJdndn dDddddd d dD
0
Байт
Эксперт C
22075 / 13759 / 2908
Регистрация: 24.12.2010
Сообщений: 29,372
30.10.2018, 12:56 4
грэгор, понял. Вы ошибочно транслировали задание. Строчку 23 замените на
C
1
if (str[i]==' ')
И таки ответьте на вопрос
Цитата Сообщение от Байт Посмотреть сообщение
Вообще, покажи вход и выход.
Тот, где получается неверный результат
0
30.10.2018, 12:56
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2018, 12:56

Заменить все латинские буквы верхнего регистра на буквы нижнего регистра
В новом файле заменить все латинские буквы верхнего регистра на буквы нижнего регистра....

Заменить строчные буквы прописными и повторить цифры
Распечатать введенную строку, заменив строчные буквы, прописными и повторив дважды каждую цифру. ...

Во введённой строке заменить все маленькие латинские буквы на большие
4,2 Во введённой строке замените все маленькие латинские буквы набольшие


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

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

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