Member 12548506 Ответов: 3

Цикл C# - вычисление суммы всех целых чисел между диапазонами по вводу пользователя! !


Напишите консольное приложение, которое
(использование петель)

-запрашивает у пользователя два значения
-lowerBoundary и upperBoundary
-отображает сумму всех целых чисел от нижней границы и верхней границы (включительно)
Пример: если пользователь введет 2 и 6, Вы отобразите сумму 2+3+4+5+6

Пожалуйста, помогите!! Я действительно понятия не имею, что делать!

Что я уже пробовал:

int start, end;

Console.Write("Enter lower integer >> ");
start = int.Parse(Console.ReadLine());
Console.Write("Enter higher integer >> ");
end = int.Parse(Console.ReadLine());

int sum = 0;
for (int x = start; x <= end; x++)
{
    sum += x;
    Console.WriteLine("The sum of the integers between these two numbers is {0} ", sum);
}


}

F-ES Sitecore

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

Member 12548506

Я действительно не знаю. Он не показывает правильных вычислений

F-ES Sitecore

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

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

phil.o

То, как вы это сделали, вы пишете для консоли на каждой итерации. Думать об этом. Это действительно то, чего ты хочешь?

Member 12548506

Я не знаю, что именно я делаю. Я так запуталась. Вместо того, чтобы показывать 5+6+7+8 и т. д., что позволяет говорить начала = 5, конец = 20, он показывает 5, 10, 15, 20 и т. д.

BillWoodruff

Я считаю вполне возможным, что намерение человека, который поручил вам эту задачу, состояло в том, чтобы вы показали только конечную сумму диапазона целых чисел. Если это так, все, что вам нужно сделать, это переместить оператор WriteLine за пределы цикла.

3 Ответов

Рейтинг:
23

OriginalGriff

Переместите консоль.Строку вне цикла:

for (int x = start; x <= end; x++)
    {
    sum += x;
    }
Console.WriteLine("The sum of the integers between these two numbers is {0} ", sum);


"Как мне отобразить "если пользователь введет 2 и 6, вы отобразите "сумму 2+3+4+5+6=н"""
Это другой вопрос, и он немного сложнее.
Но...это твое домашнее задание, так что ты должен сделать его сам!
Я расскажу вам, как это сделать, но вы сами должны написать код, хорошо?
Имейте в виду, что это не тот способ, которым я бы это сделал - но классы, которые я бы использовал для этого, вы, вероятно, еще не рассмотрели: StringBuilder или List<T> - и я бы все равно не использовал цикл для выполнения этой задачи! :смеяться:
Но...
Объявите строку вне цикла, назовите ее "separator- и установите значение на пустую строку.
Используйте Консоль.Напишите на вывод "сумма "
Внутри цикла используйте консоль.Напишите, чтобы записать значение separator затем следует значение x. (Вы можете сделать это в одной строке со строкой форматирования)
Установите значение параметра separator к "+"
После завершения цикла используйте консоль.Writeline для записи"=", за которым следует значение sum

Попробуйте это и посмотрите, как далеко вы доберетесь!


Member 12548506

Как мне отобразить "если пользователь введет 2 и 6, вы отобразите "сумму 2+3+4+5+6=н""

Member 12548506

Я не думаю, что понимаю разделитель раздела.
Пока что у меня есть вот это

строка, разделитель = строка.Пустой;

int sum = 0;
Приставка.Напишите("сумма {0} и {1} равна ", начало, конец);

для (тип int х = начать; х &ЛТ;= конца; х++)
{
сумма += x;
Приставка.Напишите("+", + x);
}
Приставка.WriteLine(" = " + sum);

Как записать значение разделителя, если оно установлено в пустую строку?

Прошу прощения за глупый вопрос. Я действительно пытаюсь понять, что вы имели в виду. Большое вам спасибо!

Member 12548506

О, подождите, я все понял!!!! Большое вам спасибо!
Просто дважды убедитесь,

Приставка.Напишите("{0} + ", разделитель + x);

Member 12548506

Однако в конце концов я получаю дополнительный знак плюс.

OriginalGriff

Вот для чего нужен "разделитель": он запускается пустым и ничего не печатает. Во второй раз, когда вы печатаете его, он содержит "+".
Так что попробуй
Приставка.Пиши("{0}{1}", сепаратор, x);
Затем установите разделитель на "+" для следующего раза.
Попробуйте: вы поймете, что я имею в виду!

Member 12548506

Наконец-то я это понял. Я многому научился и очень благодарен вам за ваше терпение и то, что вы нашли время научить меня. Я изучаю C# онлайн, так что немного трудно задавать вопросы без инструктора лицом к лицу.

OriginalGriff

Если вы делаете это с помощью онлайн - уроков или видео, это может быть не лучшим способом.
Курс лучше всего - потому что вы получаете наставника, который может перефразировать материал, если вы не понимаете, - но после этого книга. Они охватывают вещи структурированным образом, так что вы встречаете все в разумном порядке и не пропускаете важные вещи мимоходом.
Проблема в том, что если вы не знаете, что что-то существует, вы не можете использовать это...
Возьми книгу!
Wrox делают некоторые хорошие, как и Addison Wesley. Microsoft Press может быть хороша, но, как правило, бедна для полных новичков IMHO.
Не пытайтесь учиться, глядя на чужой код - это не объясняет, почему он такой, а не использует что-то другое.

Member 12548506

Я прохожу этот курс в своем колледже онлайн, потому что у них не было никаких вариантов в школе. У нас есть книга, но организация курса учителя совсем не помогает. Некоторые из его домашних заданий не отражают упражнений или примеров в книге, поэтому мне остается выяснить многое самостоятельно.

Я обязательно посмотрю те, что вы предоставили. Еще раз спасибо!

OriginalGriff

Всегда пожалуйста!

Рейтинг:
2

Sergey Alexandrovich Kryukov

Это не вопрос. Главная проблема, которую я вижу, заключается в следующем: вы должны переместить линию с помощью Console.WriteLine наша часть цикла. Вы также можете проверить это end больше или равно start.

Но проблема не требует цикла. Чтобы решить ее разумным способом, обратите внимание, что первый и последний члены имеют ту же сумму, что и второй и предпоследний, и так далее. Итак, если у вас есть четное число членов N, то решением будет некоторое число первых и последних, умноженное на число таких пар: (start + end) * N / 2; для нечетного числа членов к этой сумме будет добавлено значение среднего члена. Пожалуйста, уточните остальное сами.

—СА


Richard Deeming

Это, конечно, более разумный способ решить проблему; но это не научит студента ничему о петлях. :)

Sergey Alexandrovich Kryukov

Учение об этих петлях есть везде, но трудно научить главному, используя свой собственный мозг.
—СА

Member 12548506

Простите, сэр, но я считаю, что в этом не было никакой необходимости. Вы не знаете ни моего положения, ни меня самого. Публикация на этом форуме была моим последним прибежищем после нескольких часов исследований о петлях. Просто потому, что я не понимаю или застрял на одной концепции, не означает, что я глуп и не могу разобраться в этом самостоятельно.

Sergey Alexandrovich Kryukov

Простите, о чем вы говорите? Петлю починить? Но у меня есть у вас полный ответ на ваш цикл использования, извините, если вы его не заметили? На однострочном решении без петли? или использовать свой мозг? Хм... :-)

В любом случае, я не понимаю, почему вы могли застрять с петлями.
Еще меньше я понимаю, что заставляет вас вообще упоминать о глупости. Никто даже не пытался думать, что вы были глупы, просто вы не заметили одного очевидного решения, которое делает циклы избыточными. Я с радостью соглашусь, если вы скажете, что поняли это с самого начала, но проигнорировали хотя бы потому, что были сосредоточены на этих петлях. И даже если бы вы действительно не заметили этого, все было бы прекрасно.

—СА

Member 12548506

Я действительно заметил ваш ответ, сэр, но, как вы можете видеть из названия вопроса и требований hw, я должен использовать циклы. Прошу прощения, если вы неправильно поняли мой пост. Ваш ответ был полезен, просто я не мог им воспользоваться. Однако вы сказали: "трудно научить главному, используя свой собственный мозг", и из моего понимания вы подразумеваете, что я глуп. Еще раз прошу прощения, если я неверно истолковал ваш ответ.

Sergey Alexandrovich Kryukov

К сожалению, вы не следуете логике в своем комментарии. Название вашего вопроса не подразумевает, что это требование.

Пожалуйста, не нужно извиняться, и я бы посоветовал вам не слишком много на себя брать. Всегда старайтесь читать контекст, иначе вы можете обидеться на то, что написано даже на другой странице. :-)
Хотя я никогда не считал тебя глупым, я прошу прощения за это неверное впечатление.

—СА

Рейтинг:
0

Member 13923122

использование системы;

пространство имен SumOfnton
{
классная программа
{
static void Main(string[] args)
{
int start=0, end=0, sum=0;

Приставка.WriteLine("Введите Первое Целое Число");
start = int.Parse(консоль.Линия чтения());
Приставка.WriteLine("Введите Второе Целое Число");
конец = инт.Разбор(Приставка.Линия чтения());

if (start < end)
{
для (тип int я = начать; я &л;= конца; я++)
{
сумма = сумма + i;
}
Приставка.WriteLine("сумма чисел между {0} и {1} равна {2} ", начало, конец, сумма);
}
еще
{
Приставка.WriteLine("Второе Число Должно Быть Больше Первого Числа");
}

Приставка.ReadKey();
}
}
}


Richard Deeming

Если ОП все еще ждет, чтобы кто-то сделал за них домашнее задание ДВА ГОДА позже, значит, они уже потерпели неудачу.

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