Автор Тема: Помогите с циклом For in  (Прочитано 400 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн xoop [?]

  • Новичок
  • *
  • Сообщений: 10
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Помогите с циклом For in
« Создано: Сентябрь 20, 2017, 18:10:14 »
Версия AutoIt: 3.

Описание:
Необходимо сравнить 2 массива и из первого удалить строки совпадающие со вторым. Использую 2 вложенных for in. Но почему то не работает. Такое ощущене, что даже в цикл не входит. Подскажите пожалуйста, как исправить.


Примечания:
Код: AutoIt [Выделить]
#Include <Array.au3>
#include <IE.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>

Global $studarray[3] = ['aaa','bbb','ccc']
Global $errarray[3] = ['ss','dfd dfd','ccc']

   For $x  in $studarray
      For $y In $errarray
            If $studarray[$x] == $errarray[$y] Then
               _ArrayDisplay($studarray[$x], "Нашли")
               _ArrayDelete($studarray, $x)
               $x = $x - 1
            EndIf
      Next
   Next

_ArrayDisplay($studarray, "После")

« Последнее редактирование: Сентябрь 20, 2017, 18:15:47 от xoop »

Русское сообщество AutoIt

Помогите с циклом For in
« Отправлен: Сентябрь 20, 2017, 18:10:14 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3654
  • Репутация: 968
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Помогите с циклом For in
« Ответ #1, Отправлен: Сентябрь 20, 2017, 18:40:22 »
xoop
В цикле For...In...Next переменная не является счётчиком, а принимает значение самого элемента. Вот, посмотрите что выводится в консоль
Код: AutoIt [Выделить]
Global $studarray[3] = ['aaa','bbb','ccc']
For $x In $studarray
  ConsoleWrite($x & @CRLF)
Next


Оффлайн xoop [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Помогите с циклом For in
« Ответ #2, Отправлен: Сентябрь 20, 2017, 18:49:32 »
Спасибо. Поменял на for to.
Выдаёт ошибку в сравнении If $studarray[$x] == $errarray[$y] Then
==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.
Код: AutoIt [Выделить]
#Include <Array.au3>
#include <IE.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>

Global $studarray[3] = ['aaa','bbb','ccc']
Global $errarray[3] = ['ss','dfd dfd','ccc']

   For $x = 0 to 2
      For $y = 0 to 2
            If $studarray[$x] == $errarray[$y] Then
               _ArrayDisplay($studarray[$x], "Нашли")
               _ArrayDelete($studarray, $x)
               $x = $x - 1
            EndIf
      Next
   Next





Добавлено: Сентябрь 20, 2017, 19:00:52
Решил, спасибо за подсказку
Код: AutoIt [Выделить]
#Include <Array.au3>
#include <IE.au3>
#include <MsgBoxConstants.au3>
#include <File.au3>

Global $studarray[3] = ['aaa','bbb','ccc']
Global $errarray[3] = ['ss','dfd dfd','ccc']
Global $xnum = 0
Global $ynum = 0

   For $x in $studarray
      For $y In $errarray
            If $x == $y Then
               _ArrayDisplay($studarray[$xnum], "Нашли")
               _ArrayDelete($studarray, $xnum)
               $x = $x - 1
            EndIf
            $ynum = $ynum +1
      Next
      $xnum = $xnum +1
   Next

« Последнее редактирование: Сентябрь 20, 2017, 19:00:53 от xoop, Причина: Объединение сообщений »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3654
  • Репутация: 968
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Помогите с циклом For in
« Ответ #3, Отправлен: Сентябрь 20, 2017, 19:16:18 »
xoop
Цитировать
Решил
А если так? ;)
Код: AutoIt [Выделить]
Global $studarray[3] = ['aaa','bbb','ccc']
Global $errarray[3] = ['aaa','dfd dfd','ccc']




Функция здесь: Ответ #8

Код: AutoIt [Выделить]
Global $studarray[3] = ['aaa','bbb','ccc']
Global $errarray[3] = ['ss','dfd dfd','ccc']
$a = _ArrayCompare($studarray, $errarray)

#include <Array.au3>
_ArrayDisplay($a)


Русское сообщество AutoIt

Re: Помогите с циклом For in
« Ответ #3 Отправлен: Сентябрь 20, 2017, 19:16:18 »

Оффлайн xoop [?]

  • Новичок
  • *
  • Сообщений: 10

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Помогите с циклом For in
« Ответ #4, Отправлен: Сентябрь 20, 2017, 19:38:47 »
Спасибо

Помечен как лучший ответ пользователем xoop Отправлен Сентябрь 23, 2017, 02:31:55

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3654
  • Репутация: 968
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Помогите с циклом For in
« Ответ #5, Отправлен: Сентябрь 21, 2017, 15:19:08 »
Вариант с циклом For...In...Next
Код: AutoIt [Выделить]
#Include <Array.au3>

Global $studarray[3] = ['aaa','bbb','ccc']
Global $errarray[3]  = ['aaa','ddd','ccc']
Global $i = -1

   For $x In $studarray
      $i += 1
      For $y In $errarray
         If $x == $y Then
            _ArrayDelete($studarray, $i)
            $i -= 1
            ExitLoop
         EndIf
      Next
   Next

_ArrayDisplay($studarray)


Русское сообщество AutoIt

Re: Помогите с циклом For in
« Ответ #5 Отправлен: Сентябрь 21, 2017, 15:19:08 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
8 Ответов
4800 Просмотров
Последний ответ Сентябрь 23, 2009, 02:12:47
от FiReDoGGi
2 Ответов
2554 Просмотров
Последний ответ Октябрь 14, 2011, 11:42:23
от panda_911
6 Ответов
3046 Просмотров
Последний ответ Октябрь 20, 2011, 23:07:34
от Zaramot
13 Ответов
5507 Просмотров
Последний ответ Июль 24, 2012, 02:39:08
от Kaster
5 Ответов
3386 Просмотров
Последний ответ Август 21, 2012, 17:32:58
от Kaster
1 Ответов
887 Просмотров
Последний ответ Март 31, 2015, 17:32:57
от madmasles
6 Ответов
1457 Просмотров
Последний ответ Май 25, 2015, 23:32:33
от Авдей
0 Ответов
410 Просмотров
Последний ответ Январь 27, 2016, 20:39:29
от Yashied
5 Ответов
1541 Просмотров
Последний ответ Март 07, 2016, 22:28:52
от alex33
1 Ответов
549 Просмотров
Последний ответ Октябрь 07, 2016, 18:18:12
от ra4o