Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Работа с массивами.

Ответить
Настройки темы
[решено] Работа с массивами.

Пользователь


Сообщения: 59
Благодарности: 0

Профиль | Отправить PM | Цитировать


Нужна помощь!
следующая ситуация: есть четыре текстовых файла. для удобства именуем: 1.txt, 2.txt, 3.txt, 4.txt
все имеют след вид:
1000205275
1000223812
1000238288
4474
1000031760
227334
1000014533
1000010159
1000042383
и тд.

нужно взять число из первой строчки 1.txt и проверить если не повторяется в других файлах(2.txt, 3.txt, 4.txt) то сделать что-то, и то же самое с остальныим строчками...
хотел сделать с циклами методом перебора, но понял что с массивами быстрее и проще, да вот беда не знаю как. не работал с массивами.

и еще вопрос, как отразится на скорости работы если в файлах будет 1000 строк, или 5000??

Отправлено: 15:30, 02-03-2010

 

Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


Russo,
Похоже это то,что тебе нужно :
Библиотека для сравнения строк/чисел/1D и 2D массивов

Отправлено: 16:43, 02-03-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Russo, что значит имеют вид?
Цитата Russo:
1000205275
1000223812
1000238288
4474
1000031760
227334
1000014533
1000010159
1000042383 »
никаким видом тут не пахнет. где общая черта содержимого этих файлов? например 1, 2,3 строки начинаются на 1000. или 4 строка обязательно 4значное число и т.д.
Цитата Russo:
хотел сделать с циклами методом перебора »
по другому никак. все равно перебирать.
Цитата Russo:
но понял что с массивами быстрее и проще »
не быстрее, и уж точно не проще, раз спрашиваешь
Цитата Russo:
и еще вопрос, как отразится на скорости работы если в файлах будет 1000 строк, или 5000?? »
ответ очевиден - чем больше строк, тем больше время выполнения.
вобщем, сформулируй окончательно задачу предоставив как можно больше инфы.
а то, я например понял так. нужно просто проверить файлы на идентичность. если файлы идентичны, сделать действие. если нет, пропустить или сделать другое действие.

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 17:00, 02-03-2010 | #3


Пользователь


Сообщения: 59
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Цитата kaster:
никаким видом тут не пахнет. где общая черта содержимого этих файлов? например 1, 2,3 строки начинаются на 1000. или 4 строка обязательно 4значное число и т.д. »
имел в виду что все строки состоят из чисел максималной длины 10 символов

Отправлено: 17:12, 02-03-2010 | #4


Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


Цитата Russo:
а присутствие в них строк из первого файла. »
А потом надо будет делать то же для других файлов или проверка идет только по 1- му файлу ?

Отправлено: 17:16, 02-03-2010 | #5


Аватара для madmasles

Ветеран


Сообщения: 812
Благодарности: 353

Профиль | Отправить PM | Цитировать


Russo,
Если я правильно понял задачу, то у меня так получилось:
Код: Выделить весь код
#include <File.au3>
#include <Array.au3>

Dim $aArray1, $aArray2, $aArray3, $aArray4

$file1 = "1.txt"
$file2 = "2.txt"
$file3 = "3.txt"
$file4 = "4.txt"

_FileReadToArray($file1, $aArray1)
_FileReadToArray($file2, $aArray2)
_FileReadToArray($file3, $aArray3)
_FileReadToArray($file4, $aArray4)

For $i = 1 To UBound($aArray1) - 1
    $error2 = _ArraySearch($aArray2, $aArray1[$i])
    If $error2 = -1 Then
        MsgBox(48, $file1 & " строка " & $i, "Данные файла " & $file2 & " в строке № " & $i _
                 & " не совпадают", 5)
    Else
        MsgBox(64, $file1 & " строка " & $i, "Данные файла " & $file2 & " в строке № " & $i _
                 & " совпадают", 5)
    EndIf
    $error3 = _ArraySearch($aArray3, $aArray1[$i])
    If $error3 = -1 Then
        MsgBox(48, $file1 & " строка " & $i, "Данные файла " & $file3 & " в строке № " & $i _
                 & " не совпадают", 5)
    Else
        MsgBox(64, $file1 & " строка " & $i, "Данные файла " & $file3 & " в строке № " & $i _
                 & " совпадают", 5)
    EndIf
    $error4 = _ArraySearch($aArray4, $aArray1[$i])
    If $error4 = -1 Then
        MsgBox(48, $file1 & " строка " & $i, "Данные файла " & $file4 & " в строке № " & $i _
                 & " не совпадают", 5)
    Else
        MsgBox(64, $file1 & " строка " & $i, "Данные файла " & $file4 & " в строке № " & $i _
                 & " совпадают", 5)
    EndIf
Next
Построчно 1.txt сравнивается по-очереди с 2, 3 и 4.txt и показывает, совпадают строки или нет.

PS
Наверное, можно сделать изящнее и проще...
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:34, 02-03-2010 | #6


Аватара для gregaz

Пользователь


Сообщения: 88
Благодарности: 19

Профиль | Отправить PM | Цитировать


Проверка наличия совпадений строк 1- го файла в остальных :
Код: Выделить весь код
#include <Array.au3>
#include <File.au3>
$sStr=''
For $i=2 To 4
   $hFile = FileOpen($i & ".txt", 0)
   $sStr &= FileRead ( $hFile ) & @CRLF
   FileClose ( $hFile )
Next
MsgBox(0,'$sStr',$sStr)
Dim $aRecords
_FileReadToArray("1.txt",$aRecords)
_ArrayDisplay($aRecords)
For $i = 1 To UBound($aRecords)-1
   If StringRegExp ( $sStr, $aRecords[$i],0)=1 Then
	  Msgbox(0,$aRecords[$i] ,'Совпадение найдено')
   Else
	  Msgbox(0,$aRecords[$i] ,'Совпадение не найдено')
   EndIf
Next
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:37, 02-03-2010 | #7


Пользователь


Сообщения: 59
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо! код от madmasles подошел практически идеально. gregaz также спасибо за потраченое время и труд!!!
РЕШЕНО!

Отправлено: 12:21, 03-03-2010 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Работа с массивами.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Как правильно работать с массивами oRaVeNo Программирование и базы данных 13 06-07-2010 06:41
C/C++ - [решено] Лабораторная. Работа с массивами Artem-Samsung Программирование и базы данных 6 01-06-2009 21:30
Perl. Работа с массивами. simon171078 Вебмастеру 2 09-01-2007 16:19
Работа БП Surround Хочу все знать 5 05-03-2006 21:40
Работа ХР с CD LamerOK Microsoft Windows 2000/XP 8 17-04-2004 23:51




 
Переход