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

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

Войти
Регистрация
Восстановить пароль
 
 
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
#1

Строки и указатели с++ - C++

22.06.2010, 22:09. Просмотров 916. Ответов 17
Метки нет (Все метки)

1. С клавиатуры вводится полный путь к файлу. Напишите программу, которая выделяет из этой строки имя файла
Пример:
C:\windows\system32\activeds.dll
activeds.dll
2. Напишите программу, которая выводит второе слово предложения введенного пользователем.
Пример:
Сидоров Петр Иванович
Петр
3. Напишите программу, которая определяет есть ли в строке введенное пользователем слово.
Пример:
Строка: Организация Объединенных Наций
Слово: нац
Такого слова в строке нет
4. Напишите программу, которая удаляет из строки все пробелы

Буду благодарен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2010, 22:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки и указатели с++ (C++):

Указатели.Строки и указатели - C++
Вот условия ввода строки:Вводить и обрабатывать строки в цикле до тех пор пока первый символ не пробел Условия обработки строки: ...

Указатели и указатели на указатели, а также типы данных - C++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

Указатели на строки - C++
Есть следующий код: class Strings // класс с указателями на строки (размер которого равен 8) { public: char* str1; ...

Строки и указатели........ - C++
Помогите написать прогу с помощью которой - вводится имя,фамилия,отчество а вывоится фамилия и инициалы то есть - Пушкин Александр...

Указатели и строки - C++
1. В коде есть такой кусок: sc = stack.pop(); printf("#%s %d#", &sc, sc); sc имеет тип unsigned int, понятно что там хранится...

Указатели на строки - C++
Доброго всем времени суток! Не понимаю почему указатели на строки возвращают всю строку char может содержать только один символ в...

17
profu
2 / 2 / 0
Регистрация: 08.06.2010
Сообщений: 11
23.06.2010, 11:52 #2
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
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 <stdlib.h>
#include <iostream.h>
 
int main(int argc, char *argv[])
{char S[50];
 char *Ptr, *T;
 cout<<"Stroka: ";
 cin.getline(S, 50);
 Ptr=&S[0];
 while (*Ptr!='\0')
 {if (*Ptr==' ')
  {T=Ptr;
   while (*T!='\0')
   {*T=*(T+1);
    T++;
   }
  }
  else
   Ptr++;
 }
 cout<<"Stroka bez probelov: "<<S<<endl;
 system("PAUSE");
 return 0;
}
1
ISergey
Maniac
Эксперт С++
1376 / 887 / 53
Регистрация: 02.01.2009
Сообщений: 2,663
Записей в блоге: 1
23.06.2010, 12:05 #3
profu, Можно гораздо проще сделать...
C++
1
2
3
4
5
6
7
8
9
10
11
#include <algorithm>
#include <iostream>
#include <string>
 
int main(){
 
    std::string line = "qwe rty !! asd";
    std::remove(line.begin(), line.end(), ' ');
    std::cout << line << std::endl;
    return 0;
}
http://codepad.org/jBjAik3f
0
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
23.06.2010, 12:30 #4
Задача 1:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <iostream>
#include <string>
 
typedef std::string  T_str;
 
T_str  get_filename_from_path(T_str  path)
{
    return path.substr(path.rfind('\\') + 1);
}
 
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите маршрут к файлу: "
              << std::endl;
    T_str path;
    std::cin >> path;
    std::cout << "Имя файла: "
              << get_filename_from_path(path)
              << std::endl;
    return 0;
}
Добавлено через 15 минут
ISergey, ваша программа на самом деле только перемещает пробелы в конец строки.
Вот так нужно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
#include <algorithm>
#include <iostream>
 
int main()
{ 
        std::string line = "qwe rty !! asd";
        std::cout << line
                  << std::endl
                  << "line.size() = "
                  << line.size()
                  << std::endl;
        line.assign(line.begin(), std::remove(line.begin(), line.end(), ' '));        
        std::cout << line 
                  << std::endl
                  << "line.size() = "
                  << line.size()
                  << std::endl;
        return 0;
}
1
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
23.06.2010, 14:23 #5
3-ю так можно сделать
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
31
32
33
#include<stdlib.h>
#include <iostream>
const int sz=80;
using namespace std;
int proverka (char *buf, char *sl);
int main()
{
    char buf[sz]={'\0'}, slovo[sz]={'\0'};
    cout<<"Vvedite stroku: ";
    cin.getline (buf, sz);
    cout<<"Vvedite slovo: ";
    cin>>slovo;
    if (!proverka(buf, slovo))
        cout<<"slovo ne vhodit v stroku!\n";
    else
        cout<<"slovo vhodit v stroku!\n";
    return 0;
} 
int proverka (char *buf, char *sl)
{
    char *b=buf, *b1=buf, *s=sl;
    while (*b)
    {
        b1=b;
        while (*b1++==*s++)
            ;
        if (*(--s)=='\0')
            return 1;
        s=sl;
        b++;
    }
    return 0;
}
0
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
23.06.2010, 14:47  [ТС] #6
помойму там можно сделать все проще и более простыми командами, ибо задания из начального курса обучения ==
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,819
23.06.2010, 15:10 #7
Цитата Сообщение от Mr.X Посмотреть сообщение
ISergey, ваша программа на самом деле только перемещает пробелы в конец строки.
Да ну?! Вот так вывод переделал
C++
1
std::cout << '"' << line << '"' << std::endl;
получилось
Код
~/cpp/strings $ ./rem_sp_iSergey 
"qwerty!!asdasd"
0
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
23.06.2010, 16:42  [ТС] #8
итак...нормально работает только программа profu
0
Mr.X
Эксперт С++
3050 / 1695 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
23.06.2010, 17:13 #9
Цитата Сообщение от easybudda Посмотреть сообщение
Да ну?! Вот так вывод переделал
C++
1
std::cout << '"' << line << '"' << std::endl;
получилось
Код
~/cpp/strings $ ./rem_sp_iSergey 
"qwerty!!asdasd"
Поправка справедливая. Но это не меняет сути замечания. Алгоритм там применен неверно.

Добавлено через 2 минуты
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
итак...нормально работает только программа profu
А можно привести пример неправильной работы моего решения?
1
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
23.06.2010, 17:47  [ТС] #10
прошу прощения =) работает ^^ остались 2 и 3

Добавлено через 9 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
typedef std::string  T_str;
 
T_str  get_filename_from_path(T_str  path)
{
    return path.substr(path.rfind('\\') + 1);
}
 
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите маршрут к файлу: "
              << std::endl;
    T_str path;
    std::cin >> path;
    std::cout << "Имя файла: "
              << get_filename_from_path(path)
              << std::endl;
    return 0;
}
а можно приписать коменты? с 4 по 18 строку
0
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
23.06.2010, 17:50 #11
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
прошу прощения =) работает ^^ остались 2 и 3
А в третьей какие ошибки выдает? Что не так?
0
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
23.06.2010, 17:53  [ТС] #12
Цитата Сообщение от profu Посмотреть сообщение
C++
1
while (*Ptr!='\0')
и что значит \0 ???

Добавлено через 2 минуты
в третьей косяк....если допустим вводится "dgssdg" , а ищем "import" то всё норм, а вот если ищем "ss", то он выдает что такое есть....то есть если последовательность букв встречается в строке, то пишет как будто это есть
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,819
23.06.2010, 18:14 #13
Цитата Сообщение от Mr.X Посмотреть сообщение
Но это не меняет сути замечания. Алгоритм там применен неверно.
Ага, дошло до меня. Оно не пробелы в конец строки добавляет, там ещё смешнее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
#include <iostream>
#include <string>
 
int main(){
 
        std::string line = "qwe rty !! asd";
        std::cout << "String: \"" << line << "\"\nSize: " << line.size() << std::endl;
        std::remove(line.begin(), line.end(), ' ');
        std::cout << "Result: \"" << line << "\"\nSize: " << line.size() << std::endl;
        return 0;
}
Строки и указатели с++
И вообще, я бы лучше по-тупому сделал...
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
 
int main(){
        std::string line = "qwe rty !! asd";
        std::cout << "String: \"" << line << "\"\nSize: " << line.size() << std::endl;
        size_t pos;
        while ( ( pos = line.find(' ') ) != std::string::npos )
            line.erase(pos, 1);
        std::cout << "Result: \"" << line << "\"\nSize: " << line.size() << std::endl;
        return 0;
}
1
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
23.06.2010, 18:21  [ТС] #14
easybudda, можешь сделать чтобы строка вводилась пользователем?
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,819
23.06.2010, 18:31 #15
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
easybudda, можешь сделать чтобы строка вводилась пользователем?
угу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
int main(){
        std::string line;
        std::cout << "String: ";
        std::getline(std::cin, line);
        size_t pos;
        while ( ( pos = line.find(' ') ) != std::string::npos )
            line.erase(pos, 1);
        std::cout << "Result: " << line << std::endl;
        return 0;
}
1
23.06.2010, 18:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2010, 18:31
Привет! Вот еще темы с ответами:

Указатели и строки - C++
Здравствуйте! Помогите решить такую задачу Найти в строке последовательности , состоящие из одного повтопяющегося символа, и заменить его...

Указатели и строки - C++
Здравствуйте. Учу указатели (и строки); появилась куча неясных мне моментов, поэтому прошу разъяснения. 1) const char* obj...

Строки и указатели - C++
Выполнить задание двумя способами используя индексы и используя указатели при работе со строками. Удалить в строке все буквы “b”,...

указатели и строки? - C++
Люди помогите понять, ни как не дается это страшное слово указатель. Так в общем немного ясно, не понятно вот что: Считается что эти...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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