Перевод из минут и секунд в секунды - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача: Напишите программу, которая переводит время из минут и секунд в секунды. Программа должна проверять правильность введенных пользователем данных и в случае, если данные неверные, выводить соответствующее сообщение. Код:
// Программа перевода времени из минут и секунд в секунды 
// Прикрепление заголовочных файлов
#include <stdio.h> // Подключение функций стандартного ввода и вывода
#include <conio.h> // Подключение заголовочного файла, необходим для функции getch()
#include <locale.h> // Подключение заголовочного файла, необходим для локализации русского языка
void main() // Главная функция
{
    float t; // Объявление переменной вещественного типа, обозначающую время в минутах и секундах
    int ts, min, sek; // Объявление переменных целого типа, обозначающие время в секундах, число минут и число секунд соответственно
    setlocale(0 , "rus"); // Добавление возможности вывода информации на русском языке
    
    printf("\nВведите время (минут,секунд). Учтите, что величина должна быть положительной\n"); // Приглашение для пользователя с просьбой ввести время в минутах и секундах
    scanf("%f", &t); // Ввод времени в минутах и секундах в переменную "t"
    while (t < 0)
    {
        printf ("Ошибка! Время не может быть отрицательным. Введите время снова:\n");
        scanf("%f", &t);
    }
    min = t; // Переменной "min" присваивается значение "t", но только целую часть (т.е. число минут)
    sek = (t - min) * 100; // Из минут и секунд вычитаются минуты, остаются только секунды (число секунд), значение помещается в переменную "sek"
    while (sek > 59)
    {
        printf ("Ошибка! Секунд не может быть больше 59. Введите время снова:\n");
        scanf("%f", &t); // Ввод времени в минутах и секундах в переменную "t"
        while (t < 0)
        {
            printf ("Ошибка! Время не может быть отрицательным. Введите время снова:\n");
            scanf("%f", &t);
        }
        min = t; // Переменной "min" присваивается значение "t", но только целая часть (т.е. число минут)
        sek = (t - min) * 100;
    }
    ts = min*60 + sek; // Вычисление секунд (окончательный результат) с помощью формулы и его помещение в переменную "ts"
    printf("%i мин %i сек = %i сек", min, sek, ts); // Вывод результата программы (время в секундах) на экран
    getch(); // Пауза, необходимая для ознакомления с результатом работы программы
}
Возможно ли сделать проверку на количество знаков после запятой и как? А также посмотрите, почему получаются такие результаты:

Решение задачи: «Перевод из минут и секунд в секунды»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
 
int main(void) {
    double t;
    
    printf("Time [min.sec]: ");
    if ( scanf("%lf", &t) != 1 ) {
        printf("Wrong input!\n");
        return 1;
    }
    else if ( t < 0. ) {
        printf("Negative value!\n");
        return 1;
    }
    else {
        double m, s;
        
        s = modf(t, &m);
        if ( s >= 0.6 ) {
            printf("Wrong seconds value!\n");
            return 1;
        }
        
        printf("Time in seconds: %.0f\n", s * 100 + m * 60);
    }
    
    return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с плавающей точкой и для ввода-вывода данных
  2. Объявляем переменную типа double для хранения значения времени t
  3. Выводим приглашение для ввода времени в формате мин.сек
  4. Считываем значение времени из стандартного ввода с помощью функции scanf и сохраняем его в переменную t
  5. Проверяем корректность ввода: если scanf вернул значение меньше 1, значит ввод был некорректным и выводим сообщение об ошибке
  6. Проверяем, что значение времени t неотрицательное. Если оно меньше нуля, выводим сообщение об ошибке
  7. В случае корректного ввода времени, объявляем две переменные типа double: m для хранения минут и s для хранения секунд
  8. С помощью функции modf разбиваем значение t на минуты и секунды и сохраняем их в переменные m и s соответственно
  9. Проверяем, что значение секунд s не превышает 0.6 (т.е. 60 секунд). Если превышает, выводим сообщение об ошибке
  10. Выводим время в секундах, перемножая значение s на 100 и значение m на 60 и добавляя их вместе
  11. Завершаем работу программы

ИИ поможет Вам:


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

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы