Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
MousePro
49 / 30 / 4
Регистрация: 25.04.2013
Сообщений: 366
#1

Напишите программу, которая кодирует фразы английского языка псевдолатынью

12.08.2013, 12:19. Просмотров 626. Ответов 8
Метки нет (Все метки)

Всем привет, вот сама задача:
Напишите программу, которая кодирует фразы английского языка псевдолатынью. Псевдолатынь - это форма кодированного языка, часто используемая для развлечения. Существует много вариантов формирования фраз на псевдолатыни. Для простоты используйте следующий алгоритм:
Чтобы сформировать фразу на псевдолатыни из фразы на английском языке, разбейте фразу на слова с помощью функции strtok. Для перевода каждого английского слова на язык псевдолатыни поместите первую букву английского слова в конец английского слова и прибавьте буквы ау . Таким образом слово jump превратится в umpjay , слово the превратится в hetay , а слово computer превратится в omputercay . Пропуски между словами сохраняются. Примем следующие допущения: английская фраза состоит из слов, разделенных пропусками, пунктуация отсутствует, все слова состоят не менее чем из двух букв. Функция printLatin-Word должна отображать каждое слово. Подсказка: каждая найденная с помощью функции strtok лексема должна передавать указатель на лексему функцию printLatinWord, которая печатает слово на псевдолатыни.

Вот решение :
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
#include "iostream"
#include <string.h>
#include <time.h>
void printLatin(char*);
 
int main()
 
{
    srand(time(NULL));
    setlocale(LC_ALL,"Russian");
    char a[]="Im the best programmer";
    char *totalPtr;
    totalPtr=strtok(a," ");
    while (totalPtr!=NULL)
    {
        std::cout<<totalPtr<<" : ";
        printLatin(totalPtr);
        totalPtr=strtok(NULL," ");
    }
    
         
 
system("pause");
return 0;
}
 
void printLatin(char* total)
{
    char b[]="ay";
    char c [13]={0};
    
for(int x=1;total[x]!='\0';++x)
{
    c[x-1]=total[x];
}
strncat(c,total,1);
strcat(c,b);
total=c;
 
std::cout<<total<<"\n";
 
}
Что бы Вы тут поменяли?)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2013, 12:19
Ответы с готовыми решениями:

Разработать программу, которая запрашивает ввод английского слова и выводит его перевод
Программа должна предлагать ввести слово на английском и потом вывести перевод...

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

провести побитовое кодирование слов английского языка
провести побитовое кодирование слов английского языка( имени), выбрав...

Функция шифровки текста, состоящего из букв английского языка
Разработать и испытать функцию шифровки текста, состоящего из букв английского...

Напишите программу, которая переводит гривны в $
напишите программу, которая переводит гривны в $, DM c комментариями?

8
Schizorb
510 / 462 / 82
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
12.08.2013, 12:59 #2
C++
1
char c [13]={0};
А если слова будут длиннее?

C++
1
2
3
4
for(int x=1;total[x]!='\0';++x)
{
    c[x-1]=total[x];
}
Раз уж юзаете стандартные функции, то почему не strcpy?

Добавлено через 2 минуты
Если функция просто печатает, то зачем формировать новую строку:
C++
1
2
3
4
void printLatin(char * total)
{
    std::cout << total + 1 << total[0] << "ay\n";
}
0
MousePro
49 / 30 / 4
Регистрация: 25.04.2013
Сообщений: 366
12.08.2013, 13:49  [ТС] #3
Ну я как бы хотел сохранять результат, по этому и написал 2-й массив, а так то я понимал что можно просто выводить)
0
underwaterspace
2 / 2 / 1
Регистрация: 29.01.2013
Сообщений: 47
12.08.2013, 14:30 #4
Цитата Сообщение от MousePro Посмотреть сообщение
char c [13]={0};
чтобы не привязываться к размеру:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void printLatin(char * total)
{
    vector<char> op;
    char h[]="ay";
    for(int i=0;total[i+1]!='\0';i++)
        op.push_back(total[i+1]);
    op.push_back(total[0]);
    for(int i=0;h[i]!='\0';i++)
        op.push_back(h[i]);
    op.push_back('\0');
    for(int i=0;op[i]!='\0';i++)
        cout<<op[i];
    cout<<endl;
};
0
MousePro
49 / 30 / 4
Регистрация: 25.04.2013
Сообщений: 366
12.08.2013, 14:37  [ТС] #5
Цитата Сообщение от underwaterspace Посмотреть сообщение
чтобы не привязываться к размеру:
C++
1
2
int a=strlen(total)+2;
char c [a]
0
underwaterspace
2 / 2 / 1
Регистрация: 29.01.2013
Сообщений: 47
12.08.2013, 14:45 #6
Цитата Сообщение от MousePro Посмотреть сообщение
1
2
int a=strlen(total)+2;
char c [a]
я зачем-то динамически выделял
C++
1
char * c=new char[strlen(total)+2]
но, как видно, ничего хорошего не вышло, самому стыдно/
0
Schizorb
510 / 462 / 82
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
12.08.2013, 16:34 #7
underwaterspace, динамически и надо выделять. Потому что это:
C++
1
2
int a=strlen(total)+2;
char c [a];
не компилируется даже. Размер массива должен быть константой времени компиляции.
0
MousePro
49 / 30 / 4
Регистрация: 25.04.2013
Сообщений: 366
12.08.2013, 17:37  [ТС] #8
Цитата Сообщение от Schizorb Посмотреть сообщение
underwaterspace, динамически и надо выделять. Потому что это:
C++
1
2
int a=strlen(total)+2;
char c [a];
не компилируется даже. Размер массива должен быть константой времени компиляции.
Я все равно еще не дошел до векторов
0
Schizorb
12.08.2013, 17:43     Напишите программу, которая кодирует фразы английского языка псевдолатынью
  #9

Не по теме:

MousePro, а я и не про вектора. А про то, что этот код не по стандарту написан.

1
12.08.2013, 17:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2013, 17:43
Привет! Вот еще темы с ответами:

[C++] Напишите программу, которая выводит на экран...
Напишите программу, которая выводит на экран вводимые символы до тех пор, пока...

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

С чего начать разработку программы для изучения английского языка с помощью карточек
Ребят всем привет, доброго времени. Мне необходима консультация по вопросу...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru