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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
cyber_girl=)
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 15
#1

Работа с символьними строками - C++

31.01.2011, 15:06. Просмотров 1270. Ответов 11
Метки нет (Все метки)

Задача такова(если честно сама толком не поняла)
По индивидуальному заданию создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка C, но не применять их в своей функции.
Индивидуальная задание тут правда другой вариант а у меня другой хочу научится сама писать если кто нибудь покажет мне один пример!!!!
Пример: Функция - Compul(s1,s2). Назначение - сравнение строк s1 и та s2 с игнорированием различий в регистрах.

Описание метода решения

Символьная строка в языке C представляется в памяти как массив символов, в конце которого находится байт с кодом 0 - признак конца строки. Строку, как и любой другой массив можно обрабатывать либо традиционным методом - как массив, с использованием операции индексации, либо через указатели, с использованием операций адресной арифметики. При работе со строкой как с массивом нужно иметь в виду, что длина строки заранее неизвестна, так что циклы должны быть организованы не со счетчиком, а до появления признака конца строки.

Функция должна реализовывать поставленную задачу - и ничего более. Это означает, что функцию можно будет, например, перенести без изменений в любую другую программу, если спецификации функции удовлетворяют условиям задачи. Это также означает, что при ошибочном задании параметров или при каких-то особых случаях в их значениях функция не должна аварийно завершать программу или выводить какие-то сообщения на экран, но должна возвращать какое-то прогнозируемое значение, по которому та функция, которая вызвала нашу, может сделать вывод об ошибке или об особом случае.

Пожалуйста срочно нужно сделать до завтра,помогите пожалуйста!!!!

Добавлено через 40 минут
Пожалуйста очень нужна ваша помощь покажите пример? Я весь гугл обшарила в поисках чего-то похожего на мое задание не нашла так что вы моя последняя надежда!!!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2011, 15:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с символьними строками (C++):

Работа со строками - C++
Написать программу, которая считывает текст и определяет, сколько в нем слов, состоящих не более чем из четырех букв

Работа со строками - C++
Программа должна вывести строки, которые не содержат двузначных чисел. Строки вводятся пользователем(их 3). Программу я написал, но она не...

Работа со строками - C++
ммм, в общем задание такое: Если честно чувствую себя тупым, читая это задание... Препод сказал, что строка вводится без пробелов...

Работа со строками - C++
Даны строки S1 и S2. Удалить из строки S1 последнюю подстроку, совпадающую с S2. Если совпадающих подстрок нет, то вывести строку S1 без...

Работа со строками - C++
Здравствуйте! Прошу помочь разобраться с программой, она не работает, и я не могу понять почему. #include <iostream> #include...

Работа со строками - C++
Всем доброго времени суток. Я собрался поступать (в свои-то 22, года, балбес), и сдаю ЕГЭ по информатике. Все решаю более-менее в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
31.01.2011, 15:19 #2

Не по теме:

Цитата Сообщение от cyber_girl=) Посмотреть сообщение
Индивидуальная задание тут правда другой вариант а у меня другой хочу научится сама писать если кто нибудь покажет мне один пример!!!!
Спасибо, посмеялись


Пример
0
cyber_girl=)
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 15
31.01.2011, 15:25  [ТС] #3
Цитата Сообщение от Nameless One Посмотреть сообщение
Спасибо, посмеялись
нет серьезно у меня вот этот вариант Функция - Findwords(s,s1). Назначение - поиск вхождения в строку s заданной фразы (последовательности слов) s1. Ну если хотите порешайте эту
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
31.01.2011, 15:29 #4

Не по теме:

Цитата Сообщение от cyber_girl=) Посмотреть сообщение
Ну если хотите порешайте эту
не, я не смогу.



А если серьезно, то задания далеко не уникальные, и только на этом форуме подобные темы возникают раз в несколько недель. И гуглятся нараз
0
cyber_girl=)
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 15
31.01.2011, 15:29  [ТС] #5
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define TEST(A, B) printf("`%s' compare `%s': %d\n", (A), (B), strcompare((A), (B)))
int strcompare(const char*, const char*);
int main()
{
 TEST("FooBar", "foobar");
 TEST("FoObAr", "FoobaZ");
 TEST("a", "AB");
 TEST("f", "Ab");
 TEST("a(B)c", "A(b)C");
 exit(0);
}
/* Возвращает ноль, если строки равны;
 * -1, если первая строка меньше второй;
 * 1, в противном случае (все без учета различий в регистре символов)
 */
