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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2010, 18:00   #1
Seregafcsm
Новичок
Джуниор
 
Регистрация: 24.09.2010
Сообщений: 2
По умолчанию строки (Dev C++)

В русском языке, как правило, после букв Ж, Ч, Ш, Щ пишется И, А, У, а не Ы, Я, Ю. Проверить заданную строку длиной не более 255 символов на соблюдение этого правила и исправить ошибки (с учетом исключений: ЖЮРИ, БРОШЮРА, ПАРАШЮТ).

Проблема в том что если ввести первое слово брошЮра то программа все равно исправляет на брошУра и
программа исправляет все буквы Ы, Я, Ю на И, А, У после любой буквы а не только после Ж, Ч, Ш, Щ .

Код:
#include <conio.h>
#include <string.h>
#include <stdio.h>
int main ()
{
    char s[255];
    printf ("vvedite stroku\n");
    gets(s);
    int n=strlen(s);
    for (int i=0; i<n; i++) {
        if (s[i+1]!=' ' && s[i]==' ') {
                    if ((s[i+1]=='ж') && (s[i+3]=='ю') && (s[i+3]=='р') && (s[i+4]=='и')) { i+=4; continue;};
                    if ((s[i+1]=='б') && (s[i+2]=='р') && (s[i+3]=='о') && (s[i+4]=='ш') && (s[i+5]=='ю') && (s[i+6]=='р') && (s[i+7]=='а')) { i+=7; continue;}; 
                    if ((s[i+1]=='п') && (s[i+2]=='а') && (s[i+3]=='р') && (s[i+4]=='а') && (s[i+5]=='ш') && (s[i+6]=='ю') && (s[i+7]=='т')) { i+=7; continue;}; 
                    continue;
                    }
        if (s[i]!='ж' || s[i]!='Ж' || s[i]!='ш' || s[i]!='Ш') {
                if (s[i+1]=='ы' || s[i+1]=='Ы') {s[i+1]='И'; i++;};
                if (s[i+1]=='ю' || s[i+1]=='Ю') {s[i+1]='У'; i++;};
                }
        if (s[i]!='ч' || s[i]!='Ч' || s[i]!='щ' || s[i]!='Щ') {
                if (s[i+1]=='я' || s[i+1]=='Я') {s[i+1]='А'; i++;};
                if (s[i+1]=='ю' || s[i+1]=='Ю') {s[i+1]='У'; i++;};
                }        
        }
    printf(s);
    getch ();
    return 0;
}
Seregafcsm вне форума Ответить с цитированием
Старый 17.12.2010, 00:54   #2
Seregafcsm
Новичок
Джуниор
 
Регистрация: 24.09.2010
Сообщений: 2
По умолчанию

помогите исправить скоро зачет а лаба висит не сданная ((
Seregafcsm вне форума Ответить с цитированием
Старый 17.12.2010, 02:19   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

if ((s[i+1]=='ж') && (s[i+3]=='ю') && (s[i+3]=='р') && (s[i+4]=='и')) { i+=4; continue;};
s[i+3]=='ю' заменить на s[i+2]=='ю')

А вообще сначала проскань строку на нужные тебе подстроки (жюри и т.д.) а потом исправляй уже

function Find(const S, P : String) : Integer;
Функция Find ищет подстроку P в строке S и возвращает индекс первого символа подстроки или 0, если подстрока не найдена.
Arkuz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Dev-C++ ai\ekcah^p Общие вопросы C/C++ 3 06.01.2011 15:00
Dev Express $T@LKER Компоненты Delphi 6 08.11.2010 21:14
Dev-C++ и Turbo C++ Nfyaka Общие вопросы C/C++ 0 04.05.2010 21:41
Dev-C++4.9.8.0 elenSV Помощь студентам 12 22.07.2009 19:20