0 / 0 / 0
Регистрация: 16.09.2017
Сообщений: 4
1

Файл: Переписать в третий файл только те слова, которые есть и в первом и во втором исходных файлах

16.09.2017, 13:25. Показов 1328. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, вынуждена обратиться за помощью в решении следующей задачи: "Даны два текстовых файла, содержащих некоторый текст. Переписать в третий файл только те слова, которые есть и в первом и во втором файле." Понимаю, что нужно найти первое слово в первом файле, далее в следующем цикле искать это слово во втором файле, если найдено - выписать в третий, далее брать второе слово и т. д., но не могу записать :С. Буду благодарна за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2017, 13:25
Ответы с готовыми решениями:

Переписать в третий файл только те строчки, которые есть и в первом, и во втором файлах.
Заданы 2 текстовых файла. Переписать в третий только те строчки, которые есть и в первом, и во...

Даны два файла. Переписать в третий файл только те слова, которые есть и в первом и во втором файле.
Помогите создать программу: Даны два текстовых файла, содержащих некоторый текст. Переписать в...

Записать в третий файл только те строки, которые есть и в первом, и во втором файлах
Даны два текстовых файла. Записать в третий только те строки, которые есть и в первом, и во втором...

Записать в третий файл только те строки, которые есть и в первом, и во втором файлах
Program lab8; uses crt; var f,f1,f2:text; s,s1:String; begin Assign(f,'D:\222.txt'); ...

5
117 / 110 / 31
Регистрация: 05.04.2014
Сообщений: 224
16.09.2017, 18:15 2
Думаю так будет быстрее:
Считать весь 1-й файл, разбить в массив А по словам.
Считать весь 2-й файл в переменную В.
В цикле перебирать массив А, если слово есть в переменной В, писать его в 3-й файл.

Покажи свои наработки, что уже сделала?
1
39 / 40 / 20
Регистрация: 30.09.2013
Сообщений: 141
16.09.2017, 18:56 3
Лучший ответ Сообщение было отмечено nastasya2007 как решение

Решение

VB.NET
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
Imports IO
 
Module Module1
 
    Sub Main()
        Dim f1, f2 As IO.StreamReader
        Dim f3 As IO.StreamWriter
 
        Dim s1(), s2() As String
        Dim temp1, temp2 As String
        Dim i, j As Integer
 
 
        f1 = My.Computer.FileSystem.OpenTextFileReader("c:\temp\1.txt")
        f2 = My.Computer.FileSystem.OpenTextFileReader("c:\temp\2.txt")
        f3 = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\3.txt", 0)
 
        Do
            temp1 = f1.ReadLine
            temp2 += temp1
 
        Loop Until temp1 Is Nothing
 
        s1 = Split(temp2)
        temp2 = ""
 
        Do
            temp1 = f2.ReadLine
            temp2 += temp1
 
        Loop Until temp1 Is Nothing
 
        s2 = Split(temp2)
 
        For i = 0 To s1.Count - 1
            For j = 1 To s2.Count - 1
                If s1(i) = s2(j) Then f3.WriteLine(s2(j))
            Next
        Next
 
        f1.Close()
        f2.Close()
        f3.Close()
 
    End Sub
 
End Module
1
4407 / 3531 / 843
Регистрация: 02.02.2013
Сообщений: 3,417
Записей в блоге: 2
16.09.2017, 19:47 4
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

Можно так
VB.NET
1
2
3
4
5
6
7
Dim s1() As String = (IO.File.ReadAllText("f1.txt")).Split(Chr(32)) 'в предположении что слова разделены пробелом
Dim s2() As String = (IO.File.ReadAllText("f2.txt")).Split(Chr(32))
Dim s3 As String = String.Empty 
For Each wrd As String In s2
    If s1.Contains(wrd) Then s3 &= Chr(32) & wrd
Next
IO.File.WriteAllText("f3.txt", s3)
или так
VB.NET
1
2
3
4
Dim s1 As IEnumerable(Of String) = (IO.File.ReadAllText("f1.txt")).Split(Chr(32)) 'в предположении что слова разделены пробелом
Dim s2 As IEnumerable(Of String) = (IO.File.ReadAllText("f2.txt")).Split(Chr(32))
Dim s3 As IEnumerable(Of String) = s1.Intersect(s2)
IO.File.WriteAllText("f3.txt", String.Join(" ", s3))
2
0 / 0 / 0
Регистрация: 16.09.2017
Сообщений: 4
17.09.2017, 15:15  [ТС] 5
Вот: https://cloud.mail.ru/public/Vy2a/1sKjhPjUc

Добавлено через 18 минут
Если Вам несложно, объясните, пожалуйста, что Вы делаете с temp1 и temp2... и вот ReadeLine читает последовательно слова, правильно? Если это так, тогда в массиве s1 текст будет разбит по словам? Извините, если глупые вопросы задаю.

Добавлено через 5 минут
Спасибо большое!!! Но, к сожалению, я не знаю, как это все работает...

Добавлено через 14 минут
Только там цикл j с 0 должен быть? А то не сверяет первые слова.

Добавлено через 23 минуты
Спасибо большое!
0
39 / 40 / 20
Регистрация: 30.09.2013
Сообщений: 141
17.09.2017, 21:00 6
Цитата Сообщение от nastasya2007 Посмотреть сообщение
Добавлено через 18 минут
Если Вам несложно, объясните, пожалуйста, что Вы делаете с temp1 и temp2... и вот ReadeLine читает последовательно слова, правильно? Если это так, тогда в массиве s1 текст будет разбит по словам?
temp1 и temp2 - это строки. Из файла строки читаются в temp1 по очереди. Все эти строки складываются в temp2.
Потом при помощи оператора Split в строке 24 и 33 текст разбивается на массив, состоящий из слов. s1 - массив слов из первого файла, s2 - массив слов из второго файла.

Только там цикл j с 0 должен быть? А то не сверяет первые слова.
Да, совершенно верно. Опечаточка вкралась.

Спасибо большое!
На здоровье.
0
17.09.2017, 21:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2017, 21:00
Помогаю со студенческими работами здесь

Создать третий одномерный массив x состоящий из чисел, которые есть и в первом и во втором массиве
Даны два одномерных массива a и b.Числа вводятся с клавиатуры.Создать третий одномерный массив x...

Создать третий стек из тех символов первого стека, которые есть и в первом и во втором стеке
Из двух заданных стеков, хранящих символы, создать новый стек из тех символов первого стека,...

Найти элементы, которые есть как в первом массиве так и во втором, и вывести их в третий массив
Всем доброго времени суток у меня такой вопрос как решить такую задачку: у нас есть массив arr1 и...

Найти элементы, которые есть как в первом массиве так и во втором, и вывести их в третий массив
Всем доброго времени суток у меня такой вопрос как решить такую задачку: у нас есть массив arr1 и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru