Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Строки в С++

16K
14 марта 2006 года
maniya
3 / / 14.03.2006
народ! Помогите девушке написать программу по задаче о строках: Текст состоит из 2 строк максимальной длины 80 символов, в качестве знаков препинания только . и , переноса слов по слогам нет. Надо вывести в алфавитном порядке слова, присутствующие в обеих строках одновременно. Ну очень горит!!!!
14K
14 марта 2006 года
halflifer
28 / / 14.03.2006
Цитата:
Originally posted by maniya
народ! Помогите девушке написать программу по задаче о строках: Текст состоит из 2 строк максимальной длины 80 символов, в качестве знаков препинания только . и , переноса слов по слогам нет. Надо вывести в алфавитном порядке слова, присутствующие в обеих строках одновременно. Ну очень горит!!!!


Тема не из того раздела, есть раздел Студенты
А так до какого надо сделать. Сегодня поздно уже)

16K
15 марта 2006 года
maniya
3 / / 14.03.2006
До 17.03. Зависла на функции - не могу выделить слова из строки, а так-то с сортировкой даже разобралась.
294
16 марта 2006 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by maniya
До 17.03. Зависла на функции - не могу выделить слова из строки, а так-то с сортировкой даже разобралась.


Не претендуя не оптимальность…

Код:
#include <string.h>
#include <iostream>

    char *str_dst[1024];
    char *str_src[2] = {
                        "папа,мама,я,браконьерская,семья",
                        "казнить,нельзя,помиловать"
                       };

    int i;
    int t;
    int y;
    int z = 0;

    for(y = 0; y < 2; y++)
    {
        for(t = i = 0; str_src[y]; i++)
        {
            if(str_src[y] == '.' || str_src[y] == ',')
            {
                (str_dst[z] = new char[i - t + 1])[i - t] = '\0';
                strncpy(str_dst[z++], str_src[y] + t, i - t);
                t = i + 1;
            }
        }
        (str_dst[z] = new char[i - t + 1])[i - t] = '\0';
        strncpy(str_dst[z++], str_src[y] + t, i - t);
    }
    for(i = 0; i < z; i++)
    {
        cout << str_dst << endl;
        delete[] str_dst;
    }
16K
18 марта 2006 года
maniya
3 / / 14.03.2006
Нет, это всё конечно замечательно но сами то слова не найти. Я подходила к своему преподу по программированию продлить отчет по задаче: так он единственное что путное подсказал, что эта функция должна возвращать указатель на начало и коней такого слова...
294
19 марта 2006 года
Plisteron
982 / / 29.08.2003
Цитата:
Originally posted by maniya
Нет, это всё конечно замечательно но сами то слова не найти.


Ну вы, сударыня, даёте... Сделайте char *str_dst[2][1024], в *str_dst[0][1024] разбивайте первую строку, в *str_dst[1][1024] разбивайте вторую. Потом цикле идёте по *str_dst[0] и ищете во вложенном цикле совпадения (есть такая функция strcmp()) в *str_dst[0][j]. Что нашли, то и сортируем. Процесс поиска и сортировки можно совместить.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог