Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Gubila_2000
7 / 3 / 3
Регистрация: 07.11.2014
Сообщений: 218
Записей в блоге: 1

Придумайте тест, который не пройдет моя программа

18.04.2015, 18:50. Показов 1974. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
EuroEnglish

(Время: 1 сек. Память: 16 Мб Сложность: 55%)
Европейская комиссия планирует принять решение о том, что официальным языком Евросоюза станет английский. Был также разработан план упрощения английской письменности, который планируется реализовать за четыре года.

Первоочередной задачей будет избавление от буквы c, которая в сочетаниях сi и сe будет изменяться на s, в сочетании ck — опускаться, а в остальных случаях заменяться на k. При этом все замены будут производиться в строгом порядке слева направо. То есть, например, в слове success сначала первая из двух букв c заменится на k, а затем вторая — на s, то есть получится suksess. А слово cck превратится в kk.

На второй год из английских слов изымут все удвоенные буквы: ee изменят на i, oo - на u, a в остальных комбинациях будут просто писать одну букву вместо двух одинаковых. Такие замены также будут делать строго в порядке слева направо. Так, слово ooo превратится в uo, а oou — просто в u (в нем сначала oo заменится на u, а затем uu — на u), слово iee превратится в i (в нем сначала ee заменится на i, а затем ii — на i).

На третий год на конце слова станут опускать букву е, если она не единственная буква в слове.

Наконец, завершением реформы станет отмена артиклей (в английском языке три артикля: а, an и the). При этом удаляться эти артикли будут только тогда, когда они в исходном тексте были словами a, an, the. То есть, например, текст the table после реформ первых трех лет превратиться в th tabl, а после реформы четвертого года — просто в tabl. А слово aaaaa после реформы первых лет станет словом a, но поскольку изначально оно не было словом a (артиклем), то оно в итоге так и останется словом a.

Напишите программу, которая будет переводить классический английский текст на Eвроинглиш.

Входные данные

Во входном файле INPUT.TXT записана одна строка текста, состоящая не более чем из 200 символов: латинских строчных и заглавных букв, пробелов и знаков препинания (в тексте могут встречаться: точка, запятая, вопросительный и восклицательный знаки, двоеточие, тире, точка с запятой, открывающаяся и закрывающаяся скобки, апострофы, кавычки). Заглавные буквы могут встречаться только в начале слова. Нигде подряд не могут стоять два пробела. В начале и в конце строки не может стоять пробел. Слова отделяются друг от друга пробелами и/или знаками препинания.

Выходные данные

В выходной файл OUTPUT.TXT нужно выдать преобразованную строку при ограничениях:

начинаться с заглавной буквы должны те и только те слова, которые начинались с заглавной буквы в исходном тексте;
не должно встречаться двух пробелов подряд;
пробелы между словами и знаками препинания должны остаться там и только там, где они были в исходной строке, в начале и в конце строки пробелов быть не должно.

1 cacao and coffee kakao and kofi
2 Cinderella! Where Is The Dress??? Sinderela! Wher Is Dres???
3 'A' is a letter '' is leter
4 !!!Hello!!!A-the-"word" !!!Helo!!!--"word"
5 Aaaa then the ckckck A then k
6 "A"-the an ""-
7 A the an
8 success sukses

Программа не проходит 6 тест, хотя те, что даны она выводит без ошибок.

Сколько я не извращался с входной строкой, удовлетворяющей условию, она выводит правильно.

Вот программа:


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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
#include <stdio.h>
 
unsigned short find (char zn[53], char c)//функция проверки на вхождение символа в строку
{
    unsigned short i=0, p=0;
 
    while (zn[i]!='\0'){
        if (zn[i]==c) p++;
    i++;
    }
    return(p);
}
 
unsigned short reg (char c)//функция проверки на регистр буквы
{
    char alf[]="ABCDEFJHIJKLMNOPQRSTUVWXYZ";
    unsigned short i=0, p=0;
 
    while(alf[i]!='\0'){
        if (alf[i]==c) p++;
        i++;
    }
    return(p);
}
 
unsigned short sravn(char c1, char c2)//функция сравнения одинаковых букв с разными регитсрами
{
    char a1[]="ABCDEFJHIJKLMNOPQRSTUVWXYZ", a2[]="abcdefghijklmnopqrstuvwxyz";
    unsigned short i=0,j=0, f1=0, f2=0;
 
    while(a1[i]!='\0')
    {
        if (a1[i]==c1){f1++; break;}
        i++;
    }
 
    while(a2[j]!='\0') {
        if (a2[j]==c2){f2++; break;}
    j++;
    }
 
    if ( (f1!=0 && f2!=0) && i==j ) return(1);
    else return(0);
 
}
void main()
{
    char str[201], zn[13]="!?.-;:()',", c, alf[53]="abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ";
    unsigned short i,j, k;
    FILE *f;
    zn[10]='"';
    zn[11]=' ';
    
    f = fopen("INPUT.TXT", "r");
    fgets(str, 200, f);
    fclose(f);
    
    i=0;
    //УДАЛЕНИЕ ПРЕДЛОГОВ
    while(str[i]!='\0')
    {j=i;
        if((find(zn,str[i]))!=0 && ( str[i+1]=='A' || str[i+1]=='a') && ((find(zn,str[i+2]))!=0 || str[i+2]=='\0')) {
            j=i+1;
            while(str[j+1]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            str[j]='\0';
        }
        if (( str[0]=='A' || str[0]=='a') && ((find(zn,str[1]))!=0 || str[1]=='\0'))
        {j=0;
            while(str[j+1]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            str[j]='\0';
        }
 
        if ( (str[0]=='A' || str[0]=='a') && str[1]=='n' && (find(zn, str[2])!=0 || str[2]=='\0'))
        {j=0;
            while(str[j+1]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            str[j]='\0';
            j=0;
            while(str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            
        }
        if ( (find(zn,str[i]))!=0 && (str[i+1]=='A' || str[i+1]=='a') && str[i+2]=='n' && (find(zn,str[i+3])!=0 || str[i+3]=='\0' ))
        {   j=i+1;
            while(str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            j=i+1;
            while(str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }   
            if(i>0) i--;
        }
 
        if ( (str[0]=='T' || str[0]=='t') && str[1]=='h' && str[2]=='e' && ((find(zn,str[3]))!=0 || str[3]=='\0'))
        {
            for (k=0; k<3; k++)
            {
                j=0;
                while (str[j+1]!='\0')
                {
                    str[j]=str[j+1];
                j++;
                }
            }
        }
        if ( find(zn,str[i]) && (str[i+1]=='t' || str[i+1]=='T') && str[i+2]=='h' && str[i+3]=='e' && (find(zn,str[i+4])!=0 || str[i+4]=='\0'))
        {
            for (k=0; k<3; k++)
            {
                j=i+1;
                while (str[j+1]!='\0')
                {
                    str[j]=str[j+1];
                j++;
                }
                str[j]='\0';
            }
        }
            i++;
    }
 
 
    i=0;
    //ЗАМЕНА КОМБИНАЦИЙ БУКВ
    while(str[i]!='\0')
    {
        if( (str[i]=='C' || str[i]=='c') && (str[i+1]=='i' || str[i+1]=='e'))
        {
            if(reg(str[i])!=0) str[i]='S';
            else str[i]='s';
        }
 
        if( (str[i]=='O' || str[i]=='o') && str[i+1]=='o')
            {
            j=i;
            while(str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            j=i;
            if(j==0) str[j]='U';
            else str[j]='u';
            }
 
        if( (str[i]=='E' || str[i]=='e') && str[i+1]=='e')
            {
            j=i;
            c=str[i];
            while(str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            j=i;
            if((reg(c)!=0)) str[j]='I';
            else str[j]='i';
            }
        i++;
    }
 
    //ЗАМЕНА 'C' НА 'K'(это удобней сделать именно сдесь, после замены сочитания "ci")
    i=0;
    while (str[i]!='\0')
    {
        if (str[i]=='c' || str[i]=='C')
            if (reg(str[i])!=0) str[i]='K';
            else str[i]='k';
        i++;
    }
    i=0;
    //УДАЛЕНИЕ ПОВТОРЯЮЩИХСЯ БУКВ И ПРОБЕЛОВ
    while (str[i]!='\0')
    {
        if ((find(alf,str[i])!=0) &&  ( str[i]==str[i+1] || ((sravn(str[i],str[i+1]))==1)) ){
            c=str[i];
            j=i;
            while(str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            str[i]=c;
            if (i>0)
            i--;
        }
 
        if ((find(alf,str[0])!=0) &&  ( str[0]==str[1] || ((sravn(str[0],str[1]))==1)) )
        {
            c=str[0];
            j=0;
            while(str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            str[0]=c;
            if(i>0) i--;
        }
        if (str[i]==' ' && str[i+1]==' ')
        {
            j=i;
            while (str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            if (i>0)
            i--;
        }
 
        if (find(alf, str[i])!=0 && str[i+1]=='e' && (find(zn,str[i+2])!=0 || str[i+2]=='\0' ))//удалить "е" в конце слова
        {
            j=i+1;
            while(str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
        }
 
        if (str[0]==' ')
        {   j=0;
            while (str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
        }
        i++;
    }
 
    //Удаление пробелов в конце
    i=0;
    while (str[i]!='\0')
    {
        if (str[i]==' ' && str[i+1]=='\0')
        {
            j=i;
            while(str[j]!='\0')
            {
                str[j]=str[j+1];
                j++;
            }
            i--;
        }
        i++;
    }
    
    f = fopen("OUTPUT.TXT", "w");
    fprintf(f, "%s", str);
    fclose(f);
}
Добавлено через 6 минут
1 cacao and coffee******************kakao and kofi
2 Cinderella! Where Is The Dress???****Sinderela! Wher Is Dres???
3 'A' is a letter**********************'' is leter
4 !!!Hello!!!A-the-"word"*************!!!Helo!!!--"word"
5 Aaaa then the ckckck**************A then k
6 "A"-the an ***********************""-
7 A the an*************************
8 success*************************sukses
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2015, 18:50
Ответы с готовыми решениями:

Пройдет ли тест у такой программы? (прокомментируйте пожалуйста, программа пропускает, но я сомневаюсь)
Программа package ru.job4j; import java.util.Arrays; /** * Created by Стас on 10.02.2017. */

Программа на контестере проходит только 1 тест из 9. Можете объяснить, в чем моя ошибка и как ее исправить!
Объясните, в чем моя ошибка в решении задачи. Условие: 103. Подсчет войск ограничение времени на тест: 0.5 сек. ...

Придумайте шуточный тест с выдачей шуточных результатов
Оператор выбора - case: Придумайте шуточный тест с выдачей шуточных результатов.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.04.2015, 18:50
Помогаю со студенческими работами здесь

Возможно ли сделать чтобы моя программа имела вид значка проигрывателя который выбран по умолчанию?
Мне нужно скрыть мою программу среди музыкальных файлов. Так чтобы программа не выдавала себя не на каком из компьютеров подключенных к...

Моя последняя программа / Моя лучшая программа
Всем привет! Расскажите, какую программу вы написали в последнее время? Это же форум программистов как никак :) И про самую лучшую...

Придумайте алгоритм, вводящий три целых числа, который находит второе по величине число, если оно существует
Придумайте алгоритм, вводящий три целых числа, который находит второе по величине число, если оно существует.(С++)

Определить ток, который пройдёт через человека
Струя воды при тушении пожара на промышленном объекте попадает на электрический контакт с напряжением U = 2·10^3 В. Сопротивление струи...

Определить путь вдоль плоскости, который пройдет тело до полной остановки
Тело с начальной скоростью 5 м/с движется по инерции вверх по плоскости, которая образует угол 45˚ с горизонтом. Определить путь вдоль...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru