Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
13 / 13 / 5
Регистрация: 16.05.2011
Сообщений: 152
Записей в блоге: 2

Процент схожести строк

01.04.2012, 23:21. Показов 6246. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здрасте. Вообщем дали мне по лабораторным ОСиСП такое задание:
1) Выполнить индивидуальное задание последовательным алгоритмом;
2) Выполнить индивидуальное задание параллельным алгоритмом (обязательно использовать для разграничения общих ресурсов системные объекты синхронизации);
3) Сделать анализ быстродействия последовательного и параллельного алгоритмов.

УСЛОВИЕ ЗАДАНИЯ:
Сравнение строк произвольного содержания и вывод процента схожести.

Я не уверен в алгоритме который я придумал для решения задачи.
Допустим делаем так:
I. Вводим с клавиатуры две строки;
II. По-символьно (каждый символ) проверяем на схожесть и считаем совпадения X;
III. Проверяем длинну строки strlen(S1) - длинна первой строки strlen(S2) - второй, и считаем среднее, т.к. длинны могут быть разными N = strlen(S1)/strlen(S2). Затем делим кол-во совпадений на длину строки X/N * 100;

Это не главный вопрос который я хотел спросить, скорее даже просто хоте попросить совета.
Главный вопрос - это как сделать "параллельный алгоритм", у меня сейчас пошла тема "Потоки" или по другому "Нити".
Допустим с теорией создания потока я знаком, но я не знаю принцип как он будет выполнять параллельно все эти проверки. Возможно нужно поменять алгоритм описанный выше?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2012, 23:21
Ответы с готовыми решениями:

Вычислить процент положительных чисел, процент отрицательных чисел и процент нулей
1.Загадать случайно 100 целых чисел в диапазоне от -100 до 100. Вычислить процент положительных чисел, процент отрицательных чисел и...

Вычислить процент положительных чисел, процент отрицательных чисел и процент нулей
В цикле с клавиатуры вводятся 10 целых чисел. Вычислить процент положительных чисел, процент отрицательных чисел и процент нулей....

Процент схожести 2-ух чисел
Нужно найти процент схожести 2-ух чисел, допустим числа 99 и 98 они похожи на 99% ид как сделать ? можете подсказать ?

8
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.04.2012, 00:31
Возможно вы неправильно поняли оценку схожести?
Например строка "12345" и строка "23456" схожи?
Предположу что некоторая схожесть есть, но ваш алгоритм, как я полагаю, скажет что схожести нет...
Является ли положение символов важным в понятии схожести?
0
13 / 13 / 5
Регистрация: 16.05.2011
Сообщений: 152
Записей в блоге: 2
02.04.2012, 20:19  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Возможно вы неправильно поняли оценку схожести?
Например строка "12345" и строка "23456" схожи?
Предположу что некоторая схожесть есть, но ваш алгоритм, как я полагаю, скажет что схожести нет...
Является ли положение символов важным в понятии схожести?
да, мой алгоритм не покажет схожести. Я думаю, что всё таки нужно делать как описывал выше.
Вообщем написал я программу, а теперь осталось создать копию программы только с использованием потоков pthread.h
Буду пробовать написать, если есть предложения как это можно реализовать, я бы с удовольствием выслушал.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.04.2012, 20:34
Ваш алгоритм слишком прост поэтому нет смысла его раскидывать( да и нечего раскидывать) по потокам.
0
13 / 13 / 5
Регистрация: 16.05.2011
Сообщений: 152
Записей в блоге: 2
02.04.2012, 21:18  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Ваш алгоритм слишком прост поэтому нет смысла его раскидывать( да и нечего раскидывать) по потокам.
я тоже об этом думал и поэтому добавил третью строку и ищу в каждой строке процент схожести - S1 и S2, S1 и S3, S2 и S3.
Для этого я вызываю функцию process в трёх потоках.
Вот столкнулся с проблемой. На примере было указано в функции только один входящий параметр, а у меня их 2 - void *process(char *S1, char *S2), как тогда правильно создать поток?

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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
 
void *process(char *S1, char *S2)
{
    int i, x=0;
    double K, N;
    if(strlen(S1)>=strlen(S2))
    {
        for(i=0; i != strlen(S2); i++){
            if(S1[i] == S2[i])
                x++;
                sleep(1);
        }
    }
    else
        for(i=0; i != strlen(S1); i++){
            if(S1[i] == S2[i])
                x++;
                sleep(1);
        }
    N = (strlen(S1)+strlen(S2))/2;
    printf("%.0f",((x/N)*100));
}
 
void main(void)
{
    pthread_t t1, t2, t3;
    char S1[20], S2[20], S3[20];
    printf("Enter S1, S2, S3\n");
    gets(S1);
    gets(S2);
    gets(S3);
    printf("%s \n%s \n%s \n", S1, S2, S3);
    pthread_create(&t1, NULL, process, (char *, char *)S1, S2);
    pthread_create(&t2, NULL, process, (char *, char *)S1, S3);
    pthread_create(&t3, NULL, process, (char *, char *)S2, S3);
    pthread_join(t1, NULL);
    pthread_join(t2, NULL);
    pthread_join(t3, NULL);
    printf(" - процент совпадения строк S1 и S2 \n");
    printf(" - процент совпадения строк S1 и S3 \n");
    printf(" - процент совпадения строк S2 и S3 \n");
}
0
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 11
16.04.2013, 12:25
У меня точь в точь такое же задание. Не могли бы вы поделится кодом, если у вас остался?)
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
16.04.2013, 13:08
Levenshtein distance
0
13 / 13 / 5
Регистрация: 16.05.2011
Сообщений: 152
Записей в блоге: 2
16.04.2013, 13:54  [ТС]
Arkadiy_Ukupnik,
Вроде нашел исходник, только не помню какие именно там файлы. Вообщем по коду можешь посмотреть.
Сразу хочу сказать, что там может быть не доработанная программа.
https://drive.google.com/folde... sp=sharing
1
0 / 0 / 0
Регистрация: 16.04.2013
Сообщений: 11
17.04.2013, 23:03
Премного благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2013, 23:03
Помогаю со студенческими работами здесь

Сравнить два вектора признаков и получить процент схожести этих векторов
Добрый день нужно сравнить 2 вектора признаков и получить процент схожести этих векторов. Нашел как найти расстояние использовав...

Нахождения схожести двух строк
Помогите найти ошибку , нужно найти схожесть двух строк пример : qwe qwertyuiop В ответе должно получится 30% а выводит 50%. Код ...

Удалить определенный процент рандомных строк
Всем привет, вопрос такой: есть выгрузка в Excel с несколькими тысячами строк, необходимо отделить рандомно 10% от них. Возможно ли...

Если в input введен процент от 1 до 100, в другую ячейку таблицы вывести процент от заданного числа
Как сделать так чтоб если в инпут ввести процент от 1 до 100, то в другую ячейку таблицы выведется процент от заданного числа ...

поиск схожести
допустим искомое слово &quot;распространенную&quot; но в базе есть только &quot;распространённую&quot; (через ё), как задать поиск по базе чтобы если была...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru