0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 10
1

Задача: "Слишком длинные слова" (RUNTIME_ERROR)

03.10.2012, 17:13. Показов 12535. Ответов 3
Метки нет (Все метки)

"RUNTIME_ERROR" при отправлении. В чем ошибка и как сделать правильно?

Текст задачи:
A. Слишком длинные слова
ограничение по времени на тест:2 seconds
ограничение по памяти на тест:256 megabytes
ввод:standard input
вывод:standard output

Иногда некоторые слова вроде «localization» или «internationalization» настолько длинны, что их весьма утомительно писать много раз в каком либо тексте.

Будем считать слово слишком длинным, если его длина строго больше 10 символов. Все слишком длинные слова можно заменить специальной аббревиатурой.

Эта аббревиатура строится следующим образом: записывается первая и последняя буква слова, а между ними — количество букв между первой и последней буквой (в десятичной системе счисления и без ведущих нулей).

Таком образом, «localization» запишется как «l10n», а «internationalization» как «i18n».

Вам предлагается автоматизировать процесс замены слов на аббревиатуры. При этом все слишком длинные слова должны быть заменены аббревиатурой, а слова, не являющиеся слишком длинными, должны остаться без изменений.
Входные данные

В первой строке содержится целое число n (1 ≤ n ≤ 100). В каждой из последующих n строк содержится по одному слову. Все слова состоят из малых латинских букв и имеют длину от 1 до 100 символов.
Выходные данные

Выведите n строк. В i строке должен находится результат замены i-го слова из входных данных.

Примеры тестов

Входные данные
4
word
localization
internationalization
pneumonoultramicroscopicsilicovolcanoconiosis

Выходные данные
word
l10n
i18n
p43s

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
#include <cstdlib>
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
string str, m1[n], m3[n], c[2];
int m2[n], m4[n];
for (int i = 0; i < n; ++i)
{
    m4[i] = 0;
}
for (int i = 0; i < n; ++i)
{
    cin >> str;
    int k = str.length();
    if (k > 10) {
        c[1] = str[0];
        c[2] = str[k - 1];
        m1[i] = c[1];
        m2[i] = k - 2;
        m3[i] = c[2];
    }
    else {
        m4[i] = 1;
        m1[i] = str;
    }
}
for (int i = 0; i < n; ++i)
{
    if (m4[i] != 1)
    {
        cout << m1[i] << m2[i] << m3[i] << endl;
    }
    else
    {
        cout << m1[i] << endl;
    }
}
return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2012, 17:13
Ответы с готовыми решениями:

Даны три слова - "мама", "мыла", "раму". Задача - напечатать всевозможные варианты построения слов
Я записал код, однако эту часть надо автоматизировать, поможете? КОД: } #include &lt;iostream&gt;...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Из слова "яблоко" путем склеек и вырезок его букв получить слова "блок" и "око"
Самым самым самым простым способом.

Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки
Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до...

3
320 / 270 / 128
Регистрация: 24.05.2012
Сообщений: 629
03.10.2012, 17:18 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    short n;
    cin >> n;
    string s;
    short l;
    while (n--) {
        cin >> s;
        l = s.length();
        if (l <= 10)
            cout << s << endl;
        else
            cout << s[0] << l - 2 << s[l - 1] << endl;
    }
}
1
0 / 0 / 0
Регистрация: 03.10.2012
Сообщений: 10
03.10.2012, 18:16  [ТС] 3
Благодарю, а я глупость сотворил, что то не подумал, что input и output хранятся в памяти параллельно, начал с приблизительно того же, но потом решил что нужно сначала вбивать строки в массив, а после их выводить в сокращенном виде.
0
7 / 7 / 3
Регистрация: 22.09.2015
Сообщений: 173
10.02.2016, 19:19 4
Жаль, нет решения задачи на си......
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2016, 19:19
Помогаю со студенческими работами здесь

Из данной строки сделать новую строку, заменив в ней все слова: "один", "два", "три" и т.д на соответствующие цифры
Из данной строки сделать новую строку, заменив в ней все слова: &quot;один&quot;, &quot;два&quot;, &quot;три&quot; и т.д на...

Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а"
Помогите с программой, начал делать, ерунда какая то выходит.... #include&lt;iostream.h&gt;...

Необработанное исключение в "0x76f015de" в "контрольная 1 задача 2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x334e2c64"
доброго времени суток. Необработанное исключение в &quot;0x76f015de&quot; в &quot;контрольная 1 задача 2.exe&quot;:...

Из слова вертикаль путем "вырезок" и "склеек" его букв получить слова тир и ветка
Из слова вертикаль путем &quot;вырезок&quot; и &quot;склеек&quot; его букв получить слова тир и ветка.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru