Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248

Непонятность с циклами

01.02.2013, 01:52. Показов 765. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
class aaa
{
    static void Main()
    {
        int x, y;
        string a;
 
        Console.WriteLine("Enter NUM 1");
        a = Console.ReadLine();
        x = Convert.ToInt32(a);
        Console.WriteLine("Enter NUM 2");
        a = Console.ReadLine();
        y = Convert.ToInt32(a);
 
        for (x = x; x <= 90; x++) 
            for (y = y; y <= 60; y++)
            Console.WriteLine(y + "  " + x); 
 
           }
}
Люди, объясните ламеру. Почему в циклах когда х=х у=у (если например ввести цифры меньше 90 и 60 соотв.) при запуске программы (я вводил цифры 5 и 7) цикл "У" (вложенный который У) пробегается от 7 - ки и до 60 , а цикл X оставался на цифре 5, то есть он не переключался на 6 и т д. то есть цикл Х делает только один шаг.???
Но если цикл х=1 и у=1 Тогда все нормально.Ну или не 1 а любое число менее 90 и 60 соотв. Спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2013, 01:52
Ответы с готовыми решениями:

Непонятность со StopWatch
// The first execution time will be tossed // out, since it can skew the average time. Взято из примера Msdn...

Задача с циклами
Здравствуйте уважаемые обитатели форума!Так как я ещё новичёк в изучении C#,то прошу у вас помощи с циклами.В чём суть проблемы:после...

Разобраться с циклами
Мне нужно заполнить строковый массив разным количеством строк, в зависимости от условия. Если делать это в цикле switch или if то, если...

13
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
01.02.2013, 02:11
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
using System;
class aaa
{
    static void Main()
    {
        int x, y;
        string a;
 
        Console.WriteLine("Enter NUM 1");
        a = Console.ReadLine();
        x = Convert.ToInt32(a);
        Console.WriteLine("Enter NUM 2");
        a = Console.ReadLine();
        y = Convert.ToInt32(a);
 
        for (x = x; x <= 90; x++)
        {
            for (y = y; y <= 60; y++)
            {
                Console.WriteLine(y + "  " + x);
            }
            //смотри сюда, чему равен y!!!
            Console.WriteLine("Тут x= {0}, а y= {1}!!!!", x, y);
            Console.WriteLine("Следовательно об ещё одном внутреннем цикле можешь забыть");
        }
    }
}
2
 Аватар для MrGladus
178 / 178 / 50
Регистрация: 06.01.2013
Сообщений: 392
01.02.2013, 02:30
Цитата Сообщение от bazyzy Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
class aaa
{
    static void Main()
    {
        int x, y;
        string a;
 
        Console.WriteLine("Enter NUM 1");
        a = Console.ReadLine();
        x = Convert.ToInt32(a);
        Console.WriteLine("Enter NUM 2");
        a = Console.ReadLine();
        y = Convert.ToInt32(a);
 
        for (x = x; x <= 90; x++) 
            for (y = y; y <= 60; y++)
            Console.WriteLine(y + "  " + x); 
 
           }
}
Люди, объясните ламеру. Почему в циклах когда х=х у=у (если например ввести цифры меньше 90 и 60 соотв.) при запуске программы (я вводил цифры 5 и 7) цикл "У" (вложенный который У) пробегается от 7 - ки и до 60 , а цикл X оставался на цифре 5, то есть он не переключался на 6 и т д. то есть цикл Х делает только один шаг.???
Но если цикл х=1 и у=1 Тогда все нормально.Ну или не 1 а любое число менее 90 и 60 соотв. Спасибо
Разумеется там 1 итерация поскольку ты забыл закрыть скобку внешнего цыкла, хотя не видно что ты ее и открывал) Со скобками проблема. Плюс к этому ты очень неудобно обьявляешь переменные, будто ты знаешь только 2 буквы Вот тебе твоя рабочая программа:

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int X, Y;
            string input;
 
        Console.WriteLine("Enter NUM 1");
        input = Console.ReadLine();
        X = Convert.ToInt32(input);
        Console.WriteLine("Enter NUM 2");
        input = Console.ReadLine();
        Y = Convert.ToInt32(input);
 
            for (int x = X; x <= 90; x++) 
            {
                for (int y = Y; y <= 60; y++)
                {
                    Console.WriteLine(y + "  " + x);
                }
            }
            Console.ReadLine();
        }
    }
}
На дальнейшее - чем удобнее для себя будешь называть переменные тем проще тебе будет
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
01.02.2013, 02:35
Цитата Сообщение от MrGladus Посмотреть сообщение
Со скобками проблема.
Проблема, конечно же, не в этом.

Цитата Сообщение от bazyzy Посмотреть сообщение
C#
1
2
3
for (x = x; x <= 90; x++) 
   for (y = y; y <= 60; y++)
   Console.WriteLine(y + " *" + x);
После прохождения внутреннего цикла у вас "y" не получает свое прежнее, введенное изначально с клавиатуры, значение, потому и вложенный цикл выполняется только один раз.
1
 Аватар для MrGladus
178 / 178 / 50
Регистрация: 06.01.2013
Сообщений: 392
01.02.2013, 02:39
Цитата Сообщение от kolorotur Посмотреть сообщение
Проблема, конечно же, не в этом.


После прохождения внутреннего цикла у вас "y" не получает свое прежнее, введенное изначально с клавиатуры, значение, потому и вложенный цикл выполняется только один раз.
Ах да, только сейчас дошло)) Но все равно там скобка лишняя, но проблема не в ней. Эта проблемма что Вы описали идет как следствие путаницы с переменными.
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
01.02.2013, 02:43
Цитата Сообщение от MrGladus Посмотреть сообщение
Разумеется там 1 итерация поскольку ты забыл закрыть скобку внешнего цыкла
э не, так не пойдёт, щас наговоришь тут. Так писать
C#
1
2
3
for (x = x; x <= 90; x++) 
            for (y = y; y <= 60; y++)
            Console.WriteLine(y + "  " + x);
правильно; тут НЕ одна итерация; тут сколько надо итераций. Во внутренний цикл не заходит потому, что после первой итерации внутреннего цикла y становится равным 61; скобки тут ни при чём. Напиши так, безо всяких скобок
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int X, Y;
            string input;
 
            Console.WriteLine("Enter NUM 1");
            input = Console.ReadLine();
            X = Convert.ToInt32(input);
            Console.WriteLine("Enter NUM 2");
            input = Console.ReadLine();
            Y = Convert.ToInt32(input);
 
            for (int x = X; x <= 90; x++)
                for (int y = Y; y <= 60; y++)
                    Console.WriteLine(y + "  " + x);
            Console.ReadLine();
        }
    }
}
того же эффекта добьёшься
0
9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248
01.02.2013, 03:20  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
После прохождения внутреннего цикла у вас "y" не получает свое прежнее, введенное изначально с клавиатуры, значение, потому и вложенный цикл выполняется только один раз.
У меня как раз получается, что вложенный цикл проходит все шаги, а Х так и останавливается на цифре 5, хотя как я понимаю, то когда вложенный цикл пройдет все шаги он сообщает вышестоящему циклу, в сво. очередь вышестоящий делает один шаг, и вложенный опять повторяет все шаги. И так заданное количество раз. Например как у А. Гудка в первом разделе цикл for и там таблица умножения.
НО если я в коде в циклах задам жесткое значение, тогда циклы работают как надо.

Добавлено через 6 минут
Цитата Сообщение от kravam Посмотреть сообщение
того же эффекта добьёшься
Да, твой код работает как надо, но я вот только не пойму разница в наших кодах лишь в заглавных буквах, в чем фишка???
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
01.02.2013, 03:28
В каких это наших? Я никакого кода рабочего не выкладывал, я лишь поправил код MrGladusа

Тут объявляется всякий раз новая переменная. И она равна введённой с консоли; Вот вызовется этот цикл десять раз, и всякий раз будет приравнена к чему ты там ввёл
C#
1
for (int x = X; x <= 90; x++)
+++++++++++++++++++++++++++++++++++++++

C#
1
for (x = x; x <= 90; x++)
А тут никакой новой переменной не объявляется. Можно было вообще так написать:
C#
1
for (; x <= 90; x++)
10 раз вызовется этот цикл, а сработает только первый раз, а остальные разы x будет равен 90
0
9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248
01.02.2013, 03:45  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
10 раз вызовется этот цикл, а сработает только первый раз
У меня вообще теперь взрыв мозга. Пожалуйста объясни идиоту, почему тогда (в моем самом первом коде) вложенный цикл повторяется как надо, а верхний цикл только на 5 останавливается (если ввести цифру 5). И почему если присвоить х и у значения заранее (например единицы), тогда все работает нормально.
ПОЖАЛУЙСТА!!! А то я вообще потерялся на этих циклах
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
01.02.2013, 03:59
Допустим, данные ты ввёл 5 и 7
C#
1
2
3
        for (x = x; x <= 90; x++) 
            for (y = y; y <= 60; y++)
            Console.WriteLine(y + "  " + x);
сначала всё предсказуемо; 5=5 и всё такое прочее.
Потом пошли на внутренний цикл:
C#
1
2
            for (y = y; y <= 60; y++)
            Console.WriteLine(y + "  " + x);
ну тут тоже всё понятно. Ты семь приравнял к семи и у тебя в во внутреннем цикле вывелось на консоль

C#
1
2
3
4
5
6
7 5
//потом
7 6
//и так далее
//...
7 61
Ага. Внутренний цикл закончился. Что сейчас начинается? А сейчас во-первых инкременируется x. вот здесь
(...;...;x++), x становится равным 6

Потом идёт проверка. вот здесь:
(...;x<=90;...) проходит проверку? Естессно, 6 ведь меньше 90

После этого ОПЯТЬ пошли на внутренний цикл. Внимание!
(y= y;...;...) 61 приравняли к 61, согласен? Далее:

(...;y<60;...) проходит проверку? Чёрта с два! Ведь 61 не может быт меньше 60-ти!

Поэтому я и написал и повторю- раз эта проверка не прошла, то больше ты во внутренний цикл не зайдёшь; ты переберёшь все x-ы, а y постоянно будет равен 61! И поэтому больше внутренний цикл ни разу не выполнится!
1
9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248
01.02.2013, 04:12  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
поэтому больше внутренний цикл ни разу не выполнится!
НЕреально огромное спасибо. Наконец то я одуплился. Я 5 часов провел в попытках разобраться почему так.
Спасибо еще раз!!!
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
01.02.2013, 04:18
Хотя я малость обстегался в выводе, вот он какой будет:

C#
1
2
3
4
5
6
7 5
//потом
8 5
//и так далее
//...
61 5
То есть в первой колонке выводим y, а во второй x. Ну ты понимаешь.
1
9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248
01.02.2013, 04:27  [ТС]
Цитата Сообщение от kravam Посмотреть сообщение
Хотя я малость обстегался в выводе, вот он какой будет:
Да, я все равно понял, спасибо огромное, просто программирование дается с огромным трудом и возникает куча вопросов, а все отвечают что-то из оперы учи матчасть или рассказывают шо я некрасивые имена даю переменным
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
01.02.2013, 08:28
Ну извини, код xxx.QQQ.z разъяснять бесполезно - ты и сам его не поймешь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2013, 08:28
Помогаю со студенческими работами здесь

Задачи с циклами
Кто сможет, помогите решить задачи, используя С# 1. С помощью цикла со счетчиком вывести на экран в одну строку все двузначные числа,...

Создание методов с циклами for, while
Реализовать в виде класса набор методов для выполнение следующих операций с целыми числами: 1 метод - Дано число N. Определить кол-во...

Задание с циклами и выражениями
Составить программы обеспечивающие вычисление: а) суммы первых n членов ряда б) суммы всех начальных членов ряда меньше заданного числа...

Си шарп, задание с циклами!
Добрый день! Дано следующее задание: Напечатайте таблицу значений функции y=2sin(x) для всех значений x от 0 до 10 с шагом 0,5. ...

Простейшие задачи с циклами
1.) Дано натуральное число. Определить:количество четных цифр в нем. Составное условие и более одного неполного условного оператора не...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru