C++中的数组存在问题
Having Problems with Arrays in C++
我在编码这件事时遇到了麻烦,但我想我已经掌握了大部分。我就是记不清时间。有人能帮忙吗。
编写执行以下操作的C++代码:
•显示一条包含您姓名的欢迎信息。
•提示并读取专辑中12首曲目的长度(以分和秒为单位(。
•将每条轨道的长度以秒为单位存储在阵列中。(注意:总秒数可以通过将分钟乘以60并将秒数相加来计算。(
•计算并显示以下内容:
–专辑中最短的曲目及其长度。–专辑中最长的曲目及其长度。
–整个相册的总运行时间。
–专辑中曲目的平均长度。
•在输出中,所有时间都应采用标准的分秒格式,中间有一个冒号。这应该通过以下原型的void函数来完成:
void displayTime(int totalSeconds(;
可以使用/和%运算符计算分钟数。请注意,如果秒数小于10,则此函数必须在冒号后显示一个额外的零。例如,总长度为185秒的曲目的长度应显示为3:05。
它应该是这样的。
轨道1:3 25
轨道2:456
一直到12岁。
这就是我到目前为止所拥有的。
#include <iostream>
#include <iomanip>
using namespace std;
void displayTime(int totalSeconds);
int main()
{
const int SIZE = 12;
float Tracks[SIZE];
int cnt = 0;
int TrackHigh;
int TrackLow;
int totalSeconds;
cout << "Welcome to Jalen Keller's Album Length Calculator." << endl;
cout << "Please enter all track lengths in minutes and seconds separated by a space." << endl;
while (Tracks[cnt] != -1 && cnt < SIZE)
{
cout << "Track " << cnt + 1 << ": ";
cin >> Tracks[cnt];
cnt++;
}
TrackHigh = Tracks[0];
for (cnt = 0; cnt < SIZE; cnt++) {
if (Tracks[cnt] > TrackHigh)
{
TrackHigh = Tracks[cnt];
}
}
TrackLow = Tracks[0];
for (cnt = 0; cnt < SIZE; cnt++)
if (Tracks[cnt] < TrackHigh)
{
TrackHigh = Tracks[cnt];
}
double total = 0;
double average;
for (int cnt = 0; cnt < SIZE; cnt++)
{
total += Tracks[cnt];
average = (total / SIZE);
}
cout << "The shortest track is: " << TrackHigh << endl;
cout << "The longest track is: " << TrackLow << endl;
cout << "The average length of a track is: " << average << endl;
system("pause");
return 0;
}
您的任务描述实际上告诉了您应该如何做
分钟和秒格式,中间有冒号。
可以使用/和%运算符计算分钟数。
请注意,如果秒数小于10,则此函数必须在冒号后显示一个额外的零。
void displayTime(int totalSeconds)
{
int minutes = totalSeconds / 60;
int seconds = totalSeconds % 60;
std::cout << minutes << ':';
if (seconds < 10) {
std::cout << '0';
}
std::cout << seconds;
}
顺便说一句,using namespace std
通常被认为是一种不好的做法。为什么";使用命名空间std"被认为是不好的做法?
编辑:啊和这个:
while (Tracks[cnt] != -1 && cnt < SIZE)
我不太清楚为什么Tracks[cnt]
应该不同于-1,因为它当时还没有初始化。我认为cnt<尺码是你所需要的。顺便说一句,把它写成for(cnt=0;cnt<SIZE;++cnt)
可能会更好。而且我认为你不必做4个for,你可以做第一个for的所有工作。并从for中导出average
,因为只有当您的total
是最终的(一旦for结束(,它才有意义。
这是典型的复制粘贴错误
if (Tracks[cnt] < TrackHigh)
{
TrackHigh = Tracks[cnt];
}
必须是TrackLow
而不是TrackHigh
。
if (Tracks[cnt] < TrackHigh)
{
TrackLow = Tracks[cnt];
}
数组在声明中未初始化,因此第一个循环中的条件Tracks[cnt] != -1
是未定义的行为。如果-1
是停止填充相册的用户信号,则循环必须是
for (cnt = 0; cnt < SIZE; ++cnt)
{
cout << "Track " << cnt + 1 << ": ";
cin >> Tracks[cnt];
if (Tracks[cnt] == -1)
{
AlbumSize = cnt + 1;
break;
}
}
AlbumSize
必须在第一个循环之上声明,并在其他循环中使用,而不是SIZE
。
- C++Builder中的OnClick事件签名存在问题
- 在 C++ 中使用逗号的 echo 命令中存在问题
- Malloc 在使用线程并行化 SSH 调用时存在问题
- 构造函数 (C++) 中的 char 指针参数存在问题
- 在 boost::variant 中类 holden 的复制构造函数存在问题
- 用户定义的文本运算符(在原始模式下)存在问题
- C++中的数组存在问题
- C++中的正则表达式存在问题
- 英特尔 DAAL 头文件可能存在问题
- 错误:"参数"没有命名类型,.cpp和 .h 文件可能存在问题
- 我的 IF 语句中存在问题,否则无法正常工作
- 在 c++ 中具有多个参数构造函数的模板类存在问题
- template_back和move赋值构造函数存在问题
- CMake 3.13.2 似乎在 G++ 8.2.0 中存在问题
- 使用Boost的班级名称冲突是否存在问题
- CMAKE:目标依赖项存在问题(add_dependency不起作用?
- C SQLITE3代码似乎在准备声明方面存在问题
- 此UUID生成代码是否存在问题
- 派生类中的模板存在问题
- 从多线程.net应用程序调用的本机dll中的tbb存在问题