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

Подсчёт количества символов и замена - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Отсортировать и выдать на экран список http://www.cyberforum.ru/cpp-beginners/thread716564.html
После ввода с клавиатуры строками некоторых фамилий и рядом с ними возраста (год рождения) отсортировать и выдать на экран этот список, но отсортированными в порядке, обратном алфавитному, фамилиями
C++ Задача на двумерный массив (Удалить все столбцы по условию) в двумерном массиве , элементы которого все целые числа , произвести следующие действия . Удалить все столбцы , в которых все элементы положительны http://www.cyberforum.ru/cpp-beginners/thread716558.html
C++ Для каждой строки матрицы найти последний четный элемент и записать данные в новый массив
Дан массив размером n*n , элементы которого целые числа . Для каждой строки найти последний четный элемент и записать данные в новый массив
C++ Сделать отступы
Есть некоторый файл с четверостишиями, допустим text.txt Qwe Asd Zxc Rty Fgh Vbn Uio Jkl
C++ удаление чисел http://www.cyberforum.ru/cpp-beginners/thread716529.html
Составить функцию, которая, получив целое число, формирует новое число, удалив из него каждую четную цифру, начиная счет цифр с первой слева.
C++ Кол-во знаков препинания и букв в строке Требуется подсчитать кол-во букв и знаков препинания в строке, но программа упорно не хочет считать буквы, выдаёт кол-во равное нулю. В чём проблема? #include <conio.h> #include <iostream.h> #include <string.h> #include <stdlib.h> int main() { int i, size; char str; подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
03.12.2012, 11:07     Подсчёт количества символов и замена
melanu, теперь об ошибках.
Цитата Сообщение от melanu Посмотреть сообщение
*str++;
- это что и зачем оно?
Самая главная из них
Цитата Сообщение от melanu Посмотреть сообщение
while (*str){
* * * * if (*str=='0'){
* * * * * * *str='O';
* * * * * * *(str+1)='O';
* * * * * * *str=*(str+2);
- во первых вы стираете символ после 0 т..е скажем идёт строка str0ka вы делаете так strOOa но это ещё пол беды, самое страшное вы в такой ситуации
strok0 = strokOO
будете во первых выскакивать за отведнную под строку память т.к будете вставлять второй символ уже после конца строки (думаю понятно что программа в этом случае имеет всего один вариант отработки - крах). Но это ещё не всё, далее в цикле вы ещё разок выскочите за отведенную память
Цитата Сообщение от melanu Посмотреть сообщение
*str=*(str+2);
melanu, запомните задачи со вставкой должны решаться либо с выделением доп памяти либо если размер выделенного блока под строку позволяет - предусматривать специальный механизм копирования хвоста строки (опять же в буффер) вставкой новых элементов и затем добавлением из буффера хвоста(или если без буфера то хотябы копировать хвост в позицию на 1 символ после вставки и запомните в этом случае никаких strcpy - только вставка символов через цикл strcpy не может копировать строку "назад в саму себя").

Теперь о менее значительных огрехах:
Цитата Сообщение от melanu Посмотреть сообщение
for (i=0; i<*str; i++)
* * * * if (toupper(*str)=='A'){
* * * * * * i_A=i;
* * * * * * break;
* * * * }
* * for (i=*str; i>0; --i)
* * * * if (toupper(*str)=='B'){
* * * * * * i_B=i;
* * * * * * break;
* * * * }
* * for (i=i_A; i<i_B; i++){
* * * * if(*str=='+')
* * * * * * kol=kol+1;
- это колосальнейшая нерациональность, нет даже КОЛОСАЛЬНЕЙШАЯ. Вы 3 раза просматриваете строку, представьте ситацию если текстовый блок 20 Мб, вы что на решения задачи 3 прохода по нему будете делать?
Выше показал как всё делать за 1-н проход с флагами. А вообще задача подсчёта числа символов решается с помощью strchr но думаю вам эту функцию пока нельзя использовать т.к преподаватель видимо требует решение только через циклы
 
Текущее время: 00:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru