с++ ПЕРЕСТАНОВКА СИМВОЛОВ - продолжение задачи
Primary tabs
начало - http://fkn.ktu10.com/?q=node/3376
изначально я полагал... возложить эту задачу на цикл, в котором создается третья (пустуя) строкя, в которую бы перемещал значения строки2. то есть:
if (str1[n] == str2[m]) t++; str3[t]=str2[m] n++ else m++;
результатом собственно треться строка и является
но потом решил что это равносильно
printf("строка2="str1) т.к. t = n
и в качестве решения не годится. подумал и решил запилить что-то вроде алгоритма сортировки
- Log in to post comments
- 13811 reads
baton
Fri, 01/11/2013 - 01:48
Permalink
перестановка
///////////
ок, исправился
vedro-compota
Fri, 01/11/2013 - 01:11
Permalink
н-ный элемент строки1 равен м
- типа конвертация си++ в русский язык?
интерпретатор моего мозга не настолько совершенен - если можно - пишите на русском - и правте сразу первый пост а не комментарий.
так зачем же давать ссылки на такие сайты? - на крайняк - копипастите информацию в блок- и подсвечивайте код -
такие ссылки ударяд по репе и нашего ресурса тоже.
я сделал их неактивными .
_____________
матфак вгу и остальная классика =)
baton
Fri, 01/11/2013 - 01:47
Permalink
подумавши мы придумавши такое
подумавши мы придумавши такое:
и запилить это в цикл....
vedro-compota
Fri, 01/11/2013 - 06:23
Permalink
возложить эту задачу
я предлагаю начать описание со слов -
вместо же формулировки словами мы опять видим некорректный код - который даже не оформлен в цикл - и что он работал (возможно) надо сделать "кучу допущений". =
в какой цикл? что вы будете в этом цикле изменять (какие счётчики) - это не очевидно.
так не пойдёт)))))))
я предлагаю вам продолжить формулировка задания.
Так как судя по всему мы не можете сходу внятно описать то, что собираетесь сделать.
_____________
матфак вгу и остальная классика =)
baton
Fri, 01/11/2013 - 22:58
Permalink
готовый рабочий код
без реализации перестановки символов - оказывается условие саму перестановку не подразумевало.... надо было реализовать только проверку. перед сном подправлю цикл перестановки и опубликую всю - заявлена же была с перестановкой.
да, сегодня узнал полезную фишку - код элемента есть сам элемент. подробности см. в коде
#include "stdio.h" #define _USE_MATH_DEFINES #include "math.h" #include "string" #include "conio.h" #include "iostream" using std::cout; using std::cin; using std::endl; void inputArray(char *str1, char *str2){ // объявление строк и переменных cout << "введите строку1: "; cin >> str1; cout << "введите строку2: "; cin >> str2; } int how_many_simvol_in_str(char simb, char* str) { int result = 0; for (int i = 0; str[i]; i++) if (str[i] == simb) result++; return result; } bool checkArray(char *str1, char *str2) { // первая проверка if (strlen(str1) != strlen(str2)) return false; for (int i = 0; str1[i]; i++) if (how_many_simvol_in_str(str1[i], str1) != how_many_simvol_in_str(str1[i], str2)) return false; return true; } bool checkArray2(char *str1, char *str2) { // вторая проверка if (strlen(str1) != strlen(str2)) return false; int chars1[256], chars2[256]; memset(chars1, 0, sizeof(chars1)); memset(chars2, 0, sizeof(chars2)); for (int i = 0; str1[i]; i++) { chars1[str1[i]]++; // полезная фишка - элемент массива номер которого есть код элемента строки chars2[str2[i]]++; } for (int i = 0; i < 256; i++) if (chars1[i] != chars2[i]) return false; return true; } int main() { setlocale(LC_ALL, "Russian"); char str1[1000], str2[1000]; int l, x; inputArray((char *) &str1, (char *) &str2); cout << checkArray((char *) &str1, (char *) &str2) << endl; cout << checkArray2((char *) &str1, (char *) &str2) << endl; getch () ; return 0 ; }прога выводит на экран два значения тру\фолс (от двух соответственно проверок). они, естественно, равны