Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2012, 11:59   #1
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию Смена буквы А на Б

Ввести символьную строку и заменить в ней все буквы с А на Б

Вот мой код:

Код:
#include <stdio.h>
#include <conio.h>
int main()
{
	char a[80];
	gets(a);
	int i = 0;
	while(a[i]!='\0')
	{ if (a[i]=='А') a[i]='Б';
	i++;
	}
	puts(a);



getch();
}


Проблема заключается в том, что он выводит тоже самое, что я и ввел.
sidestep вне форума Ответить с цитированием
Старый 18.02.2012, 12:11   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

sidestep, попробуйте по-шагам и посмотрите, что считывает функция gets.
8Observer8 вне форума Ответить с цитированием
Старый 18.02.2012, 12:20   #3
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию

я ее поменял на scanf("%s", a) и тоже самое
в чем проблема?

По шагам ничего не показывала
sidestep вне форума Ответить с цитированием
Старый 18.02.2012, 12:24   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Если вы в OC Windows пишите, то вот так будет работать:

Код:
#include <stdio.h>
#include <windows.h>

int main()
{
    int i;
    char a[80];

    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);

    gets(a);
    i = 0;
    while(a[i]!='\0') { 
        if (a[i]=='А') {
            a[i] = 'Б';
        }
        i++;
    }
    puts(a);
}
P.S. У меня была аналогичная проблема: http://programmersforum.ru/showthread.php?t=179398

Последний раз редактировалось 8Observer8; 18.02.2012 в 12:27.
8Observer8 вне форума Ответить с цитированием
Старый 18.02.2012, 12:26   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

проверь, что ты вводишь русскую 'А'. И проверка идет тоже на русскую 'A'


Вот здесь ничего принципиально не поменял, только сделал автоматическую инициализацию:

Код:
char a[80]={'s','d','s','А','ы','А','А','А','ы','ф','в','ы','в','А'};
    //gets(a);
int i = 0;  while(a[i]!='\0') { if (a[i]=='А') a[i]='Б';  i++; }  puts(a);
Все работает корректно
_Bers вне форума Ответить с цитированием
Старый 18.02.2012, 12:29   #6
sidestep
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 93
По умолчанию

Проблема понятна, спасибо за помощь
Но теперь когда я ввожу русский символы в консоли, то они "непонятно" какие
sidestep вне форума Ответить с цитированием
Старый 18.02.2012, 12:34   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от sidestep Посмотреть сообщение
Проблема понятна, спасибо за помощь
Но теперь когда я ввожу русский символы в консоли, то они "непонятно" какие
Возможно, проблему можно решить так:
Цитата:
Сообщение от CaHb4ec Посмотреть сообщение
оставьте эти строчки + попробуйте поменять шрифт в консоли на Lucid Console
8Observer8 вне форума Ответить с цитированием
Старый 18.02.2012, 21:17   #8
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
Счастье

Цитата:
Сообщение от sidestep Посмотреть сообщение
Но теперь когда я ввожу русский символы в консоли, то они "непонятно" какие
Заходишь в свойства консоли на вкладку шрифт, выбираешь Lusida Console.
Дело в том, что стандартный шрифт, используемый в консоли не поддерживает эту кодировку
Блин меня опередили
rmv240899 вне форума Ответить с цитированием
Старый 18.02.2012, 21:19   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

не успел уже...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[B]Смена ИП[/B] xpams Работа с сетью в Delphi 0 08.01.2012 18:30
Преобразовать все буквы нижнего регистра в буквы верхнего регистра druger Помощь студентам 5 18.09.2011 17:27
Смена IP!!! ZverSS88 Работа с сетью в Delphi 0 08.11.2010 07:55
Смена фамилии Alex Cones Свободное общение 10 08.08.2010 09:23
смена действия designer999 Общие вопросы Delphi 12 25.03.2010 20:04