int strcompare(const char* str1, const char* str2)
{
 for( ; *str1 && *str2; ++str1, ++str2)
 {
 if(tolower(*str1) < tolower(*str2))
 return -1;
 else if(tolower(*str1) > tolower(*str2))
 return 1;
 }
return ((!*str1) && (!*str2) ? 0 : (!*str1) ? -1 : 1); 
}
Нам не разрешают использовать библиотечные функций. А мне нужно именно так как дано в задаче. А в суть задачи я никак не могу вникнуть вот поэтому я прошу показать мне пример просто нам сказали создать 3 метода с 1-ый массивами 2-ой с указателями и 3-ий мэйн
0
cyber_girl=)
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 15
31.01.2011, 15:31  [ТС] #6
Цитата Сообщение от Nameless One Посмотреть сообщение
А если серьезно, то задания далеко не уникальные, и только на этом форуме подобные темы возникают раз в несколько недель. И гуглятся нараз
Значит это надо уметь впрочем я не нашла просто зря потратила время так что решила обратится к вам помогите а?
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
31.01.2011, 15:47 #7
Цитата Сообщение от cyber_girl=) Посмотреть сообщение
Нам не разрешают использовать библиотечные функций
Ну, функцию tolower можно определить так:
C
1
2
3
4
5
6
7
int my_tolower(int c)
{
    if((c >= 'A') && (c <= 'Z'))
    c += 'a' - 'A';
    
    return c;
}
Цитата Сообщение от cyber_girl=) Посмотреть сообщение
так что решила обратится к вам помогите а?
Я не понял, ты просила пример, я дал тебе пример. Что еще-то надо?
1
cyber_girl=)
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 15
31.01.2011, 15:53  [ТС] #8
Цитата Сообщение от Nameless One Посмотреть сообщение
Я не понял, ты просила пример, я дал тебе пример. Что еще-то надо?
Конечно спасибо тебе БОЛЬШОЕ но просто мне нужен пример по заданию а не просто сравнивать строки. А по заданию надо создать функцию для обработки символьных строк. За образец брать библиотечные функции обработки строк языка C, но не применять их в своей функции.Символьная строка в языке C представляется в памяти как массив символов, в конце которого находится байт с кодом 0 - признак конца строки. Строку, как и любой другой массив можно обрабатывать либо традиционным методом - как массив, с использованием операции индексации, либо через указатели, с использованием операций адресной арифметики. При работе со строкой как с массивом нужно иметь в виду, что длина строки заранее неизвестна, так что циклы должны быть организованы не со счетчиком, а до появления признака конца строки.

Тот пример отвечает отвечает на все поставленные задачи?
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
31.01.2011, 15:57 #9
Цитата Сообщение от cyber_girl=) Посмотреть сообщение
Тот пример отвечает отвечает на все поставленные задачи?
Написано: либо через указатели, либо как массив. Я сделал через указатели. Примерную реализацию функции tolower я тоже написал (т.е. библиотечные функции теперь не используются), так что можно считать, что, отвечает
0
cyber_girl=)
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 15
31.01.2011, 16:02  [ТС] #10
Цитата Сообщение от Nameless One Посмотреть сообщение
Написано: либо через указатели, либо как массив. Я сделал через указатели. Примерную реализацию функции tolower я тоже написал (т.е. библиотечные функции теперь не используются), так что можно считать, что, отвечает
Просто другой вариант такой же задачи я решила (не без помощи конечно) через указатель а препод поставил мне 50 процентов объяснил тем что нету метода с массивами и дал другой вариант вот я сижу парюсь
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
31.01.2011, 16:12 #11
Цитата Сообщение от cyber_girl=) Посмотреть сообщение
препод поставил мне 50 процентов объяснил тем что нету метода с массивами и дал другой вариант вот я сижу парюсь
Вот тебе пример, как перебрать в цикле элементы строки как массива:
C
1
2
3
4
const char* c = "foobar";
size_t i;
for(i = 0; c[i]; ++i)
    /* Доступ по индексу - c[i] */
1
cyber_girl=)
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 15
31.01.2011, 16:48  [ТС] #12
Можешь код полностью написать чет я не вникаю...))))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2011, 16:48
Привет! Вот еще темы с ответами:

Работа с строками - C++
С клавиатуры вводится строка. Разработать программу, которая реализует указанные действия. а) замінює всі великі літери, що входять до...

Работа со строками - C++
Подскажите пожалуйсто!!! Как удалить часть строки не создавая при этом новой строки?

Работа со строками C++ - C++
Решил посвятить этой проблеме отдельную тему. В попытке написать ответ к этой задаче на С++ запнулся на работе со строками. Собственно...

Работа со строками - C++
Вставить после вхождения строки str подстроку str1. Попытался сам сделать, но дальше этого работа не идёт. Нужна помощь. #include...


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

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

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