我目前正在创建一个程序,用于在一张专辑中输入12首歌曲作为两组输入数字作为分钟和秒,将它们存储在适当的数组中,然后返回专辑的长度,平均歌曲长度,最短的歌,最长的歌。几乎所有我目前的代码都运行良好,但是我的数字是正确的,我遇到了一些严重的困难。每当我将格式化为几秒钟,然后返回分钟和秒钟,同时格式化为分号和前面的单个数字前面的0,它们似乎会改变。请参阅附图以获得进一步说明。
以下是代码:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void displayTime(int);
int main()
{
const int SIZE = 12;
int mins[SIZE], secs[SIZE],minsToSecs[SIZE], totalSecs[SIZE];
int count = 0;
int shortest, longest, totalAlbumLength, averageLengthOfTracks;
cout << "Welcome to my Album Length Calculator" << endl;
cout << "Please enter all track lengths in minutes and seconds" << endl;
cout << "seperated by a space." << endl;
while (count < SIZE)
{
cout << "Track " << count + 1 << ": ";
cin >> mins[count];
cin >> secs[count];
count++;
}
for (int i = 0; i < SIZE; i++)
{
minsToSecs[i] = mins[i] * 60;
}
for (int i = 0; i < SIZE; i++)
{
totalSecs[i] = minsToSecs[i] + secs[i];
}
shortest = totalSecs[0];
for (int i = 0; i < SIZE; i++)
if (shortest > totalSecs[i])
shortest = totalSecs[i];
longest = totalSecs[0];
for (int i = 0; i < SIZE; i++)
if (longest < totalSecs[i])
longest = totalSecs[i];
totalAlbumLength = 0;
for (int i = 0; i < SIZE; i++)
totalAlbumLength += totalSecs[i];
averageLengthOfTracks = totalAlbumLength / SIZE;
cout << "The Shortest track was ";
displayTime(shortest);
cout << "The Longest track was ";
displayTime(longest);
cout << "The Total Album Length was ";
displayTime(totalAlbumLength);
cout << "The Average Track Length was ";
displayTime(averageLengthOfTracks);
system("PAUSE");
return 0;
}
void displayTime(int input)
{
int mins, secs;
mins = input / 60;
secs = input % 60;
cout << mins << " : " << setfill('0') << setw(2) << mins << endl;
}
我有什么东西可以在这里找到,或者有些简单的东西我只是忽略了吗?
答案 0 :(得分:0)
这是一个简单的拼写错误。您正在计算分钟和秒,然后仅输出mins : mins
。
将displayTime()
功能的最后一行更改为:
cout << mins << " : " << setfill('0') << setw(2) << secs << endl;
我应该提一下,我通过查看你的输出找到了这个。看到你打印出的所有数字都是&#34; x:x&#34;让我怀疑有些东西被意外复制了两次。看看你的displayTime函数向我展示了这个问题。正如@NathanOliver所说,调试器在尝试自己解决这个问题时可以是一个非常有用的工具。