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

Функция добавляющая троеточие - C++

Восстановить пароль Регистрация
 
Collaps
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 30
17.06.2010, 13:41     Функция добавляющая троеточие #1
Реализовать функцию добавляющая троеточие после каждого слова в строке
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2010, 13:41     Функция добавляющая троеточие
Посмотрите здесь:

C++ Функция
функция C++
функция C++
Функция С++ C++
C++ Функция добавляющая к числу справа цифру
оформить решение в виде функции следующими способами: 1. функция расположена после ее вызова; 2. функция расположена после до ее вызова; 3. функ C++
функция y=f(x) C++
C++ Функция, добавляющая k строк в начало матрицы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
P-VS-S
4 / 4 / 2
Регистрация: 01.12.2009
Сообщений: 32
17.06.2010, 16:54     Функция добавляющая троеточие #2
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 <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
using namespace std;
 
 
int main()
{
 
    char s[10] = {"asd dsa s"};
    char t[4] = {"..."};
    
for(int i=0;i<10;i++)
    {
 
        if(s[i]!=' '){
        printf("%c",s[i]);
    }
        else if(s[i]==' ')
        {
            printf("%s",t);
        }
}
    getch();
    return 0;
}
это так по быстрому, над размерами и видами сам поработай
-=ЮрА=-
Заблокирован
Автор FAQ
29.06.2010, 12:40     Функция добавляющая троеточие #3
Мой взгляд на проблемму. Решил делать без динамического выделения памяти, так что
длинна вводимого текста имеет некоторые ограничения. Алгоритм реализовал с использованием
дополнительного целочисленного массива, в который заносятся позиции конца слов...
Всё впринципе просто, успеха
Программу писал в Microsoft Visual Studio 6.0, а также протестик Борландом 3.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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <string.h>
#include <stdio.h>
 
char str[1024];//Выделяем память под строку
int iPos[512]; //содержит позиции конца слов
char * enter_text(char * str, char chEnd);
int    get_words (char * str, int *iPos);
char * skip_space(char * str);
char * insert_str(char * str, int  iPos, char * sIns);
 
void main()
{
start :
    printf("\tEnter input string\r\n");
    strcpy(str,enter_text(str, '\n'));
    int nWords = get_words(str,iPos);
    char sAdd[] = "...";
    for(int i = 0; i < nWords;i++)
        insert_str(str, iPos[i] + i*strlen(sAdd), sAdd);
    printf("String after placing points\r\n%s",str);
    printf("Press NUM1 to enter new text\r\n");
    enter_text(str, '\n');
    if(str[0] = (char)'1')
        goto start;
}
 
char * enter_text(char * str, char chEnd)
{
    int i = 0;
    while((str[i] = getchar()) != chEnd)
        i++;
    return str;
}
 
char * skip_space(char * str)
{
    while(str)
    {
        if(str[0] != ' ')
            break;
        str++;
    }
    return str;
}
 
int    get_words (char * str, int *iPos)
{
    char * chBuf;
    //В случае если строка начинается с пробелов
    if(str)
    if((chBuf = skip_space(str)))
        chBuf = strchr(chBuf,' ');
    int nWords = 0;
    while(chBuf)
    {
        //Доходим до слова
        chBuf = skip_space(chBuf);
        //Пропускаем буквы
        while(chBuf)
        {
            if(chBuf[0] != ' ')
                break;
            chBuf++;
        }
        //Запоминаем позицию 1-го пробела после слова
        if(chBuf)
        {
            iPos[nWords] = strlen(str) - strlen(chBuf) - 1;
            nWords++;
        }
        chBuf = strchr(chBuf,' ');
    }
    return nWords;
}
 
char * insert_str(char * str, int iPos, char * sIns)
{
    int sLen,sAdd,i;
    if(str && sIns)
    {
        sLen = strlen(str);
        sAdd = strlen(sIns);
        if(iPos < sLen)
        for(i = sLen - 1; iPos <= i;i--)
            str[i + sAdd] = str[i];
        for(i = iPos; i < iPos + sAdd; i++)
            str[i] = sIns[i - iPos];
    }
    return str;
}
Миниатюры
Функция добавляющая троеточие  
Yandex
Объявления
29.06.2010, 12:40     Функция добавляющая троеточие
Ответ Создать тему
Опции темы

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