Перевод минут в секунды - C (СИ)
Формулировка задачи:
Скажите в чем проблема. Написал программу, она работает но не совсем верно.
unsigned int [0..65535], unsigned long [0..4294967295]. Т.е. minutes*60 спокойно помещается в seconds. Но на выходе, если minutes большое (>1000 и т.д.) результат как будто приводится к unsigned int, в итоге переполнение. Хотя читал что, приводится должно к long. Может что то напудрил в форматным вводом-выводом?
Среда разработки Borland C++ 3.1.
/* Программа выполяняет перевод минут в секунды. Данные вводятся с клавиатуры. */ #include <stdio.h> // подлючение заголовочных файлов #include <conio.h> unsigned int minutes; unsigned long seconds; void main() { printf("\nВведите число минут: "); scanf("%u", &minutes); seconds = minutes*60; printf("В %u минутах содержится %lu секунд.\n", minutes, seconds); printf("\nДля завершения работы нажмите любую клавишу."); getch(); }
Решение задачи: «Перевод минут в секунды»
textual
Листинг программы
#include <stdio.h> int main(void){ unsigned int m; unsigned long s; printf("Min: "); scanf("%u", &m); s = (unsigned long)m * 60UL; printf("Sec: %lu\n", s); return 0; }
Объяснение кода листинга программы
- Подключение стандартной библиотеки
для работы с вводом/выводом - Объявление переменных: — m - переменная типа unsigned int для хранения количества минут — s - переменная типа unsigned long для хранения количества секунд
- Вывод сообщения
Min:
и запрос ввода количества минут с помощью функции scanf - Перевод количества минут в секунды, умножая на 60 (переменная m умножается на 60 и приводится к типу unsigned long с суффиксом UL)
- Вывод количества секунд с помощью функции printf
- Завершение работы программы с возвратом 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д