Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
12.08.2013, 12:19     Напишите программу, которая кодирует фразы английского языка псевдолатынью #1
Всем привет, вот сама задача:
Напишите программу, которая кодирует фразы английского языка псевдолатынью. Псевдолатынь - это форма кодированного языка, часто используемая для развлечения. Существует много вариантов формирования фраз на псевдолатыни. Для простоты используйте следующий алгоритм:
Чтобы сформировать фразу на псевдолатыни из фразы на английском языке, разбейте фразу на слова с помощью функции 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";
 
}
Что бы Вы тут поменяли?)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2013, 12:19     Напишите программу, которая кодирует фразы английского языка псевдолатынью
Посмотрите здесь:

C++ 2. Напишите программу, которая запрашивает координаты точки (x, y)
C++ [C++] Напишите программу, которая выводит на экран...
C++ Напишите программу, которая позволяет ввести строку символов
Даны два массива. Напишите программу, которая находит такую последовательность элементов максимальной длины, которая содержится и в первом, и во вт C++
C++ Напишите программу, которая моделирует подбрасывание монеты
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 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";
}
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
12.08.2013, 13:49  [ТС]     Напишите программу, которая кодирует фразы английского языка псевдолатынью #3
Ну я как бы хотел сохранять результат, по этому и написал 2-й массив, а так то я понимал что можно просто выводить)
underwaterspace
2 / 2 / 0
Регистрация: 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;
};
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
12.08.2013, 14:37  [ТС]     Напишите программу, которая кодирует фразы английского языка псевдолатынью #5
Цитата Сообщение от underwaterspace Посмотреть сообщение
чтобы не привязываться к размеру:
C++
1
2
int a=strlen(total)+2;
char c [a]
underwaterspace
2 / 2 / 0
Регистрация: 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]
но, как видно, ничего хорошего не вышло, самому стыдно/
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
12.08.2013, 16:34     Напишите программу, которая кодирует фразы английского языка псевдолатынью #7
underwaterspace, динамически и надо выделять. Потому что это:
C++
1
2
int a=strlen(total)+2;
char c [a];
не компилируется даже. Размер массива должен быть константой времени компиляции.
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
12.08.2013, 17:37  [ТС]     Напишите программу, которая кодирует фразы английского языка псевдолатынью #8
Цитата Сообщение от Schizorb Посмотреть сообщение
underwaterspace, динамически и надо выделять. Потому что это:
C++
1
2
int a=strlen(total)+2;
char c [a];
не компилируется даже. Размер массива должен быть константой времени компиляции.
Я все равно еще не дошел до векторов
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2013, 17:43     Напишите программу, которая кодирует фразы английского языка псевдолатынью
Еще ссылки по теме:

C++ провести побитовое кодирование слов английского языка
C++ Напишите программу, которая переводит гривны в $
Напишите программу, которая находит сумму ряда C++

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

Или воспользуйтесь поиском по форуму:
Schizorb
12.08.2013, 17:43     Напишите программу, которая кодирует фразы английского языка псевдолатынью
  #9

Не по теме:

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

Yandex
Объявления
12.08.2013, 17:43     Напишите программу, которая кодирует фразы английского языка псевдолатынью
Ответ Создать тему
Опции темы

Текущее время: 05:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru