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

Обработка строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обработка текста, разделяемого на слова http://www.cyberforum.ru/cpp-beginners/thread320438.html
Задан текст, содержащий произвольное количество строк, в которых отдельные слова могут разделяться одним или несколькими пробелами и знаками пунктуации(переносы не используються). Сформировать новый...
C++ Возвращение трех значений Как в функции возвратить три значения? http://www.cyberforum.ru/cpp-beginners/thread320432.html
C++ Курсовая по ООП
Здравствуйте, столкнулась с проблемой, необходимо сделать курсовую, а в програмировании на С++ полный ноль. Если у кого есть возможность, подскажите. Работа довольно объемная, а времени осталось...
C++ Использование стека в преобразовании
Наткнулся на одну проблему и нуждаюсь в помощи. задание следующее. Нужно преобразовать инфиксное выражение в постфиксное, используя стек. то есть например из "4+(6-4)*9" нужно получить "4 6 4 - 9...
C++ Сохранить запись в файл http://www.cyberforum.ru/cpp-beginners/thread320416.html
Есть программа: #include<iostream.h> #include<conio.h> #include<string.h> struct price { char tovar_name; char shop_name; float cost; ...
C++ работа со структурами #include<conio.h> #include<iostream.h> #include<string.h> main() { int n=0, i, zapros, flag=0; char s; struct peresdachi {char FAM ; подробнее

Показать сообщение отдельно
tylix
68 / 55 / 6
Регистрация: 10.06.2011
Сообщений: 149
16.06.2011, 02:42
cout.put(mas[x]); выведет на экран один символ

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
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
 
int main(int argc, char *argv[])
{
    char mas[] = "123456789012 3456789012345678 9012345678901234567890 1234567 890";
    const int p = 51;
    int count = 0;
    int size = strlen(mas);
    /*
    for(int i=0; i<size; i++)
    {
        if(count == p)
        {
           cout << "\n";
           count=0;
        }
        cout << mas[i];
        count++;
    }
 
    */
    char *p1;
    p1 = mas;
 
    while (*p1) {
        if ((*p1 == ' ') || (count == p)) {
            count = 0;
            cout << endl;
        } else {
            cout.put(*p1);
        }
        p1++;
        count++;
    }
    cout << endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
я так понял, чтобы в строку выводились по одному слову макс. длиной в p = 50

Добавлено через 18 минут
Нашел свою ошибку, исправил.. скажу какая будешь ржать ))
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
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <iostream>
 
int f(char *p1, char *p2) {
    int l1, l2;
    l1 = strlen(p1);
    l2 = strlen(p2);
    if (l1 > l2) l1 = l2;
    l2 = 0;
    while ((*p1 == *p2) && (l2 < l1)) {
        p1++;
        p2++;
        l2++;
    }
    return l2+1;
}
 
char *text[30]; // резерв на 30 слов
 
int main() {
    int x, y, z;
    int count = 0;
    int min = 0;
    char buf[1000]; // текст до 999 символов
    char tmp[100];  // 1 слово до 99 симв
    char *p1, *p2;
    printf("Enter text: ");
    scanf("%[A-Z a-z0-9]", buf);
 
    p1 = buf;
    // разбиваем на слова на
    for (;;) {
        while ((*p1) && !isalnum(*p1)) p1++;
        if (!(*p1)) break;
        p2 = tmp;
        while ((*p1) && isalnum(*p1)) {
            *p2 = *p1;
            p2++;
            p1++;
        }
        *p2 = '\0';
        z = strlen(tmp)+1;
        text[count] = new char[z];
        strcpy(text[count], tmp);
        count++;
    }
 
    for (x = 0; x < count; x++)
        printf("%2d: %s\n", x+1, text[x]);
 
    if (count >= 2) {
 
    for (x = 0; x < count-1; x++) {
      for (y = x+1; y < count; y++) {
          z = f(text[x], text[y]);
          if (z > min) min = z;
      }
    }
 
    } // if
 
    for (x = 0; x < count; x++)
        delete [] text[x];
 
    printf("minimum: %d\n", min);
    return 0;
}

Уважаемые Модераторы форума.
Если вас не затруднит то, удалите пожалуйта с этой темы предыдущие сообщения с моим кодом, т.к. он содержит ошибки
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru