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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
NemoBLR
6 / 6 / 2
Регистрация: 28.05.2010
Сообщений: 24
#1

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

28.05.2010, 18:57. Просмотров 504. Ответов 3
Метки нет (Все метки)

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

C++ Определить самую длинную последовательность цифр в тексте
Подсчитать самую длинную последовательность подряд идущих букв а C++
C++ Вывести самую длинную последовательность букв, расположенных между двумя пробелами
Определеить самую длинную последовательность в строке C++
C++ Найти в тексте самую длинную последовательность из одинаковых букв
Найти самую длинную неубывающую последовательность C++
Найти самую длинную последовательность простых чисел C++
Найти самую длинную последовательность цифр в строке 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     Заполнить файлы случайными данными, сравнить их, и вывести самую длинную совпадающую последовательность
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru