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

Заполнить файлы случайными данными, сравнить их, и вывести самую длинную совпадающую последовательность - C++

Восстановить пароль Регистрация
 
NemoBLR
6 / 6 / 2
Регистрация: 28.05.2010
Сообщений: 24
28.05.2010, 18:57     Заполнить файлы случайными данными, сравнить их, и вывести самую длинную совпадающую последовательность #1
создать 10 файлов,в каждом файле 10 строк, строка длинной 255 символов
необходимо заполнить их случайными данными, сравнить их и вывести самую длинную совпадающую последовательность
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2010, 18:57     Заполнить файлы случайными данными, сравнить их, и вывести самую длинную совпадающую последовательность
Посмотрите здесь:

C++ Определить самую длинную последовательность цифр в тексте
C++ Вывести самую длинную последовательность букв, расположенных между двумя пробелами
Определеить самую длинную последовательность в строке C++
Найти самую длинную неубывающую последовательность C++
Найти самую длинную последовательность простых чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
28.05.2010, 23:08     Заполнить файлы случайными данными, сравнить их, и вывести самую длинную совпадающую последовательность #2
Цитата Сообщение от NemoBLR Посмотреть сообщение
...самую длинную совпадающую последовательность
т.е. совпадающие символы? или строки которые больше всего совпадают?
NemoBLR
6 / 6 / 2
Регистрация: 28.05.2010
Сообщений: 24
29.05.2010, 17:15  [ТС]     Заполнить файлы случайными данными, сравнить их, и вывести самую длинную совпадающую последовательность #3
Цитата Сообщение от Mur3ik Посмотреть сообщение
т.е. совпадающие символы? или строки которые больше всего совпадают?
строки которые больше всего совпадают

Добавлено через 16 часов 18 минут
Как хотя бы создать 10 файлов?

Добавлено через 1 час 44 минуты
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
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
 
 
 
int main ()
{
char simvoli [] = {' ','q','w','e','r','t','y','u','i','o','p'};
char str[256];
char poisk1[2551];/*переменные для хранения данных записанных на диске*/
char poisk2[2551];
char poisk3[2551];
char poisk4[2551];
 int i,j,k;
FILE *file1;
FILE *file2;
FILE *file3;
FILE *file4;
 
file1 = fopen ("file1", "w");
 for (i=0; i<10; i++)
  {
   for (j=0; j< 255; j++)
    {k = 1+( rand () % 10);
     str[j] = simvoli[k];
    }
    fputs( str, file1 );
    fputs ("\n", file1);
  }
 
file2 = fopen ("file2", "w");
 for (i=0; i<10; i++)
  {
   for (j=0; j< 255; j++)
    {k = 1+( rand () % 10);
     str[j] = simvoli[k];
    }
    fputs( str, file2 );
    fputs ("\n", file2);
  }
 
file3 = fopen ("file3", "w");
 for (i=0; i<10; i++)
  {
   for (j=0; j< 255; j++)
    {k = 1+( rand () % 10);
     str[j] = simvoli[k];
    }
    fputs( str, file3 );
    fputs ("\n", file3);
  }
 
 file4 = fopen ("file4", "w");
 for (i=0; i<10; i++)
  {
   for (j=0; j< 255; j++)
    {k = 1+( rand () % 10);
     str[j] = simvoli[k];
    }
    fputs( str, file4 );
    fputs ("\n", file4);
  }
fclose (file1);
fclose (file2);
fclose (file3);
fclose (file4);
 
 
file1 = fopen ("file1", "r");
while (!feof(file1)){
fscanf ( file1, "%s", &poisk1);
printf( "%s", poisk1);}
fclose (file1);
 
file2 = fopen ("file2", "r");
while (!feof(file1)){
fscanf ( file1, "%s", &poisk2);
printf( "%s", poisk2);}
fclose (file2);
 
file3 = fopen ("file3", "r");
while (!feof(file3)){
fscanf ( file3, "%s", &poisk3);
printf( "%s", poisk3);}
fclose (file3);
 
file4 = fopen ("file4", "r");
while (!feof(file4)){
fscanf ( file1, "%s", &poisk4);
printf( "%s", poisk4);}
 
 
 
 
 
fclose (file4);
getch ();
return 0;
}
дошел до этого... как можна найти строки которые больше всего совпадают?
Mur3ik
102 / 102 / 4
Регистрация: 12.05.2010
Сообщений: 232
29.05.2010, 17:28     Заполнить файлы случайными данными, сравнить их, и вывести самую длинную совпадающую последовательность #4
Алгоритм:
все считываешь в 2х мерный динамический массив.
и сравниваешь построчно
первую строку - с второй...третьей... до конца...(потом вторую с третьей.... четвертой до конца...., третью с четвертой.... пятой... до конца) увеличивая с каждым разом количество символов для сравнения (используешь для этого strncmp) при этом создаешь 3 переменных которые содержат номера строк которые совпадают и количество символов. если нашло более удачный вариант замещаешь их.

Сравнение строк, с указанием количества сравниваемых символов:
int strncmp(char *s1, char *s2, int var);
пример:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <clocale>
#include <cstring>
using namespace std;
 
void main ()
{
setlocale(LC_CTYPE, "rus");
char str[50]="abcdef", str2[50]="abcdfff";
    cout<<strncmp(str, str2, 4)<<endl;
}
взято от сюда -> Библиотека cstring. Работа со строками.
Yandex
Объявления
29.05.2010, 17:28     Заполнить файлы случайными данными, сравнить их, и вывести самую длинную совпадающую последовательность
Ответ Создать тему
Опции темы

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