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

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

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

Скажите в чем проблема. Написал программу, она работает но не совсем верно.
/*
  Программа выполяняет перевод минут в секунды.
  Данные вводятся с клавиатуры.
*/
 
#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();
}
unsigned int [0..65535], unsigned long [0..4294967295]. Т.е. minutes*60 спокойно помещается в seconds. Но на выходе, если minutes большое (>1000 и т.д.) результат как будто приводится к unsigned int, в итоге переполнение. Хотя читал что, приводится должно к long. Может что то напудрил в форматным вводом-выводом? Среда разработки Borland C++ 3.1.

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

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;
}

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

  1. Подключение стандартной библиотеки для работы с вводом/выводом
  2. Объявление переменных: — m - переменная типа unsigned int для хранения количества минут — s - переменная типа unsigned long для хранения количества секунд
  3. Вывод сообщения Min: и запрос ввода количества минут с помощью функции scanf
  4. Перевод количества минут в секунды, умножая на 60 (переменная m умножается на 60 и приводится к типу unsigned long с суффиксом UL)
  5. Вывод количества секунд с помощью функции printf
  6. Завершение работы программы с возвратом 0

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


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

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

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