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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2011, 16:08   #1
AIR_3
Пользователь
 
Регистрация: 19.04.2011
Сообщений: 12
По умолчанию Лаги с кирилицей

Здравствуйте уважаемые программисты! =)))
Столкнулся с проблемой в написании экзаменационного задания.
Задание звучит так:

Создать программу, фильтрующую текст, введенный с клавиатуры. Задача программы заключается в считывании текста и отбражении его на экране , используя замену заданного набора символов на пробелы. Программа должна предлагать следующие варианты наборов символов для фильтрации:
  1. Символы латинского алфавита
  2. Символы кириллицы
  3. Символы пунктуации
  4. Цифры
Фильтры могут накладываться последовательно. При повторной установке существующего фильтра данный фильтр должен сниматься.



В общем, вроде как фильтр отрабатывает, но проблемма в фильтрации русских символов и выводе их на экран.
Вот мой код:

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


using namespace std;


void filtr(char* stroka,int n,int x,int y,int key)

{
		int i,j;
        char s;
        char st[]={'.',',',';',':','?','!','-','"','\0'} ;
        
 
 for(j=0;j<n;j++)
  {
   for(i=x;i<=y;i++)
        {
                s=i;
                if(key==2)
                {
                        if(stroka[j]==st[i])
                                stroka[j]=' ';
                }
                if(key==3)
                {
                        if(stroka[j]==st[i])
                                stroka[j]=' ';
                }
                if(stroka[j]==s)
                {
                        stroka[j]=' ';
                        break;
                        i=0;
                        
                }
                if(key==1&&i==90)
                {
                        i=i+6;
                }
        }
  }

}


void main()
	{		
		
		
		setlocale(LC_ALL, "Russian_Russia.1251");

        
        cout<<"     Фильтр"<<endl<<endl;
        cout<<"Символы латинского алфавита 1"<<endl;
        cout<<"Символы кириллицы 2"<<endl;
        cout<<"Символы пунктуации 3"<<endl;
        cout<<"Цифры 4"<<endl;
        cout<<"Ваш выбор= ";

		char str[100] = {'\0'};
		char * stroka;
		char s;


		int x,y,n,key;
		cin>>key;
		stroka = &str[0];
		cout<<"Введите строку не более чем в 100 символов - "<<endl;
		cin>>stroka;
		n = strlen(stroka);

		if(key==1)
			 {
                x=65;
                y=122;
			 }
        if(key==2)
			{
                x=127;
                y=239;
			}
        if(key==3)
		  {
                x=0;
                y=8;
		  }
        if(key==4)
			{
                x=48;
                y=57;
			}
		
		filtr(stroka,n,x,y,key);
    
 
        cout<<stroka;
        cout<<"\n\n\n\n";
        system("pause");
	}
Если кто знает как и чем мне помочь - буду очень благодарен! =)
AIR_3 вне форума Ответить с цитированием
Старый 05.05.2011, 19:57   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
void main()
Нету такого в стандарте. Почему бы не использовать wchar_t?
p51x вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЛАГИ Andrey174rus Операционные системы общие вопросы 2 16.10.2009 12:33
Периодические лаги!!! что делать? FAn2009 Компьютерное железо 2 05.12.2008 18:33
Периодические лаги!!! что делать? FAn2009 Помощь студентам 2 04.12.2008 14:45
Почему после компилиции не пишет кирилицей? lionig28 Общие вопросы C/C++ 1 01.02.2008 21:33