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

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

Войти
Регистрация
Восстановить пароль
 
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
#1

Строки - C++

23.05.2010, 18:27. Просмотров 1028. Ответов 14
Метки нет (Все метки)

Дана строка символов до точки. Оставить в ней только слова, начинающиеся на буквы "А" , "D", "K", "P" .
желательно с объяснением, спасибо.

Добавлено через 1 час 40 минут
ап ап ап

Добавлено через 1 час 26 минут
ёё народ!!! хэлп
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2010, 18:27     Строки
Посмотрите здесь:

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: "Добавить строки, начиная...

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Ввести строки и через n символов первой строки вставить вторую строку, и так до конца строки - C++ Builder
Помогите исправить баг задача состоит в следующем :ввести строку и простроку тоесть две строки и надо через (n) символов первой строки...

Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки - Java
Помогите пожалуйста! 1)Даны три строки. Определить можно ли из символов третьей строки получить первую и вторую строки. 2)Дана...

Слить две строки, вставив символы одной строки между символами другой строки - Pascal
Строка a из n символов лексикографически меньше строки b из n символов, если существует такой индекс j, что aj < bj, а для всех i < j ai =...

Сравнить строки, первый несовпадающий элемент строки-приемника записать в регистр AL, строки-источника - в DL - Assembler
Помогите написать программу на ассемблерене совсем еще разобрался с этим задание: Ввести с клавиатуры две строки одноразрядных...

Строки. Если в конце строки точка отсутствует, то найти слово, заканчивающееся точкой и перенести его в конец строки. - Pascal
Дана строка, состоящая из слов и содержащая одну точку в конце одного из слов. Если в конце строки точка отсутствует, то найти слово,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
23.05.2010, 19:08     Строки #2
Цитата Сообщение от so1o Посмотреть сообщение
Дана строка символов до точки. Оставить в ней только слова, начинающиеся на буквы "А" , "D", "K", "P" .
желательно с объяснением, спасибо.

Добавлено через 1 час 40 минут
ап ап ап

Добавлено через 1 час 26 минут
ёё народ!!! хэлп
держи
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 <iostream>
#include <clocale>
#include <conio.h>
#include <io.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
 
void main ()
{
setlocale(LC_CTYPE, "rus");
int len;
char str[255], strnew[255]="\0";
char *pointer;
        cout<<"Введите строку: ";
        cin.getline(str,254);//вводим строку в массив символов str
                pointer=strtok(str, " ");//делим массив символов на слова функцией strtok, разделитель - пробел " ", можно указать точку, или запяту или все вместе перечислив их в строке " .,"
                if(pointer[0]=='a'||pointer[0]=='d'||pointer[0]=='k'||pointer[0]=='p')//условие, если 1й символ слова(в массиве нумерация начинается с 0 поэтому [0]) равен определенным буквам то
                {strcat(strnew,pointer);strcat(strnew," ");}//добавляем его к новой строке и потом добавляем пробел, чтобы слова не сливались.
                    while(1)//бесконечный цикл
                    {
                        pointer=strtok(NULL, " ");//повторый вызов деления на слова вызывается с нулевым указателем в цикле, для извлечения оставшихся слов.
                        if(pointer==NULL)//если слов больше не осталось, strtok возвращает NULL, следовательно
                        {break;}//мы выходим из цикла
                        if(pointer[0]=='a'||pointer[0]=='d'||pointer[0]=='k'||pointer[0]=='p')//условие, если 1й символ слова(в массиве нумерация начинается с 0 поэтому [0]) равен определенным буквам то
                        {strcat(strnew,pointer);strcat(strnew," ");}//добавляем его к новой строке и потом добовляем пробел, чтобы слова не сливались.
                    }
                    cout<<"Выводим новую строку "<<strnew<<endl;//выводим новую строку
}
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
23.05.2010, 19:37  [ТС]     Строки #3
спасибо биг)) можно еще вопрос))
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
23.05.2010, 19:38     Строки #4
конечно задавай для этого и нужен форум
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
23.05.2010, 19:39  [ТС]     Строки #5
что за функция стрток??
и почему поинтер постоянно начинается с нуля?
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
23.05.2010, 19:47     Строки #6
Цитата Сообщение от so1o Посмотреть сообщение
что за функция стрток??
и почему поинтер постоянно начинается с нуля?
strtok - разбивает строку на подстроки, используя символ делитель, в данном случаи мы используем символ пробела поэтому в двойных кавычках вторым аргументом стоит " "
поинтер - это указатель уже на разбитые подстроки - слова, начинается он с [0] потому что любой массив начинается с нулевого элемента, а нам нужна первая буква каждого слова, соответственно она хранится в нулевом элементе, если ты исправишь на [1], то он будет сверять со второй буквой слова... итд...
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
23.05.2010, 19:56  [ТС]     Строки #7
значит пойнтер хранит в себе все слова??
pointer=strtok(NULL, " ");/ можете это объяснить по простому

Добавлено через 5 минут
и еще почему мы стрнью инициализировали терм нулем?
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
23.05.2010, 20:02     Строки #8
Цитата Сообщение от so1o Посмотреть сообщение
значит пойнтер хранит в себе все слова??
pointer=strtok(NULL, " ");/ можете это объяснить по простому
в нем перебираются все слова. первый раз мы вызываем его с полной строкой (он нам возвращает перовое слово в строке) и поинтер указывает на первое слово, далее мы вызываем в цикле strtok с нулем(NULL), и он последовательно из той строки которую мы ему передали в первый раз берет слова, начиная со второго пока не дойдет до конца...

Добавлено через 3 минуты
Цитата Сообщение от so1o Посмотреть сообщение
и еще почему мы стрнью инициализировали терм нулем?
это символ конца строки, т.е. мы обозначили что строка у нас сразу заканчивается, чтобы потом добавлять к пустой строке слова, функцией strcat, если убрать "\0", программа скомпилируется, но будет давать ошибку при исполнении, т.к. не понятно куда добавлять слово, нет конца строки - "\0"
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
23.05.2010, 20:04  [ТС]     Строки #9
а вот еще вопрос , я не могу понять вот пойнтер 0 значит на первую букву, а вот какого слова??
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
23.05.2010, 20:08     Строки #10
Цитата Сообщение от so1o Посмотреть сообщение
а вот еще вопрос , я не могу понять вот пойнтер 0 значит на первую букву, а вот какого слова??
когда мы вызываем первый раз
C++
1
 pointer=strtok(str, " ");
то на первое
дальше в цикле на второе, третье итд(в зависимости от того сколько раз выполнился цикл.). пока не закончатся слова.
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
23.05.2010, 20:43  [ТС]     Строки #11
ура хоть что-то стал понимать
спасибо вам огромное

Добавлено через 23 минуты
а как сравнивать слова?
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
23.05.2010, 20:45     Строки #12
Цитата Сообщение от so1o Посмотреть сообщение
а как сравнивать слова?
int strcmp(const char *s1, const char *s2); - Сравнивает две строки. Возвращает отрицательное значение, если s1<s2; нуль, если s1==s2; положительное значение, если s1>s2. Параметры - указатели на сравниваемые строки.
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
23.05.2010, 20:49  [ТС]     Строки #13
а что значит больше меньше??
вот например
АВС и АВС как их сравнить?
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
23.05.2010, 20:58     Строки #14
Цитата Сообщение от so1o Посмотреть сообщение
а что значит больше меньше??
сравниваются коды символов из таблицы ASCII, по-буквам, если буквы одинаковые то и коды одинаковые, если разные берется разница кодов.
Цитата Сообщение от so1o Посмотреть сообщение
вот например
АВС и АВС как их сравнить?
char *p="ABC";
char *p2="abc";

if(strcmp(p, p2)==0);
{код исполниться если строки одинаковы}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2010, 21:16     Строки
Еще ссылки по теме:

Строки. Определить длину введенной строки, если длина кратна 4, то первая часть строки меняется местами со второй - Turbo Pascal
Ввести с клавиатуры строку символов.признак окончания ввода строки-нажатие клавиши ввод.Программа должна определить длину введенной строки...

БД с операциями: добавление новой строки, удаление строки, редактирование имеющейся строки - PascalABC.NET
Нужно создать базу данных в паскале, с операциями: добавление новой строки, удаление строки, редактирование имеющей строки. Желательно с...

Строки. Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1 - Turbo Pascal
Даны строка S и подстрока S1.Удалить из строки S все вхождения строки S1.В строке S подсчитать кол-во вхождений строки S1.

Строки. Даны строки S и So. Найти количество вхождений строки So в строку S - Turbo Pascal
Помогите пожалуйста, как сделать эту задачу без этих вот строчек... B:=TRUE; и без команды INC... Вот условие задачи: Даны строки S и...

Определить длину строки. Если длина строки >6, удалить часть строки в { } скобках. - Turbo Pascal
Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши &quot;Ввод&quot;. Программа должна определить длину введенной...


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

Или воспользуйтесь поиском по форуму:
so1o
33 / 33 / 2
Регистрация: 16.11.2009
Сообщений: 192
23.05.2010, 21:16  [ТС]     Строки #15
а почему у меня функция textcolor не работает в Дев С++
Yandex
Объявления
23.05.2010, 21:16     Строки
Ответ Создать тему
Опции темы

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