Member 14955513 Ответов: 1

Как указать строку в текстовом документе


Моя программа должна распечатать будний день в зависимости от целого числа (1-7), которое я получаю из текстового документа. Как я могу это сделать?

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

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE*fp;
    fp = fopen("week.txt", "r");

    double  m, d, millenial, decade;
    int y, weekdaynumber, wdnfinal;


    printf("enter a date in format YYYY-MM-DD. The weekday will be printed out.\n");
    scanf("%d-%lf-%lf", &y, &m, &d);

    millenial = (y - (y % 100))/100;
    decade = (y % 100);


    if ( m == 1 || m ==2){      // month formula by Reverend Zeller
        m = m+10;
    }
    else{
        m = m-2;
    }

    //printf("%lf ;;; %lf ;;; %lf", y, m, d);
    weekdaynumber = (d + (int)floor((13*m)-1)/5 + decade + (int)floor(decade/4) + (int)floor(millenial/4) - 2*millenial); // formula by Reverend Zeller
    wdnfinal = weekdaynumber % 7;

Rick York

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

Richard MacCutchan

Не используйте типы float для интегральных значений (месяц и день), так как это может привести к неточным ответам.

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

Member 14955513

Значение "Weekdaynumber" представляет, какой день недели это число (1 = понедельник, 2= вторник и так далее). Однако я должен распечатать будни в виде строки из текстового документа, где они записаны. Это упражнение об управлении файлами, и мне не хватает только этой части кода.

Richard MacCutchan

Так в чем же трудность? Мы понятия не имеем, что находится в текстовом файле и как он связан с номерами дней.

1 Ответов

Рейтинг:
5

KarstenK

звучит довольно просто:

char *weekday = "monday";

switch(iWeekday) {
 case 0:
  break;//default
 case 1:
  weekday = "tuesday";
  break;
}
fprint(weekday);
Для лучшего использования вы можете записать его в функцию.