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

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

Войти
Регистрация
Восстановить пароль
 
sword7i
3 / 3 / 0
Регистрация: 25.09.2012
Сообщений: 92
#1

Функция для обработки строк - C++

17.03.2013, 20:13. Просмотров 1012. Ответов 3
Метки нет (Все метки)

Добрый вечер. Помогите пожалуйста с функциями для обработки строк. Нужно написать три функции:
  1. Функция void delNsymbl TCHAR* str, int n) получает строку, число n и удаляет из строки первые n символов.
  2. Функция TCHAR* poisk1BigAlfa (TCHAR* str), получив строку, ищет в ней адрес первого прописного буквенного латинского символа, за которым следует или перед которым стоит его строчный символ. Если таких символов нет, функция возвращает адресный 0.
  3. Функция int smallSymb(TCHAR* str) получает строку str и удаляет прописные символы, если они дублируют рядом стоящий строчный символ. Функция возвращает количество удаленных символов. Используйте при разработке алгоритма функции функции delNsymbl и poisk1BigAlfa.
С первой функцией мне все понятно, вот что у меня получилось (проверьте пожалуйста)
C++
1
2
3
4
5
6
7
8
9
#include <stdafx.h>
#include <string.h>
#include <ctype.h>
#define TCHAR char
 
void delNsymbl (TCHAR* str, int n)
{
    for (TCHAR* p=str+n;*str=*p;str++,p++);
}
Вторая вышла нерабочая и очень корявая:
C++
1
2
3
4
5
6
7
8
9
10
11
TCHAR* poisk1BigAlfa (TCHAR* str)
{
    TCHAR* BigA;
    for (int p=0;*(str+p)=='\0';p++)
    {
        if ((*(str+p)==*(str+p+1) && islower(*(str+p+1))) || (*(str+p)==*(str+p-1) && islower(*(str+p-1))))
        BigA=str+p;
        return BigA;
    }
        return 0;
}
Ну а за третью даже не брался, т.к. для ее работы требуются первая и вторая функции.
Мужики, выручайте!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 20:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция для обработки строк (C++):

Функция для обработки строк - C++
Написать функцию, возвращающую самое длинное слово в строке.

Создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка С, но не применять их в своей функции - C++
Доброго времени суток! Крайне необходима помощь экспертов в С++! Кто может - не оставьте меня в беде))) Вот задания: 3. Создать...

Функция обработки строк - C++
Нобходимро написать программку функция main() которой содержит вызов функции strlwr char *strlwr( char *s); и вызов пользовательской...

Задание для обработки массива строк - C++
Сформировать динамический массив, состоящий из динамических строк. Распечатать сформированный массив. Удалить все строки в которых...

Использование указателей на функцию для обработки строк - C++
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;iostream&gt; using namespace std; void check(char *a, char *b, int...

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

3
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
17.03.2013, 21:02 #2
Цитата Сообщение от sword7i Посмотреть сообщение
for (TCHAR* p=str+n;*str=*p;str++,p++);
Сами придумали или где увидели?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char* poisk1BigAlfa (char* str)
{
   int dif = abs('a' - 'A');
 
   for (int p=0;*(str+p)=='\0';p++)
   {
      if (abs(str[p] - str[p+1]) == dif)
      {
         if (isupper(str[p])
            return str[p];
         else
            return str[p+1];
      }
   }
 
   return 0;
}
Добавлено через 5 минут
Цитата Сообщение от sword7i Посмотреть сообщение
(*(str+p)==*(str+p+1) && islower(*(str+p+1)))
Кстати коды прописных букв не равны кодам тех же строчных букв.
1
sword7i
3 / 3 / 0
Регистрация: 25.09.2012
Сообщений: 92
17.03.2013, 22:08  [ТС] #3
Цитата Сообщение от kazak Посмотреть сообщение
Сами придумали или где увидели?
Сам дошел до этого, но изначально кода было больше.
Большое спасибо за функцию, сначала подумал причем здесь английская 'A', но затем понял, что невнимательно прочитал задание (думал, что для всех букв нужно искать данный случай). Теперь буду пытаться сделать третью функцию.

Добавлено через 25 минут
kazak, все-таки, мне кажется, что под адресом "первого прописного буквенного латинского символа" подразумевается не первый символ алфавита 'A', а первый по счету (любой) латинский символ перед или после которого стоит его маленький собрат.
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
18.03.2013, 00:02 #4
Цитата Сообщение от sword7i Посмотреть сообщение
все-таки, мне кажется, что под адресом "первого прописного буквенного латинского символа" подразумевается не первый символ алфавита 'A', а первый по счету (любой) латинский символ перед или после которого стоит его маленький собрат.
Буквы в компьютере кодируются числами, прописные буквы имеют свой числовой код, строчные свой. Буквы кодируются последовательно (по крайней мере латинские), в следствии чего разница между кодом прописной и кодом строчной для каждой буквы будет одинаковой. Как раз строчка
Цитата Сообщение от kazak Посмотреть сообщение
C++
1
int dif = abs('a' - 'A');
всего лишь вычисляет данную разность.
Для просвещения http://ascii.org.ru/ascii.pdf
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2013, 00:02
Привет! Вот еще темы с ответами:

Дружественная функция для сравнения строк - C++
По заданию надо написать дружественную функцию, к-рая бы выводила список студентов заданного факультета. Не понимаю как надо правильно...

Нужна рекурсивная функция для переворачивания строк - C++
Write a recursive function to reverse a string :coffee:

нужна функция для обмена строк двумерного массива на плюсах - C++
доброго времени суток нужна ваша помощь в решении задачи вот здесь она уже решена но это c# а мне нужно точно такаяже прога на плюсах...

Шаблонная функция для чтения целых чисел, дробных, строк из файла - C++
Необходимо написать шаблонную функцию для чтения целых чисел, дробных, строк из файла. С числами все работает. Но при чтении строк...


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

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

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