powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / цикл. бесконечнось не предел(с)
12 сообщений из 37, страница 2 из 2
цикл. бесконечнось не предел(с)
    #37492800
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroда,
Код: plaintext
For z = mass.Count To  1  Step - 1 
работает, но некорректно. т.е. с каждым шагом он ищет в коллекции из n-1 элементов, но в ходе цикла могут быть удалены и 2, и 5, и 10 элементов, а могут быть вообще не удалены...Он ничего не ищет, он совершает mass.Count итераций с обратным отсчетом. Перемення z инициализируется в начале цикла и потом ей наплевать, что там происходит с коллекцией. Цикл гарантированно пройдет до конца без ошибки, если не будешь удалять более одного элемента за итерацию.
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37493186
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

сорь уходил на секцию, тока что освободился. вы правы, при запуске теперь vb... как бы правильнее выразиться... впадает в такой офиг, что отминить запуск можно только через ктрл+паузбрик. правда, возможно, не из-за этого... вот почти полный код
Код: plaintext
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.
For z = mass.Count To  1  Step m
m =  0 
    For x =  0  To  10 
        If MSFlexGrid1.TextMatrix(x,  1 ) = "" Then
        GoTo bl9tb
        End If
        If mass.Count =  0  Then
        GoTo bl9tb
        End If
        If mass(z) = MSFlexGrid1.TextMatrix(x,  1 ) Then
            If MSFlexGrid1.TextMatrix(x,  2 ) = "" Or MSFlexGrid1.TextMatrix(x,  2 ) = "?" Then
            Call mass.Remove(z)
            m = m -  1 
                If popka =  0  Then
                Text3.Text = Text3.Text & MSFlexGrid1.TextMatrix(x,  3 ) & vbCrLf
                For n =  3  To Len(MSFlexGrid1.TextMatrix(x,  3 ))
                sChar = Mid(MSFlexGrid1.TextMatrix(x,  3 ), n,  1 )
                Select Case Asc(sChar)
                Case  65  To  90 ,  97  To  122 ,  192  To  255 
                mass.Add sChar
                End Select
                Next n
                End If
                If popka =  1  Then
                Text3.Text = Text3.Text & MSFlexGrid1.TextMatrix(x,  4 ) & vbCrLf
                For n =  3  To Len(MSFlexGrid1.TextMatrix(x,  4 ))
                sChar = Mid(MSFlexGrid1.TextMatrix(x,  4 ), n,  1 )
                Select Case Asc(sChar)
                Case  65  To  90 ,  97  To  122 ,  192  To  255 
                mass.Add sChar
                End Select
                Next n
                End If
                If popka =  2  Then
                GoTo Perelet
                End If
            Else
            Call mass.Remove(z)
            m = m -  1 
            Text2.Text = Text2.Text & MSFlexGrid1.TextMatrix(x,  2 ) & vbCrLf
            End If
        End If
bl9tb:
    Next x
Next z
тут цикл в цикле, поэтому за один цикл может удалиться любое количество членов коллекции
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37493201
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

хм..значит, это тоже не подходит? печалька
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37493394
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Я просил кроме кода, ещё и словами написать, что нужно сделать.

А по коду - Афигеть! Дайте две!
У тебя там и добавление, неоднократное! и удаление! И ты хочешь цикл для заранее определенного количества итераций! Вообщем расписывай словами что нужно сделать.
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37493544
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

словами: есть две группы(коллекция и столбик таблицы). нужно их сравнить. если елементы в этих группах совпадут, то нужно выполнить определённые действия в зависимости от того, в какой строчке таблицы находится совпавший элемент. после этого удалить совпавший элемент из коллекции, добавить в него ещё несколько элементов(0-5) в зависимости от того, в какой строчке таблицы находится совпавший элемент. т.е. сравнить все элементы коллекции со всеми элементами таблицы. p/s если я правильно помню, раньше я использовал фоич, а вместо удаления юзал замену элемента колеекции на пустую строку. работало отлично, но прога совершала несколько лишних сравнений пустых элементов. учитывая масштаб работы, это несколько сотен тысяч лишних действий. буду благодарен за помощь
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37493646
Фотография Василий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero, вообще-то из коллекции не принято удалять элементы проходя по текущей коллекции. подход тут немного другой формируется коллекция элементов на удаление а уже потом проходя по коллекции элементов на удаление удаляют элементы из первоначальной коллекции. код на C#

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<int> collectionElements = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
            List<int> removeElements = new List<int>();
            foreach (int item in collectionElements)
                if ((item % 2) == 0) removeElements.Add(item);
            foreach (int item in removeElements)
                collectionElements.Remove(item);
        }
    }
}
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37493981
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Викторович,

принцип понятен, но как решить поставленную задачу?) 11483002
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37494445
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получилось! работоспособный код написал за неделю, а улучшаю и доробатываю его уже пол года... чтобы удалять и добавлять элементы коллекции в этой коллекции, я использовал goto + end sub (мб end sub и не надо). т.е. удалял\добавлял элементы, выходил через goto в начало, ещё до цикла. таким образом обновлялось значение количества элементов. мб кому-нить пригодится
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37494452
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero, ну выложите проект, прикоснусь к прекрасному
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37494463
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

эм... т.е. проект? весь проект засекречен, говорю же, пол года пытаюсь сделать величайший искусственный разум... а насчёт темы:
Код: plaintext
:na4alo 
перед циклом,
Код: plaintext
goto na4alo 
в середине цикла после измывательством над элементами этого цикла
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37494468
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero, вау величайший искусственный разум
Может не так
:na4alo
а наоборот
na4alo:
????
Сколько хоть стоить будет сие "величайший искусственный разум" ????
...
Рейтинг: 0 / 0
цикл. бесконечнось не предел(с)
    #37494475
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

если я не свихнусь, пока буду исправлять многочисленные ошибки(лучше бы оставил так как есть. несколько тысяч строк, но зато работало, а теперь только тысяча, и ошибки в каждой строке) то планирую поступить по этой работе в институт. прога может сама думать. т.е. аналитически выбирать и комбинировать правильные пути решения исходя из данных. воть... другими слова - не просто сопоставлять данные, а логически сопоставлять данные) повторбсь, если до этого не свихнусь
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / цикл. бесконечнось не предел(с)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]