Перевод из минут и секунд в секунды - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с плавающей точкой и для ввода-вывода данных
- Объявляем переменную типа double для хранения значения времени t
- Выводим приглашение для ввода времени в формате
мин.сек
- Считываем значение времени из стандартного ввода с помощью функции scanf и сохраняем его в переменную t
- Проверяем корректность ввода: если scanf вернул значение меньше 1, значит ввод был некорректным и выводим сообщение об ошибке
- Проверяем, что значение времени t неотрицательное. Если оно меньше нуля, выводим сообщение об ошибке
- В случае корректного ввода времени, объявляем две переменные типа double: m для хранения минут и s для хранения секунд
- С помощью функции modf разбиваем значение t на минуты и секунды и сохраняем их в переменные m и s соответственно
- Проверяем, что значение секунд s не превышает 0.6 (т.е. 60 секунд). Если превышает, выводим сообщение об ошибке
- Выводим время в секундах, перемножая значение s на 100 и значение m на 60 и добавляя их вместе
- Завершаем работу программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д