powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверка условия в цикле do while (what a fack)?
15 сообщений из 15, страница 1 из 1
Проверка условия в цикле do while (what a fack)?
    #38418219
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace sort
{
    class Program
    {
        static void Main()
        {
            int tmp;
            int n;
            int[] g = {4,6,7,1,5,3,8,9,0,2 };
            for (int i = 1; i < g.Length; i++)
            {
                if (g[i] < g[i - 1])
                {
                    n = i;
                    do
                    {
                        tmp = g[n - 1];
                        g[n - 1] = g[n];
                        g[n] = tmp;
                        --n;
                    }
                    while (n != 0 || g[n] > g[n - 1]);
                }
            }
            for (int i = 0; i < g.Length; i++)
                Console.WriteLine(g[i]);
            Console.ReadKey();
        }
    }
}



Пытаюсь просто отсортировать массив и в проверке условия в while (n != 0 || g[n] > g[n - 1]) вылетает исключение, в тот момент когда n == 0 по моим подсчет этого должно быть достаточно чтобы выйти из цикла do while но блин компилятор начинает проверять и другое условие которое стоит за || (или) и во время проверки (естественно ведь n уже ноль и если он 0 отнять 1 и применить как индекс у массива то ...) вылетает исключение, может я чего то не понимаю, почему оно вылетает ведь условие вроде как не должно проверятся ?
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418230
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megazoid007 когда n == 0 по моим подсчет этого должно быть достаточно

у тебя не правильные подсчеты
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418236
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ведь условие вроде как не должно проверятся ?
должно , это же или
вот так не будет проверятся
while (n > 0 && g[n] > g[n - 1]);

всё это ловится трассировкой на раз-два.

и всё это напоминает реализацию qsort

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    static void qSort(int[] Arr, int low, int high)
        {
            int i = low;
            int j = high;
            int x = Arr[(low + high) / 2];
            do
            {
                while (Arr[i] < x) ++i;
                while (Arr[j] > x) --j;
                if (i <= j)
                {
                    int temp = Arr[i];
                    Arr[i] = Arr[j];
                    Arr[j] = temp;
                    i++; j--;
                }
            } while (i <= j);

            if (low < j) qSort(Arr, low, j);
            if (i < high) qSort(Arr, i, high);
        }

...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418237
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris, а по ваши подсчетам что происходит ?
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418243
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beg-in-er, дык вродеж в том то и дело что это или и здесь для выполнения условия достаточно одного из подусловий т.е. если уже n==0 т.е. в рамках while уже не тру а фалс и можно выходить из цикла я уже неговорю про то что здесь или "с двумя палками" т.е. сами понимаете
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418244
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megazoid007,

пусть n=-100000000, но цикл все равно будет продолжаться, пока g[n] > g[n - 1]. Это ж ИЛИ, а не И
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418247
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megazoid007 если уже n==0

е-мое, у тебя условие n!=0, при n==0 оно дает false, значит надо проверить следующее вдруг оно true.
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418256
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megazoid007beg-in-er, дык вродеж в том то и дело что это или и здесь для выполнения условия достаточно одного из подусловий т.е. если уже n==0 т.е. в рамках while уже не тру а фалс и можно выходить из цикла я уже неговорю про то что здесь или "с двумя палками" т.е. сами понимаете
срочно повторить булеву алгебру

тынц
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418374
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему этот цикл бесконечный ?
Код: c#
1.
2.
3.
do
{
}while(false || true);
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418376
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а все разобрался булева алгебра ек макарек )))
Но тем ни мене такая комбина работает:

Код: 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.
        static void Main()
        {
            int tmp;
            int n;
            int[] g = {4,6,7,1,5,3,8,9,0,2 };
            for (int i = 1; i < g.Length; i++)
            {
                if (g[i] < g[i - 1])
                {
                    n = i;
                    do
                    {
                        tmp = g[n - 1];
                        g[n - 1] = g[n];
                        g[n] = tmp;
                        --n;
                        if (n == 0 || g[n] > g[n - 1]) break;
                    }
                    while (true);
                }
            }
            for (int i = 0; i < g.Length; i++)
                Console.WriteLine(g[i]);
            Console.ReadKey();
        }
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418377
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megazoid007Почему этот цикл бесконечный ?
Код: c#
1.
2.
3.
do
{
}while(false || true);


он эквивалентен записи
Код: c#
1.
2.
3.
do
{
}while(true);



ссылку же дал по оператору or . там всё написано.

Код: c#
1.
2.
3.
4.
false||false==false
true||false==true
false||true==true
true||true==true
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418378
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понял что две палки ( || ) и два ( && ) в while не работают.
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418380
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
megazoid007Я так понял что две палки ( || ) и два ( && ) в while не работают.
ты уникум. у всех работает, а у тебя нет. мож ты что то не так делаешь.
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418381
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beg-in-er, Ну да все верно спасибо большое
...
Рейтинг: 0 / 0
Проверка условия в цикле do while (what a fack)?
    #38418382
megazoid007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beg-in-er, а все въехал, извиняюсь за затуп
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверка условия в цикле do while (what a fack)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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