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

Задача.Строки.Удаление - C++

Восстановить пароль Регистрация
 
Shur1990
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 28
15.12.2013, 14:39     Задача.Строки.Удаление #1
Необходимо удалить из строки первое слово.Напишите код или подскажите алгоритм,пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2013, 14:39     Задача.Строки.Удаление
Посмотрите здесь:

C++ Удаление из строки
Удаление строки C++
C++ Удаление из строки
C++ Строки.Удаление .
C++ Удаление строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
15.12.2013, 14:43     Задача.Строки.Удаление #2
C++
1
2
3
4
5
char str[100]="aaa bbbb cccc";
char *p=str;
while( (*p)!=' ')p++;// передвигаем указатель к пробелу.
p++;// теперь указатель стоит на первой букве второго слова.
puts(p);// выводим все что осталось до терминального нуля.
ZeR_0
116 / 108 / 37
Регистрация: 30.01.2013
Сообщений: 297
15.12.2013, 14:44     Задача.Строки.Удаление #3
Удалить все что стоит перед первым вхождение специальных символов: .,!?' ':;
Может забыл какие

Добавлено через 47 секунд
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
char str[100]="aaa bbbb cccc";
char *p=str;
while( (*p)!=' ')p++;// передвигаем указатель к пробелу.
p++;// теперь указатель стоит на первой букве второго слова.
puts(p);// выводим все что осталось до терминального нуля.
Ну там же могут использовать не только пробелы
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
15.12.2013, 14:44     Задача.Строки.Удаление #4
Конкретнее задачу поставьте. То есть из
"это первая строка"
нужно удалить "это", чтобы осталось :
"первая строка".

Я правильно понял?
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
15.12.2013, 14:46     Задача.Строки.Удаление #5
если нужно фактически удалить первое слово, то после 4 строки вставьте
C++
1
2
strcpy(str,p); 
puts(str);
Shur1990
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 28
15.12.2013, 14:53  [ТС]     Задача.Строки.Удаление #6
Да,верно . вводится предложение и из этого предложения нужно удалить самое первое слово

Добавлено через 1 минуту
без использования таких функций.максимум strlen

Добавлено через 1 минуту
char *p=str; несовсем понимаю что это
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
15.12.2013, 14:57     Задача.Строки.Удаление #7
Цитата Сообщение от Shur1990 Посмотреть сообщение
char *p=str; несовсем понимаю что это
присвоить p адрес первой буквы.
p++ - перейти к следующей букве.
вместо strcpy - копирования строки можете вставить
C++
1
2
3
int i;for(i=0;p[i];i++)
     str[i]=p[i];
str[i]=0;// терминальный нуль
Shur1990
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 28
15.12.2013, 15:19  [ТС]     Задача.Строки.Удаление #8
Ага понял, а можно это char *p=str как-нибудь по-другому записать?

Добавлено через 1 минуту
zss, Ага понял, а можно это char *p=str как-нибудь по-другому записать?
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
15.12.2013, 16:28     Задача.Строки.Удаление #9
Цитата Сообщение от Shur1990 Посмотреть сообщение
а можно это char *p=str как-нибудь по-другому записать
Имя массива - это адрес первого символа.
В результате после присвоения p адреса какого-то из символов им можно пользоваться как массивом.
Т.е. str[i]=p[i];
Shur1990
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 28
15.12.2013, 17:32  [ТС]     Задача.Строки.Удаление #10
не очень я понимаю т.к еще не проходили этого. можете подправить код?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <string.h>
void main(void)
{char A[100];
char T[100];
int i=0,l;
A[100]=T[i];
printf("строка:");
gets(A);
l=strlen(A);
for(i=0;i<l;i++)
while(T[i]!=' ')i++;
i++;
puts(T);}
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
15.12.2013, 19:59     Задача.Строки.Удаление #11
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>
#include <conio.h>
void main(void)
{
    char A[100];
    char T[100];
    printf("enter string:");
    gets(A);
    char *p=A;
    while( (*p)!=' ' && (*p)!=0)p++;// передвигаем указатель к пробелу (или к концу строки если пробел не найдется)
    if((*p)==0)
    {
             puts("Строка состоит только из одного слова");
            getch();
            return 1;
    }
     p++;// теперь указатель стоит на первой букве второго слова.
     int L=strlen(p);
     for(i=0;i<=L;i++)
        T[i]=p[i]; // нуль перепишется тоже, т.к. переписываем L+1 символ.
     puts(T);
     getch(); // Ждем ввода символа, чтобы окно не закрылось
     return 0;
}
Shur1990
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 28
15.12.2013, 22:46  [ТС]     Задача.Строки.Удаление #12
Спасибо

