Ich erstelle gerade ein Programm, das die Eingabe von 12 Songs auf einem Album als zwei Sätze eingegebener Nummern als Minuten und Sekunden aufnehmen soll, speichert sie in geeigneten Arrays für beide und gibt dann die Länge des Albums zurück. die durchschnittliche Songlänge, der kürzeste Song und der längste Song. So ziemlich all mein aktueller Code läuft gut, aber ich habe einige ernsthafte Schwierigkeiten mit meinen Zahlen, die korrekt sind. Immer, wenn ich formatiere, um nur ein paar Sekunden, und zurück zu Minuten und Sekunden, während sie formatiert, um ein Semikolon und eine 0 vor einer einstelligen Sekunde zu haben, scheinen sie zu ändern. Bitte beachten Sie das beigefügte Bild für weitere Erläuterungen. HierZahlen, die Werte verlieren/ändern
ist der Code:
#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;
}
Gibt es etwas, das ich hier fehlt oder einige einfach, dass ich einfach übersehen?
Willkommen bei Stack Overflow! Es klingt, als müssten Sie lernen, wie Sie einen Debugger verwenden, um durch Ihren Code zu gehen. Mit einem guten Debugger können Sie Ihr Programm Zeile für Zeile ausführen und sehen, wo es von dem, was Sie erwarten, abweicht. Dies ist ein essentielles Werkzeug, wenn Sie programmieren wollen. Weiterführende Literatur: ** [Wie kleine Programme zu debuggen] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver
Make "SIZE" gleich 1 oder 2 und debugge dein Programm. Sie benötigen keine 12 Artikel, um den Fehler zu sehen. Außerdem ist [diese minimierte Version Ihres Programms] (http://ideone.com/lzevHj) ein Beispiel für eine [mcve], die Sie hier getestet und gepostet haben könnten. – PaulMcKenzie