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

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

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

Заменить все русские буквы в строке их порядковыми номерами в русском алфавите - C (СИ)

10.01.2017, 17:27. Просмотров 241. Ответов 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
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main(){
char alph_zagl[33] = {А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ы,Ь,Э,Ю,Я};
char alph_propis[33]={а,б,в,г,д,е,ё,ж,з,и,й,к,л,м,н,о,п,р,с,т,у,ф,х,ц,ч,ш,щ,ъ,ы,ь,э,ю,я};
 
char string [100];
scanf ("Введите строку не более 100 символов: %s", string);
int i,j;
printf("Результат: ", i);
for(i=0; i<100; i++) {
bool flag = 1;
for(j=0; j<33; j++) {
if(string[i]==alph_zagl[j] || string[i]==alph_propis[j]) {
printf("%d", j+1);
flag = 0;
}
}
if(flag) {
printf("%s", string[i]);
}
}
 
return(0);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2017, 17:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заменить все русские буквы в строке их порядковыми номерами в русском алфавите (C (СИ)):

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

Переписать в новый целочисленный массив все элементы исходного с порядковыми номерами, кратными трем - C (СИ)
Дан целочисленный массив A размера N&lt;=15. Переписать в новый целочисленный массив B все элементы с порядковыми номерами, кратными трем, и...

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

Заменить в строке все буквы "О" на "Ъ", а буквы "Е" - на случайные символы - C (СИ)
Помогите плз с программой на Си: Дана символьная строка. Заменить в ней все буквы &quot;О&quot; на &quot;Ъ&quot;, а буквы &quot;Е&quot; - на случайные...

Ввести символьную строку и заменить в ней все буквы “А” на буквы “Б” - C (СИ)
Ввести символьную строку и заменить в ней все буквы “А” на буквы “Б”

Напечатать текст, образованный символами с порядковыми номерами 56, 89, 84 и 69 - C (СИ)
Напечатать текст, образованный символами с порядковыми номерами 56, 89, 84 и 69 и текст с изменением регистра. Помогите пожалуйста.

4
pakanpak
47 / 47 / 24
Регистрация: 18.11.2016
Сообщений: 93
10.01.2017, 18:25 #2
DRONCSKA,
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
 
int main()
{
 
    setlocale(LC_ALL,"rus");
 
    char ar[100];
    int i;
 
    gets(ar);   //вводим наше предложение
 
    for(i=0;i<=strlen(ar)-1;i++)    //перебираем буквы
                                    //если кодировка каноничная ASCII
                                    //где коды кириллицы в диапазоне заглавные 192-223
                                    //прописные 224-255
    {
       if(ar[i]==' ')
        printf(" ");
        else
            if(ar[i]>=224)
                printf("%d",ar[i]-223);
            else
                printf("%d",ar[i]-191);
 
    }
    return 0;
}
Добавлено через 19 минут
DRONCSKA, лови так же твою исправленную, ошибки сам разберешь. Единственное я сделал для латиницы.
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
 
int main()
{
 
setlocale(LC_ALL,"rus");
 
int i,j;
char alph_zagl[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
char alph_propis[]={"abcdefghijklmopqrstuvwxyz"};
char string [100];
gets(string);
 
for(i=0; i<strlen(string); i++)
{
    if(string[i]==' ')
        {
            printf(" ");
            continue;
        }
 
    for(j=0; j<33; j++)
    {
        if(string[i]==alph_zagl[j] || string[i]==alph_propis[j])
            {
                printf("%d ", j+1);
                break;
            }
 
    }
}
 
return 0;
 
}
1
LFC
728 / 533 / 294
Регистрация: 17.09.2015
Сообщений: 1,596
11.01.2017, 04:21 #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
#define N 80
int main()
{
    char azb[] = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ", str[N];
    int i = 0, j;
    system("chcp 1251 > nul");
    puts("Введите строку:");
    while((str[i++] = getchar()) != '\n' && i < N);
    str[i] = '\0';
    for(i = 0; str[i]; i++)
        for(j = 0; azb[j]; j++)
            if(str[i] == azb[j]){
                printf("%d ", j > 32 ? j - 32 : j + 1);
                break;
            }
    return 0;
}
1
ata
267 / 239 / 53
Регистрация: 28.10.2015
Сообщений: 709
11.01.2017, 05:16 #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
#include <stdio.h>
 
int main(void)
{
    int codes[256];
    int i;
    for (i = 0; i < 256; i++) { codes[i] = 0; }
    const char* uppers = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (i = 0; i < 26; i++) { codes[uppers[i]] = i + 1; }
    const char* lowers = "abcdefghijklmnopqrstuvwxyz";
    for (i = 0; i < 26; i++) { codes[lowers[i]] = i + 1; }
    char str[100];
    gets(str);
    for (char* pch = str; *pch != '\0'; pch++)
    {
        int code = codes[*pch];
        if (code == 0)
        {
            putchar(*pch);
        }
        else
        {
            printf("%d", codes[*pch]);
        }
    }
    return 0;
}
0
LFC
728 / 533 / 294
Регистрация: 17.09.2015
Сообщений: 1,596
11.01.2017, 07:19 #5
ata, вместо
C
1
2
int codes[256];
for (i = 0; i < 256; i++) { codes[i] = 0; }
можно записать короче
C
1
int codes[256] = {0};
оставшиеся неинициализированными элементы автоматически получают 0
0
11.01.2017, 07:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2017, 07:19
Привет! Вот еще темы с ответами:

Найти сумму дробей с нечетными порядковыми номерами - C (СИ)
Создать программу, вводящую в цикле несколько дробей (не более заданного количества N), и находящую для введенных дробей две суммы: сумму...

Вывести элементы массива с порядковыми номерами, кратными данному числу - C (СИ)
Дан массив A размера N и целое число K (1 ≤ K ≤ N). Вывести элементы массива с порядковыми номерами, кратными K: AK, A2·K, A3·K, … ....

Напечатать текст, подчеркивая все заглавные и строчные русские буквы, входящие в него - C (СИ)
Дан текст из 60 букв. Напечатать этот текст, подчеркивая (ставя минусы в соответствующих позициях следующей строки) все заглавные и...

В алфавитном порядке напечатать (по разу) все строчные русские буквы, входящие в текст - C (СИ)
Вводится текст, за которым следует точка. В алфавитном порядке напечатать (по разу) все строчные русские буквы, входящие в этот текст. ...


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

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

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