Я написал следующее консольное приложение, которое просит пользователя ввести день.Усовершенствуйте 2 функции, чтобы дать правильный результат
Мне нужна помощь, чтобы улучшить, чтобы они дали правильный ответ за ВСЕ дни недели.
Если пользователь вводит какой-либо другой день кроме понедельника, выходные данные «сегодня», «вчера», «завтра» с соответствующими выходными днями ниже этих заголовков.
Проблема, кажется, только в понедельник не дает правильного выхода.
Это мой код до сих пор:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
typedef enum the_days {monday,tuesday,wednesday,thursday,friday,saturday,sunday, noday} day;
day yesterday (day today);
day tomorrow (day today);
char thedays[][10] = {"monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"};
day findDay(char string1[]);
void main(void)
{
day today;
char theDay[10];
puts("Type the day (e.g. 'monday'");
gets(theDay);
today = findDay(theDay);
if(today == noday)
{
puts("Error - invalid input - exiting");
return;
}
printf("today \tyesterday \ttomorrow\n"
"============================================\n");
printf("%s\t %s \t %s\n", thedays[today], thedays[yesterday(today)],thedays[tomorrow(today)]);
}
day findDay(char string1[])
{
int i = 0;
day thisday;
for (i=0;i<7;i++)
{
if (!strcmp(thedays[i],string1))
{
break;
}
}
thisday = (day)i;
return thisday;
}
day yesterday(day today)
{
day before;
before = (day)(today- 1);
return before;
}
day tomorrow(day today)
{
day after;
after = (day)(today + 1);
return after;
}
Для ввода некоторого образца, каков ожидаемый выход и фактический выход? И попытались ли вы, например? пройдите через код по строкам в отладчике, чтобы узнать, что происходит? –
Если пользователь вводит какой-либо другой день, кроме понедельника, выходные данные «сегодня», «вчера», «завтра» с соответствующими выходными днями ниже этих заголовков. Проблема, кажется, только в понедельник не дает правильного выхода. –
Я бы сказал, что воскресенье также даст вам неправильный результат. Причина, по которой в понедельник дает вам неправильный результат, заключается в том, что тогда 'вчера' возвращает' -1', что недопустимо в перечислении 'day'. Как вы думаете, что вы могли бы исправить это, так что это воскресное перечисление (значение '6')? Другими словами, как вы получаете от «-1» до «6»? –