Напишите программу для отображения предыдущего и следующего дня заданного днем недели на языке Си#
Спасибо что помогли мне мои друзья
С Новым Годом
Что я уже пробовал:
Я не знаю
я еще ничего не пробовал
Вы должны использовать индексированный цикл для поиска в списке имени дня, которое вводит пользователь. Если имя найдено, то текущим индексом будет его позиция в списке. Если он не найден, то вам нужно отправить сообщение об ошибке. Помните, что Предыдущее значение индекса для понедельника не будет равно -1. Точно так же следующее значение после воскресенья не будет 7.
int index = -1; for int i = 0; i < daysofweek.Length; ++i) { if input.Equals(daysofweek[i]) break; } // at this point index should have a value equal to the day's index (0 to 6) // if the name was not found then it will be greater than 6.
Как мне это сделать
Я новичок на самом деле, так что любая помощь?
Смотрите мой обновленный код.
Хорошая мысль, пятерка!
Смотри мой ответ, Ричард. ;)
Член 14075859 написал:я сдался лол
//needs reference to System.Globalization CultureInfo ci = new CultureInfo("en-us"); DateTime givenDay = new DateTime(2019,01,01); DateTime prevDay = givenDay.AddDays(-1); DateTime nextDay = givenDay.AddDays(1); Console.WriteLine("given day: {0} ({1})", givenDay.ToString("yyyy-MM-dd"), givenDay.ToString("dddd", ci)); Console.WriteLine("prev day: {0} ({1})", prevDay.ToString("yyyy-MM-dd"), prevDay.ToString("dddd", ci)); Console.WriteLine("next day: {0} ({1})", nextDay.ToString("yyyy-MM-dd"), nextDay.ToString("dddd", ci));
given day: 2019-01-01 (Tuesday) prev day: 2018-12-31 (Monday) next day: 2019-01-02 (Wednesday)
public enum WeekDays { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; int givenDay = (int)WeekDays.Sunday; //(int)WeekDays.Tuesday; int prevDay = givenDay-1; if(prevDay<0) prevDay = (int)WeekDays.Saturday; int nextDay = givenDay+1; if(nextDay>6) nextDay = (int)WeekDays.Sunday; Console.WriteLine("given day is: {0} (value of: {1})", Enum.GetName(typeof(WeekDays), givenDay), givenDay); Console.WriteLine("prev day is: {0} (value of: {1})", Enum.GetName(typeof(WeekDays), prevDay), prevDay); Console.WriteLine("next day is: {0} (value of: {1})", Enum.GetName(typeof(WeekDays), nextDay), nextDay);
given day is: Sunday (value of: 0) prev day is: Saturday (value of: 6) next day is: Monday (value of: 1)
string[] WeekDays = new string[]{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; Console.WriteLine("Days of week:"); for(int i=0; i<WeekDays.Length; i++) Console.WriteLine("{0} - {1}", i, WeekDays[i]); Console.WriteLine("Choose the day (corresponding number):"); string choosenDay = Console.ReadLine(); int givenDay = Int32.Parse(choosenDay); int prevDay = givenDay-1<0 ? 6 : givenDay-1; int nextDay = givenDay+1>6 ? 0 : givenDay+1; Console.WriteLine("given day is: {0} (value of: {1})", WeekDays[givenDay], givenDay); Console.WriteLine("prev day is: {0} (value of: {1})", WeekDays[prevDay], prevDay); Console.WriteLine("next day is: {0} (value of: {1})", WeekDays[nextDay], nextDay);
Days of week: 0 - Sunday 1 - Monday 2 - Tuesday 3 - Wednesday 4 - Thursday 5 - Friday 6 - Saturday Choose the day (corresponding number): given day is: Tuesday (value of: 2) prev day is: Monday (value of: 1) next day is: Wednesday (value of: 3)
+5, очень хорошо объяснено. Но мой ответ относился к исходному вопросу (взгляните на версию 1), который OP отредактировал.
Я видела это, Ричард. Мне было интересно, почему вы и OriginalGriff рекомендуете использовать for
петля. Итак, я должен был увидеть оригинальный вопрос.
[РЕДАКТИРОВАТЬ]
Я забыл сказать: спасибо.
Проблема с этим подходом заключается в том, что происходит, когда пользователь входит в понедельник или воскресенье?
Вам нужно использовать пользовательский ввод для поиска в вашем массиве введенного имени дня. (Попробуйте а for
петля)
Если его не найдут, скажите ему, что это не тот день, и попросите его попробовать еще раз.
если это так, то переменная цикла является индексом К "сегодня".
Чтобы вычислить индекс предыдущих дней, добавьте 6 к индексу, а затем используйте оператор модуля, чтобы вернуть его к "правильному" значению. Чтобы вычислить следующие дни, добавьте один, а затем снова используйте модуль.
int prevIndex = (index + 6) % 7; int nextIndex = (index + 1) % 7;Это работает, потому что модуль дает вам остаток и всегда будет между 0 и 6 включительно. (Таким образом, добавление шести и взятие модуля 7 эффективно дает вам минус один, который "оборачивается" вокруг конца массива!)
не могли бы вы прислать мне код пожалуйста
я начинаю путаться
я всего лишь новичок
Я мог бы, но не собираюсь! Это ваше домашнее задание, а не мое - и вы узнаете гораздо больше, делая его (и делая ошибки), чем просто глядя на мою работу и сдавая ее.
Кроме того, ваш учитель почти наверняка знает, что этот сайт существует, и не будет доволен плагиатом ...
Попробуйте: сначала сделайте первый бит. Прочтите входные данные и найдите текущий день - это всего лишь пара строк кода! Используйте отладчик, чтобы точно видеть, что происходит во время выполнения кода.
Когда это сработает, добавьте следующий бит.
Это не сложно, если смотреть на это маленькими кусочками.
Итак я уже создал массив и его элементы
я создал переменную для хранения входных данных
я спросил пользователя о текущем дне
а потом?
Затем используйте цикл for, чтобы найти входные данные в массиве.
Я уверен, что вы делали что-то подобное в предыдущих упражнениях.
ну это мое второе упражнение
мой первый я использовал цикл for для генерации квадратных чисел вот и все
этот гораздо сложнее
мой преподаватель сказал нам попробовать
На самом деле это не намного сложнее - это просто собрать воедино то, что вы узнали по-разному.
показатель инт ;
for (index = 0; index < 7; index++)
{
...
}
// здесь индекс равен либо 0..6, и в этом случае он нашел день, либо 7, и в этом случае он этого не сделал.
Это довольно просто, не так ли?
Посмотрите, сможете ли вы заполнить петлю - это действительно не сложно!
заполнение петли-это реальная проблема
я уже понял, что за (индекс и т. д.)
это просто внутренняя часть петли
daysofweek[index] = конвертировать.ToString(индекс + 1 % 7);
вот что я написал лол
Нет, это не так!
Пользователь вводит строку "среда" - и ее нужно сравнить с каждым элементом вашего массива по очереди, пока вы его не найдете.
Я уверен, вы помните, как сравнивать вещи в C#!
я сдался лол
Тогда вы не будете иметь ничего, чтобы вручить. ЛОЛ.
Хорошая мысль, пятерка!
Смотри мой ответ, ОГ ;)