Вычеркните из слова все буквы "я", стоящие на четных местах. помогите написать программу на с++
alexbloger:
Вводим слово, на выходе слово без букв "я" на четных? Или строку вводим, ибо чтобы "я" было в слове и еще попало на четное место, как по мне довольно сложное условие)
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <windows.h>
using namespace std;
void main()
{
char a[30];
int i,j,k;
setlocale(LC_ALL,"Russian");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout <<"Введите слово :";
cin>>
#include <iostream>
#include <string.h>
#include <windows.h>
using namespace std;
void main()
{
char a[30];
int i,j,k;
setlocale(LC_ALL,"Russian");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout <<"Введите слово :";
cin>>
k=strlen(a);
for(i=0;i<k;i++)
{
if(a[i]=='я'&& i%2!=0)
{
for(j=0;j<k;j++)
{
a[j+i]= a[j+i+1];
}
}
}
cout<<"a"<<endl;
}
for(i=0;i<k;i++)
{
if(a[i]=='я'&& i%2!=0)
{
for(j=0;j<k;j++)
{
a[j+i]= a[j+i+1];
}
}
}
cout<<"a"<<endl;
}
вот, что могла сделать
Остаток от деления, должен быть равен 0, если ЧЕТНОЕ место в слове. У вас работает отображение кириллицы ? у меня с такими настройками нет. Требует правок небольших)
не могли бы вы исправить?)
Ответы
Ответ дал:
0
На вывод работало с 866, а на ввод с 1251 (SetConsoleCP();).
В массив пишет каракули.
Функции setlocale(LC_CTYPE, "Russian"); setlocale(LC_ALL, "Russian"); тоже не помогают. Отлично работают с ОТОБРАЖЕНИЕМ текста в консоли, но с чтение из ее это ужас.
В С++ всегда с этим проблема была, с обработкой вводимой кириллицы с консоли.
Это те еще танцы с бубнами. Учитывая еще то, что многие функции писались исключительно под XP а про поддержку в версиях выше речи не было вообще.
Есть выходы конечно, но у меня не получилось отобразить кириллицу, считать с консоли, и вывести обратно. Что-то одно всегда не работало.Либо выводило правильно, а записывало каракули, либо каракули выводит а записывает правильно.
Если убрать все заморочки с кодировками, то вот код:
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_CTYPE, "Russian");
char *str=new char[];
cout<<"Введите слово: "; cin>>str;
for (int i = 0; i < strlen(str); i++)
{
if(str[i]!='я'&&i%2!=0){cout<<str[i];}
}
system("PAUSE");
}
В массив пишет каракули.
Функции setlocale(LC_CTYPE, "Russian"); setlocale(LC_ALL, "Russian"); тоже не помогают. Отлично работают с ОТОБРАЖЕНИЕМ текста в консоли, но с чтение из ее это ужас.
В С++ всегда с этим проблема была, с обработкой вводимой кириллицы с консоли.
Это те еще танцы с бубнами. Учитывая еще то, что многие функции писались исключительно под XP а про поддержку в версиях выше речи не было вообще.
Есть выходы конечно, но у меня не получилось отобразить кириллицу, считать с консоли, и вывести обратно. Что-то одно всегда не работало.Либо выводило правильно, а записывало каракули, либо каракули выводит а записывает правильно.
Если убрать все заморочки с кодировками, то вот код:
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_CTYPE, "Russian");
char *str=new char[];
cout<<"Введите слово: "; cin>>str;
for (int i = 0; i < strlen(str); i++)
{
if(str[i]!='я'&&i%2!=0){cout<<str[i];}
}
system("PAUSE");
}
Приложения:
спасибо!)
Вас заинтересует
2 года назад
2 года назад
2 года назад
7 лет назад
7 лет назад
9 лет назад