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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
#1

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

12.08.2013, 12:19. Просмотров 565. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Напишите программу, которая кодирует фразы английского языка псевдолатынью (C++):

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

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

провести побитовое кодирование слов английского языка - C++
провести побитовое кодирование слов английского языка( имени), выбрав минимальное кол-во переменных указанного типа unsigned int, тока это...

[C++] Напишите программу, которая выводит на экран... - C++
Напишите программу, которая выводит на экран вводимые символы до тех пор, пока не введено &lt;CTRL/Z&gt;, выводит количество введенных символов,...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Schizorb
509 / 461 / 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";
}
0
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
12.08.2013, 13:49  [ТС] #3
Ну я как бы хотел сохранять результат, по этому и написал 2-й массив, а так то я понимал что можно просто выводить)
0
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;
};
0
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]
0
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]
но, как видно, ничего хорошего не вышло, самому стыдно/
0
Schizorb
509 / 461 / 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];
не компилируется даже. Размер массива должен быть константой времени компиляции.
0
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];
не компилируется даже. Размер массива должен быть константой времени компиляции.
Я все равно еще не дошел до векторов
0
Schizorb
12.08.2013, 17:43     Напишите программу, которая кодирует фразы английского языка псевдолатынью
  #9

Не по теме:

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

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

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

2. Напишите программу, которая запрашивает координаты точки (x, y) - C++
Решите если кто-то сможет.Буду благодарен!

Напишите программу, которая находит сумму ряда - C++
напишите программу которая находит сумму 1+1/2+1/3+1/4+.....1/n

Напишите программу, которая вычисляет факториал числа - C++
Напишите программу, которая вычисляет факториал числа п. N должен быть введен с клавиатуры. Программа должна вывести также &quot;малый&quot;, если...


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

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

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