Добавлено через 2 часа 42 минуты
Почему-то ошибку код выдал.В 16 строке
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
16.12.2013, 00:23     Задача.Строки.Удаление #13
поменяйте тип функции
int main(void)
petyahohlov
27 / 22 / 5
Регистрация: 31.07.2013
Сообщений: 119
16.12.2013, 00:40     Задача.Строки.Удаление #14
что ты делаешь в этой строке
C++
1
A[100]=T[i];
Shur1990
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 28
16.12.2013, 16:39  [ТС]     Задача.Строки.Удаление #15
Вообщем преподу не понравилось,что я использую указатель char *p.Есть какой-нибудь вариант решения не используя указатель?
petyahohlov
27 / 22 / 5
Регистрация: 31.07.2013
Сообщений: 119
16.12.2013, 18:44     Задача.Строки.Удаление #16
Цитата Сообщение от Shur1990 Посмотреть сообщение
Вообщем преподу не понравилось,что я использую указатель char *p.Есть какой-нибудь вариант решения не используя указатель?
да есть. 5 мин подожди

Добавлено через 16 минут
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
#include<string.h>
#include<iostream.h>
#include <stdio.h>
int main()
{
    int t,z;
    char st[100];
    puts("vvedite stroky ");
    gets(st);
    t=strlen(st);
    for(int i=0;i<t;i++)
    {
        if(st[i]==' ')
        {
            for(int j=0;j<i+1;j++)
            {
                for(z=0;z<t;z++)
                {
                    st[z]=st[z+1];
                }
                t--;
            }
            break;
        }
    }
    puts(st);
    cout<<endl;
    return 0;
}
Shur1990
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 28
16.12.2013, 19:45  [ТС]     Задача.Строки.Удаление #17
Всем спасибо огромное.

Добавлено через 9 минут
petyahohlov, Только почему-то если слов больше 3.он оставляет самое последнее а первые 3 стирает
petyahohlov
27 / 22 / 5
Регистрация: 31.07.2013
Сообщений: 119
16.12.2013, 19:53     Задача.Строки.Удаление #18
Цитата Сообщение от Shur1990 Посмотреть сообщение
Всем спасибо огромное.

Добавлено через 9 минут
petyahohlov, Только почему-то если слов больше 3.он оставляет самое последнее а первые 3 стирает
у меня нормально работает
Shur1990
1 / 1 / 0
Регистрация: 14.11.2013
Сообщений: 28
18.12.2013, 15:22  [ТС]     Задача.Строки.Удаление #19
petyahohlov, А как без break и return прогу записать можно?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 15:39     Задача.Строки.Удаление
Еще ссылки по теме:

C++ Удаление тэгов. Задача.
Задача о строке. Удаление дубликатов слов C++
Строки (Удаление слова из строки) C++

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

Или воспользуйтесь поиском по форуму:
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,790
18.12.2013, 15:39     Задача.Строки.Удаление #20
Напишите Void main(){...код без return}
А избавится от Break можно или добавлением какой-то переменной,например:
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
void main()
{
    int t,z,f=0;
    char st[100];
    puts("vvedite stroky ");
    gets(st);
    t=strlen(st);
    for(int i=0;i<t,f!=1;i++)
    {
        if(st[i]==' ')
        {
            for(int j=0;j<i+1;j++)
            {
                for(z=0;z<t;z++)
                {
                    st[z]=st[z+1];
                }
                t--;
            }
            f=1;
        }
    }
    puts(st);
    cout<<endl;
}
Yandex
Объявления
18.12.2013, 15:39     Задача.Строки.Удаление
Ответ Создать тему
Опции темы

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