Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
6 / 6 / 3
Регистрация: 03.07.2010
Сообщений: 222

Обработка строк

15.06.2011, 23:07. Показов 1411. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!!!Помогите пожалуйста в решении этой задачи!!!!!


Разработать алгоритм и программу для определения минимального количества первых символов, по которым можно различать слова из заданного текста.

Добавлено через 1 час 19 минут
Плиззз!!если есть минутка, помогите пожалуйста!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.06.2011, 23:07
Ответы с готовыми решениями:

Обработка строк
1. Составить программу для определения количества слов, введенных в тексте 2. Составить программу для определения самого длинного слова,...

Обработка строк
Не реализована возможность ввода и сохранения нескольких строк. Функция main содержит два одинаковых цикла. Не реализована...

Обработка строк
Пожалуйста, подскажите, как одновременно обработать две строки так, чтобы найти самые длинные слова, общие для этих строк? Если нужных слов...

11
68 / 55 / 11
Регистрация: 10.06.2011
Сообщений: 149
16.06.2011, 00:56
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
#include <stdio.h>
#include <conio.h>
#include <cstring>
#include <cstdio>
 
int f(char *s1, char *s2) {
    int l1, l2;
    int sz, i;
    char *p1, *p2;
    l1 = strlen(s1);
    l2 = strlen(s2);
    if (l1 > l2)
        sz = l2;
    else
        sz = l1;
    p1 = s1;
    p2 = s2;
    for (i = 0; i < sz; i++) {
        if (*p1 != *p2) break;
        p1++;
        p2++;
    }
    return (i+1);
}
 
const int count = 8;
 
char *text[count] = {
    "wows",
    "wlsn",
    "grom",
    "slon",
    "hosn",
    "jojo",
    "ojoj",
    "jo27"
};
 
int main() {
    int x, y, z;
    int min;
    min = 0;
    for (x = 0; x < count; x++)
        printf("%s\n", text[x]);
 
    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;
      }
    }
    printf("minimum: %d", min);
    return 0;
}
1
6 / 6 / 3
Регистрация: 03.07.2010
Сообщений: 222
16.06.2011, 01:05  [ТС]
Мххх!!Вопрос?Причем тут матрица???О_о.....
0
68 / 55 / 11
Регистрация: 10.06.2011
Сообщений: 149
16.06.2011, 01:41
Цитата Сообщение от сержи Посмотреть сообщение
Всем привет!!!Помогите пожалуйста в решении этой задачи!!!!!


Разработать алгоритм и программу для определения минимального количества первых символов, по которым можно различать слова из заданного текста.

Добавлено через 1 час 19 минут
Плиззз!!если есть минутка, помогите пожалуйста!!!
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
#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)) 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) return 0;
 
    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;
      }
    }
 
    for (x = 0; x < count; x++)
        delete [] text[x];
 
    printf("minimum: %d\n", min);
    return 0;
}
Запусти это и поймешь причем тут и что тут ок?
введи что нибудь вроде Hello world hells goblin goodbye

Не по теме:


нет чтобы спасибо сказать, "при чем здесь матрица?" :wall:

1
6 / 6 / 3
Регистрация: 03.07.2010
Сообщений: 222
16.06.2011, 01:45  [ТС]
ТА неаа!!!прсто то шо ты в 1 раз ответил!!!вот и спросил!!!
Просто там идет матрица , а потом слова и все!!!!!
В том моменте чуток не понял!!!!!
0
68 / 55 / 11
Регистрация: 10.06.2011
Сообщений: 149
16.06.2011, 01:47
Цитата Сообщение от сержи Посмотреть сообщение
ТА неаа!!!прсто то шо ты в 1 раз ответил!!!вот и спросил!!!
Просто там идет матрица , а потом слова и все!!!!!
В том моменте чуток не понял!!!!!
первый раз был черновой вариант, решал такое впервые )

Добавлено через 1 минуту
Ответь хоть, то или не то?

млин ошибка есть... завтра доработаю
хотя нет в 14й строке убрать +1, еще ошибку нужно искать
1
6 / 6 / 3
Регистрация: 03.07.2010
Сообщений: 222
16.06.2011, 01:54  [ТС]
Ну вроде то!!!!водил HELLO Win( для примера)!!!
Пишит:
1.HELLO
2.Win
minimum:1
Вот весь ответ!!!

Добавлено через 4 минуты
Можно еще вопросик!!по этим самым строка!!!!

Вот задача: Разработать алгоритм и программу для разбиения текста на строки длиной не более 50 символов. Перенос слов на новую строку осуществлять на месте пропуска.
Вот код это программы:
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    char mas[] = "123456789012 3456789012345678 9012345678901234567890 1234567 890";
    const int p=50;
    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++;
    }
    cout << "\n";
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Но она не коретно работает!!!должна при каждом пропуске переносить слова на новую строку, а она не переносит=(((
Не подскажишь в чем проблема???
0
68 / 55 / 11
Регистрация: 10.06.2011
Сообщений: 149
16.06.2011, 02:15
нет, в моей трабл какойто есть, но пока его не нашел

Добавлено через 10 минут
по твоей
во-первых нет проверки на ПРОБЕЛ а во вторых cout << m[x]; выводит строку начиная с символа m[x]
1
6 / 6 / 3
Регистрация: 03.07.2010
Сообщений: 222
16.06.2011, 02:20  [ТС]
Эххх!!!А что дописать надо??или что удалить еще надо?
0
68 / 55 / 11
Регистрация: 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
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.06.2011, 08:23
Хм... т.е. в тексте hell hello hey hah нужно вывести 14(в hah последняя буква необязательна)?
И какую из 2 задач делать вообще? Что-то я запутался...
0
68 / 55 / 11
Регистрация: 10.06.2011
Сообщений: 149
16.06.2011, 11:38
Цитата Сообщение от diagon Посмотреть сообщение
Хм... т.е. в тексте hell hello hey hah нужно вывести 14(в hah последняя буква необязательна)?
И какую из 2 задач делать вообще? Что-то я запутался...
где мой код, можешь ничего не трогать, в последнем все исправлено, а предыдущие уже не имеют значения, а вот что еще нужно ТСу, это к нему )
если есть предложения улучшить код, то впереД!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.06.2011, 11:38
Помогаю со студенческими работами здесь

Обработка строк
Помогите,плиз! Нужно обработать строку по условию: 1.Вычислить количество специальных символов(не букв и не цифр) 2.Заменить все...

Обработка строк
Ребята помогите написать программу, вырезающую из строки все цифры.

Обработка строк
Доброго времени суток! Уважаемые форумчане! Прошу помощи в написании программы, так проблемы с темой обработки строк, так как болел и...

Обработка строк
Есть задание: Написать консольное приложение, реализующее полученный вариант задания, используя конструкции и соответствующие функции...

Обработка строк
Если можно с подробным объяснением,что бы разобраться. ЗАДАНИЕ: Дана последовательность, содержащая от 1 до 30 слов, в каждом из...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru