Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
4 / 4 / 1
Регистрация: 28.05.2013
Сообщений: 40
1

Работает не так как надо

18.06.2013, 15:18. Показов 1512. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
я ввожу ааа - выводит qqq
а должен выводить qaz
что нужно поменять?
хотя бы на примере первого цикла

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
void tras::EncButtonClick()
{
 
QString text=txtA->text();
QString ar1[6]={tr("а"),tr("б"),tr("в"),tr("г"),tr("д"),tr("ж")};
QString ar2[6]={tr("q"),tr("w"),tr("e"),tr("r"),tr("t"),tr("y")};
QString ar3[6]={tr("a"),tr("s"),tr("d"),tr("f"),tr("g"),tr("h")};
QString ar4[6]={tr("z"),tr("x"),tr("c"),tr("v"),tr("b"),tr("n")};
QString ar5[6]={tr("й"),tr("ц"),tr("у"),tr("к"),tr("е"),tr("н")};
QString ar6[6]={tr("ф"),tr("ы"),tr("п"),tr("р"),tr("о"),tr("л")};
QString ar7[6]={tr("д"),tr("ш"),tr("з"),tr("щ"),tr("ю"),tr("я")};
QString r=txtA->text();
 
for (int i =0; i<6; i++) 
{
    text.replace(ar1[i], "~");
    text.replace(ar2[i],ar1[i]);
    text.replace("~",ar2[i]);
}
 
for (int i =1; i<6; i++) 
{
    text.replace(ar2[i], "№");
    text.replace(ar3[i],ar2[i]);
    text.replace("№",ar3[i]);
}
 
for (int i =2; i<6; i++) 
{
    text.replace(ar3[i], "$");
    text.replace(ar4[i],ar3[i]);
    text.replace("$",ar4[i]);
}
 
for (int i =3; i<6; i++) 
{
    text.replace(ar4[i], "%");
    text.replace(ar5[i],ar4[i]);
    text.replace("%",ar5[i]);
}
 
for (int i =4; i<6; i++) 
{
    text.replace(ar5[i], "*");
    text.replace(ar6[i],ar5[i]);
    text.replace("*",ar6[i]);
}
 
for (int i =5; i<6; i++) 
{
    text.replace(ar6[i], "@");
    text.replace(ar7[i],ar6[i]);
    text.replace("@",ar7[i]);
}
 
 
txtA->setText(text);
 
}
Добавлено через 9 минут
немного исправил.
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
void tras::EncButtonClick()
{
 
QString text=txtA->text();
QString ar1[6]={tr("а"),tr("б"),tr("в"),tr("г"),tr("д"),tr("ж")};
QString ar2[6]={tr("q"),tr("w"),tr("e"),tr("r"),tr("t"),tr("y")};
QString ar3[6]={tr("a"),tr("s"),tr("d"),tr("f"),tr("g"),tr("h")};
QString ar4[6]={tr("z"),tr("x"),tr("c"),tr("v"),tr("b"),tr("n")};
QString ar5[6]={tr("й"),tr("ц"),tr("у"),tr("к"),tr("е"),tr("н")};
QString ar6[6]={tr("ф"),tr("ы"),tr("п"),tr("р"),tr("о"),tr("л")};
QString ar7[6]={tr("д"),tr("ш"),tr("з"),tr("щ"),tr("ю"),tr("я")};
 
for (int i =0; i<6; i++) 
{
    text.replace(ar1[i], "~");
    text.replace(ar2[i],ar1[i]);
    text.replace("~",ar2[i]);
}
 
for (int i =1; i<6; i++) 
{
    text.replace(ar1[i], "№");
    text.replace(ar3[i],ar1[i]);
    text.replace("№",ar3[i]);
}
 
for (int i =2; i<6; i++) 
{
    text.replace(ar1[i], "$");
    text.replace(ar4[i],ar1[i]);
    text.replace("$",ar4[i]);
}
 
for (int i =3; i<6; i++) 
{
    text.replace(ar1[i], "%");
    text.replace(ar5[i],ar1[i]);
    text.replace("%",ar5[i]);
}
 
for (int i =4; i<6; i++) 
{
    text.replace(ar1[i], "*");
    text.replace(ar6[i],ar1[i]);
    text.replace("*",ar6[i]);
}
 
for (int i =5; i<6; i++) 
{
    text.replace(ar1[i], "@");
    text.replace(ar7[i],ar1[i]);
    text.replace("@",ar7[i]);
}
 
 
txtA->setText(text);
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.06.2013, 15:18
Ответы с готовыми решениями:

Код работает, но не так как надо
Здравствуйте. Нужно, чтобы строка поиска увеличивалась в длине от 0px до 130px при нажатии...

Код работает не так, как надо
Нужно ввести строку и слово и чтобы выводились порядковые номера слов в строке, совпадающих с...

Код работает не так, как надо
Нужно ввести строку и слово и чтобы выводились порядковые номера слов в строке, совпадающих с...

Почему не работает так как надо
#include &lt;vcl.h&gt; #pragma hdrstop #include &quot;Unit1.h&quot;...

10
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
18.06.2013, 22:15 2
ну я бы для начала хотел бы узнать саму задачу которая перед вами стоит....
0
4 / 4 / 1
Регистрация: 28.05.2013
Сообщений: 40
19.06.2013, 00:12  [ТС] 3
у меня есть массив1 - это обычный алфавит.
и есть массив2-массив7.
длинна вводимого слова - 6 букв.
например мне нужно ввести привет, и что бы букву п заменило на 1 букву из 1 массива. р- на 2 букву из 2 массива. и - из 3.
а если легче, без моих массивов, то вся задача состоит в том, что это шифр
каждая последующая буква шифруется определенным сдвигом
1- на 2 назад
2- на 6 назад
3- без изменений
4- на 6 назад
5- на 7 назад
6- на 3 назад
я хотел схитрить и записал готовые сдвиги в 6 массивов и хотел добиться простой замены. но, как видите, не совсем получилось

Добавлено через 33 минуты
как-то нужно использовать либо mid чтобы брал i-ый символ и заменял на символ из другого массива.
либо делать 6 сдвигов. (сдвиги выше)
тут массивы пробные. буквы на халяву.
по идее должен быть алфавит, но так пока проще разобраться
0
 Аватар для Vetos
4 / 4 / 0
Регистрация: 22.09.2009
Сообщений: 69
19.06.2013, 00:46 4
Ну если ты сдвигаешь по алфавиту, то могу предложить такой вариант.

у тебя есть алфавит в одном массиве, просто находишь индекс нужной буквы в алфавите и сдвигаешь на описанные позиции. Я бы для этой задачи использовал QVector<String> т.к. в нем обустроены функции поиска и выдаче индекса. Ну вот к примеру функция которая будет производить сдвиг:

C++
1
2
3
4
5
6
7
8
9
10
11
QVector<Qstring> alphabet;
 
alphabet.add("a");
...//добавляешь бкувы. Причем можешь в любом порядке, от этого шифр только сложнее.
 
QString encode(QString toEncode, int shift) //где toEncode - символ для шифрования, shift - сдвиг;
{
       int index = alphabet.Count(toEncode)+shift;
       if(index<0)index+=alphabet.Count()-1; //тут -1 потомучто нам нужны индексы а не порядковый номер;
       return alphabet.value(index+shift);
}
Тут если ты уйдешь меньше нуля, мы попадем в конец алфавита так будто перед началом только что закончился другой.Если будут сдвиги вперед нужно тоже самое только переместить с конца в начало, так будто начался новый алфавит, ну типа "а..я а..я а..я":

QString encode(QString toEncode, int shift) //где toEncode - символ для шифрования, shift - сдвиг;
{
int index = alphabet.Count(toEncode)+shift;
if(index<0)index+=alphabet.Count()-1;
if(index>alphabet.Count-1)index-=alphabet.Count-1;
return alphabet.value(index+shift);
}

ну и функцию кодировки куска текста из 6ти букв, можно так изобразить:

C++
1
2
3
4
5
6
7
8
9
10
11
QString encodeString(QString toEncode)
{
         QString result;
         result = encode(toEncode[0],-2);
         result+= encode(toEncode[1],-6);
         result+= encode(toEncode[2],0); // можно просто присвоить toEncode[2];
         result+= encode(toEncode[3],-6);
         result+= encode(toEncode[4],-7);
         result+= encode(toEncode[5],-3);
         return result;
}
Теперь можешь резать текст на куски по 6 символов, и кодировать любые тексты добавив в алфавит знаки препинания цифры и т.п.
1
4 / 4 / 1
Регистрация: 28.05.2013
Сообщений: 40
19.06.2013, 00:54  [ТС] 5
Спасибо, сейчас попробую разобраться.
0
 Аватар для Vetos
4 / 4 / 0
Регистрация: 22.09.2009
Сообщений: 69
19.06.2013, 00:55 6
Кстати можешь на принципе второй функции шифрования построить дешифратор, просто заменив в сдвиге "-" на "+".
Там кстати я ошибся
C++
1
alphabet.append("a");
Модератор оберни вторую функцию в тег код, спасибо
1
4 / 4 / 1
Регистрация: 28.05.2013
Сообщений: 40
19.06.2013, 01:06  [ТС] 7
т.е. код выглядит так?

C++ (Qt)
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
void tras::EncButtonClick()
 
{   
QString text=txtA->text();
QVector<Qstring> alphabet;
 
alphabet.append("абвгдеёжзийклмнопрстуфхцчшщъыьэюя");
 
QString encode(QString toEncode, int shift) //где toEncode - символ для шифрования, shift - сдвиг;
{
        int index = alphabet.Count(toEncode)+shift;
        if(index<0)index+=alphabet.Count()-1;
        if(index>alphabet.Count-1)index-=alphabet.Count-1;
        return alphabet.value(index+shift);
}
QString encodeString(QString toEncode)
{
         QString result;
         result = encode(toEncode[0],-2);
         result+= encode(toEncode[1],-6);
         result+= encode(toEncode[2],0); // можно просто присвоить toEncode[2];
         result+= encode(toEncode[3],-6);
         result+= encode(toEncode[4],-7);
         result+= encode(toEncode[5],-3);
         return result;
}
txtA->setText(result);
}
0
 Аватар для Vetos
4 / 4 / 0
Регистрация: 22.09.2009
Сообщений: 69
19.06.2013, 01:10 8
Не, тебе нужно каждый символ алфавита поотдельности добавить, ну или в цикле извлекать из строки:
C++
1
2
3
QString alphabetString = "aбвгд...эюя";
QVector<QString> alphabet;
for(int i=0;i<alphabetString.Count;i++)alphabet.append(alphabetString[i]);
И переменные алфавитов делай глобальными а не внутри кнопки, там может можно и без QVector'а обойтись, может и в самой QString можно узнать индекс символа, ну QString тот же массив))
1
4 / 4 / 1
Регистрация: 28.05.2013
Сообщений: 40
19.06.2013, 01:14  [ТС] 9
А можно попросить вас целиком процедуру написать. я уже не понимаю куда этот кусок вставлять.
как у меня будет читать текст из моего txtA.
и сравнивать его с массивом букв
0
 Аватар для Vetos
4 / 4 / 0
Регистрация: 22.09.2009
Сообщений: 69
19.06.2013, 01:23 10
у тебя вообще что, окно с формой, просто виджет? переменные определяешь в полях класса виджета, заполняешь их в конструкторе, добавляешь эти две функции, по нажатию на кнопку просто используешь функцию encodeString. Полностью прогу могу написать но не сегодня, завтра вечером если вопрос не решишь
0
4 / 4 / 1
Регистрация: 28.05.2013
Сообщений: 40
19.06.2013, 02:52  [ТС] 11
Цитата Сообщение от Vetos Посмотреть сообщение
у тебя вообще что, окно с формой, просто виджет? переменные определяешь в полях класса виджета, заполняешь их в конструкторе, добавляешь эти две функции, по нажатию на кнопку просто используешь функцию encodeString. Полностью прогу могу написать но не сегодня, завтра вечером если вопрос не решишь
да, просто виджет.
Эх. Ну ладно. Вообще сдавать, завтра, но, возможно дадут еще один день.
Большое спасибо за помощь!

Добавлено через 58 минут
Готово. Сделано.

Добавлено через 25 минут
Хотя хотелось бы увидеть ваш вариант.
0
19.06.2013, 02:52
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.06.2013, 02:52
Помогаю со студенческими работами здесь

Работает не так как надо(классы)
Задача. Создать класс хранящий в себе инн. Проверить его на верность и вывести результат. class...

Find работает не так как надо
Здравствуйте, как правильно решить систему уравнений? PTC Mathcad Prime 3.1

Почему работает не так как надо?
В общем вот в чем вопрос, есть код на СИ. Задача такова ввести с клавы день, месяц, год рождения...

GetJson работает не так, как надо
$.getJSON('mark.php', function(data) { $.each(data, function(lat, lng){ var marker = new...

Ctrl работает не так как надо
При нажатии клавиши ctrl печатается символ *, а при использовании сочетания клавиш вида ctrl +...

Цикл не работает так как надо
Всем привет! Народ, у меня цикл в программе работает не так как надо. 1 круг цикла происходит в...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
Rust или Go? А может C++?
hw_wired 28.01.2025
С каждой новой технологией или методологией появляются новые языки программирования, призванные решать конкретные задачи либо улучшать аспекты производительности и безопасности. Среди множества. . .
Fortran и WinAPI: как создать приложение с графическим интерфейсом
hw_wired 28.01.2025
Fortran — это один из старейших высокоуровневых языков программирования, широко используемый в науке и инженерии уже несколько десятилетий. Его название происходит от "Formula Translation" (перевод. . .
Списки в Haskell
hw_wired 28.01.2025
Haskell является функциональным языком программирования, который отличается лаконичностью синтаксиса и мощными абстракциями. Важным концептом в Haskell являются списки — упорядоченные коллекции. . .
Функции высшего порядка в Haskell
hw_wired 28.01.2025
Haskell – это современный функциональный язык программирования, который получил широкое распространение благодаря своей выразительности и мощным абстракциям. Одной из ключевых особенностей Haskell. . .
Как в цикле обойти все поля объекта в JavaScript
bytestream 28.01.2025
Объекты в JavaScript представляют собой фундаментальные структуры данных, которые позволяют хранить и организовывать связанную информацию в виде пар ключ-значение. Каждый объект можно представить как. . .
Как выбрать строки в DataFrame по значению столбца в Pandas
bytestream 28.01.2025
В области анализа данных библиотека Pandas стала незаменимым инструментом для работы с табличными данными в Python. Эта мощная библиотека предоставляет множество функций для эффективной обработки и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru