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

Найти в строе заданое слово - C++

Восстановить пароль Регистрация
 
Vitala
0 / 0 / 0
Регистрация: 21.10.2009
Сообщений: 17
22.01.2010, 20:08     Найти в строе заданое слово #1
1)Найти в строе заданое слово.
2)Удалить слова начинающие на букву а.
3)Удаление из строки символов которые занесены в коментарии.Например:Строка начало: asd/*xxx*/dss.Строка конец:asddss.

Объясните, пару задач решил остались эти а препод нехрена объяснить неможет=( говорит сам думай вот и обратился к вам.Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2010, 20:08     Найти в строе заданое слово
Посмотрите здесь:

C++ Функция удаляет из строки заданое количество символом, начиная с заданой позиции
Создать два потока, которые в конечном цикле инкримируют 1 переменную заданое число раз C++
C++ Вывести начальные индексы всех елементов массива, значение которых превышает заданое значение А.
C++ Найти слово "ТЕКСТ", если такое слово есть,то отпечатать его номер в строке.
C++ В тексте заменить слово А(любое слово) на слово В(любое слово). А и В разной длинны
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
22.01.2010, 20:37     Найти в строе заданое слово #2
Цитата Сообщение от Vitala Посмотреть сообщение
3)Удаление из строки символов которые занесены в коментарии.Например:Строка начало: asd/*xxx*/dss.Строка конец:asddss.
Если он (коментарий) в строке только один, то вот:
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
#include <stdio.h>
#include <string.h>
    
/* Удаление из строки символов которые занесены в коментарии. */
#define STRLEN 128
int main(void){
    char *instr = "asd/*xxx*/dss";
    char outstr[STRLEN], *p;
    
    if ( ( p = strstr(instr, "/*") ) == NULL ){
        printf("Can't find starting /*\n");
        return 1;
    }
    if ( p != instr )
        strncpy(outstr, instr, p - instr);
    outstr[p - instr] = 0;
    if ( ( p = strstr(p + 2, "*/") ) == NULL ){
        printf("Can't find ending */\n");
        return 1;
    }
    if ( *(p + 2) )
        strcat(outstr, p + 2);
    printf("IN: %s\nOUT: %s\n", instr, outstr);
    return 0;
}
если их там много, то тем же макаром, но чуть сложнее...
А первые два задания совсем простенькие...
Андрейка
406 / 210 / 22
Регистрация: 25.03.2009
Сообщений: 708
22.01.2010, 21:08     Найти в строе заданое слово #3
Vitala,
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
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
 
 
int main()
{
    std::istream_iterator <std::basic_string <char> > _ITER1(std::cin);
    std::istream_iterator <std::basic_string <char> > _ITER2;
 
    std::vector <std::string> _VEC(_ITER1, _ITER2);
 
    const std::basic_string <char> _str ("HELLO");
 
    if (std::find(_VEC.begin(), _VEC.end(), _str) != _VEC.end()) 
    {
        _VEC.erase(std::find(_VEC.begin(), _VEC.end(), _str));
        std::ostream_iterator <std::basic_string <char> > _ITER3(std::cout," ");
        std::copy(_VEC.begin(), _VEC.end(), _ITER3);
    }
 
    else std::cerr << "ERROR" << std::endl;
 
    return 0;
}
нахождение и удаление слова (остальное неохото)
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
23.01.2010, 01:02     Найти в строе заданое слово #4
поправил
немного
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
#include <stdio.h>
#include <string.h>
        
/* Удаление из строки символов которые занесены в коментарии. */
#define STRLEN 128
int main(void){
        char *instr = "asd/*xxx*/dss";
        char outstr[STRLEN] = { 0 }, *p;
        
        if ( ( p = strstr(instr, "/*") ) == NULL ){
                printf("Can't find starting /*\n");
                return 1;
        }
        if ( p != instr )
                strncpy(outstr, instr, p - instr);
        if ( ( p = strstr(p + 2, "*/") ) == NULL ){
                printf("Can't find ending */\n");
                return 1;
        }
        if ( *(p + 2) )
                strcat(outstr, p + 2);
        printf("IN: %s\nOUT: %s\n", instr, outstr);
        return 0;
}
а то не комильфо было...
ну и
вторую
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
    
/*  Удалить слова начинающиеся на букву а */
#define REMCHAR 'A'
#define STRLEN 128
#define SPCHARS " ,.\t\n"
int main(void){
    char buf[STRLEN], *p;
    printf("String: ");
    if ( !fgets(buf, STRLEN, stdin) )
        exit(1);
    for ( p = strtok(buf, SPCHARS); p != NULL; p = strtok(NULL, SPCHARS) )
        if ( toupper(*p) != REMCHAR )
            printf("%s ", p);
    printf("\n");
    exit(0);
}
до кучи написа'л...
Vitala
0 / 0 / 0
Регистрация: 21.10.2009
Сообщений: 17
23.01.2010, 14:16  [ТС]     Найти в строе заданое слово #5
спасибо за помощь=)
Yandex
Объявления
23.01.2010, 14:16     Найти в строе заданое слово
Ответ Создать тему

Метки
Строки
Опции темы

Текущее время: 07:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru