1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
|
||||||||||||||||
1 | ||||||||||||||||
Стоит задача сравнение и подсчета символов строки.11.09.2011, 14:09. Показов 2830. Ответов 23
Метки нет (Все метки)
Стоит задача сравнение и подсчета символов строки. Получается, сравнить только всю строку. Подскажите пожалуйста, как сравнивать символы строки, а не всю строку целиком, но при этом программа выполняла бы туже функцию, что и ниже приведенная. То есть массив А инициализировать как
0
|
11.09.2011, 14:09 | |
Ответы с готовыми решениями:
23
Сократить код. Задача про сравнение символов Написать программу подсчета пробелов, символов табуляции и новой строки Функция подсчета количества символов строки до точки с запятой и после нее Сравнение символов из строки |
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
|
||||||||||||||||
11.09.2011, 14:45 [ТС] | 3 | |||||||||||||||
Наверное, я Вас не правильно понял или неправильно написал программу. Ниже приведенная программа считает сколько нолей и единиц.
0
|
Заблокирован
|
|
11.09.2011, 18:19 | 4 |
А - вектор на каждой итерации сдвигай указатель в нём на один символ, и выполняй сравнение своих шаблонов "0000" до "1111" с первыми 4-мя символами вектора, делов - 2 минуты работы
Указатель в строке char * str сдвигаем так str++; Четыре первых символа обрабатываем в цикле. Corvette, тебе нужен подсчёт числа встречающихся в тексте подстрок "0000" до "1111"???
1
|
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
|
|
11.09.2011, 20:56 [ТС] | 5 |
Спасибо!
Да, мне надо входной массив символов разбить на тетрады и посчитать частоту появлений строк от 0000 до 1111 .
0
|
Заблокирован
|
|
11.09.2011, 21:04 | 6 |
- рассматривать тетрадами или сдвинули на символ и снова тетрадами смотрим, поясню на рисунке
Вариант 1 123456789... = 1234 5678 9.... //перемещаемся на 4 элемента Вариант 2 123456789... = 1234 56789 -> 2345 6789.. Какой именно вариант нужен, мне без разницы какой реализовывать, только логику сравнения уточняю, жду ответ!
1
|
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
|
||||||
11.09.2011, 23:51 [ТС] | 7 | |||||
Вариант №1. с перемещением на 4 элемента и сравнение каждой четверки с шаблонами.
Спасибо за помощь!!! Добавлено через 22 минуты Попытался вот но не считает, где ошибка?
Разбить на тетрады вроде получается, а вот сравнить с шаблонами нет. Я так понимаю, что когда я разбиваю на тетрады получаются строки вида {'0','1','0','1'} , а сравниваю я со строкой вида {"0101"}. Поэтому и не работает наверное! Как, при разбивки на тетрады в конце каждой четверки добавить элемент '\0'. Чтобы сравнение с строкой {"0101"} было корректным. Хотя может я и не прав (у меня опыта на С++ ооочень мало).
0
|
Заблокирован
|
||||||
12.09.2011, 12:46 | 8 | |||||
, вот лови код
1
|
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
|
|
12.09.2011, 16:44 [ТС] | 9 |
Спасибо огромное за помощь новичку в С++!!!
У меня программа компилируется но выдает предупреждение: [Warning] address of local variable `bin' returned строка №80 в функции char * DecToBinTetr(long num) и не считает частоту тетрад (на тетрады разбивает). Компилятор DEV-C++. Попробовал char bin[] инициализировать в main функции, но не помогло. Подскажите, пожалуйста, в чем может быть проблема?
0
|
Заблокирован
|
|
12.09.2011, 16:52 | 10 |
- в программе использован компилятор от VS 6.0!
PS я писал не в С++ а Си, сейчас поддумаю почему твой компилятор не хочет считать тетрады Добавлено через 2 минуты - могу переписать на С++ без - тетрады шаблона вбить заранее, 100%, почему мой алгоритм не отрабатывает не знаю - хрешу на компилятор (как видишь по скрину я не обманывал что алгоритм рабочий). Переписать?
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
12.09.2011, 16:52 | 11 | |||||
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
12.09.2011, 16:57 | 13 |
-=ЮрА=-, Его не должно быть. А так. Раз на раз не приходится. Не советую так делать. У тебя сработало - у других не сработает.
Он должен умирать после выхода из области видимости. Если не умирает и более того все работает отлично - стоит избавиться от такого компилятора.
1
|
Заблокирован
|
||||||
12.09.2011, 17:01 | 14 | |||||
ForEveR, специально для тебя, откомпилируй этот код,
0000 1000 0100 1100 0010 1010 0110 1110 0001 1001 0101 1101 0011 1011 0111 1111 Y - new input Добавлено через 2 минуты Сейчас просто вобъю эти тетрады в константный массив и исключу DecToBinTetr, раз её не все компиляторы курят... 0000 1000 0100 1100 0010 1010 0110 1110 0001 1001 0101 1101 0011 1011 0111 1111
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
12.09.2011, 17:03 | 15 | ||||||||||
И плюс.
Код
forever@pterois:~/My_pro1$ ./test_cpp *** stack smashing detected ***: ./test_cpp terminated ======= Backtrace: ========= /lib/i386-linux-gnu/libc.so.6(__fortify_fail+0x50)[0xb7621df0] /lib/i386-linux-gnu/libc.so.6(+0xe5d9a)[0xb7621d9a] ./test_cpp[0x80486c6] ./test_cpp[0x80486dd] /lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0xb7552e37] ./test_cpp[0x80485c1] ======= Memory map: ======== 08048000-08049000 r-xp 00000000 fb:03 5507222 /home/forever/My_pro1/test_cpp 08049000-0804a000 r--p 00000000 fb:03 5507222 /home/forever/My_pro1/test_cpp 0804a000-0804b000 rw-p 00001000 fb:03 5507222 /home/forever/My_pro1/test_cpp 09e3c000-09e5d000 rw-p 00000000 00:00 0 [heap] b753a000-b753c000 rw-p 00000000 00:00 0 b753c000-b7696000 r-xp 00000000 fb:01 654142 /lib/i386-linux-gnu/libc-2.13.so b7696000-b7697000 ---p 0015a000 fb:01 654142 /lib/i386-linux-gnu/libc-2.13.so b7697000-b7699000 r--p 0015a000 fb:01 654142 /lib/i386-linux-gnu/libc-2.13.so b7699000-b769a000 rw-p 0015c000 fb:01 654142 /lib/i386-linux-gnu/libc-2.13.so b769a000-b769d000 rw-p 00000000 00:00 0 b769d000-b76b7000 r-xp 00000000 fb:01 654614 /lib/i386-linux-gnu/libgcc_s.so.1 b76b7000-b76b8000 r--p 00019000 fb:01 654614 /lib/i386-linux-gnu/libgcc_s.so.1 b76b8000-b76b9000 rw-p 0001a000 fb:01 654614 /lib/i386-linux-gnu/libgcc_s.so.1 b76b9000-b76ba000 rw-p 00000000 00:00 0 b76ba000-b76de000 r-xp 00000000 fb:01 682081 /lib/i386-linux-gnu/libm-2.13.so b76de000-b76df000 r--p 00023000 fb:01 682081 /lib/i386-linux-gnu/libm-2.13.so b76df000-b76e0000 rw-p 00024000 fb:01 682081 /lib/i386-linux-gnu/libm-2.13.so b76e0000-b77bf000 r-xp 00000000 fb:01 135842 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14 b77bf000-b77c3000 r--p 000de000 fb:01 135842 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14 b77c3000-b77c4000 rw-p 000e2000 fb:01 135842 /usr/lib/i386-linux-gnu/libstdc++.so.6.0.14 b77c4000-b77cb000 rw-p 00000000 00:00 0 b77df000-b77e1000 rw-p 00000000 00:00 0 b77e1000-b77e2000 r-xp 00000000 00:00 0 [vdso] b77e2000-b77fe000 r-xp 00000000 fb:01 682083 /lib/i386-linux-gnu/ld-2.13.so b77fe000-b77ff000 r--p 0001b000 fb:01 682083 /lib/i386-linux-gnu/ld-2.13.so b77ff000-b7800000 rw-p 0001c000 fb:01 682083 /lib/i386-linux-gnu/ld-2.13.so bf93d000-bf95e000 rw-p 00000000 00:00 0 [stack] Аварийный останов
Код
forever@pterois:~/My_pro1$ ./test_cpp � 1000 0100 1100 0010 1010 0110 1110 0001 1001 0101 1101 0011 1011 0111 1111 Ошибка сегментирования
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
12.09.2011, 17:05 | 17 |
-=ЮрА=-, Адрес я выводил. Да с цифрами согласен.
Но говорю то же, что и раньше. Такой возврат некорректен.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
12.09.2011, 17:09 | 19 |
-=ЮрА=-, Ошибка сегмента шла из-за попытки free(Tetrads)
0
|
Заблокирован
|
||||||
12.09.2011, 17:12 | 20 | |||||
ForEveR, это тебе на С++ код
1
|
12.09.2011, 17:12 | |
12.09.2011, 17:12 | |
Помогаю со студенческими работами здесь
20
Сравнение символов строки Сравнение символов из строки Написать собственный класс для ввода и вывода строки, подсчета количества символов в строке Считывание строки, сравнение её символов и вывод Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |