189k views
1 vote
C++ PLEASE HELP... I ALREADY HAVE CODE WRITTEN BUT IM NOT GETTING THE CORRECT OUPUT!!!

Write code to read a list of song durations and song names from input. For each line of input, set the duration and name of newSong. Then add newSong to playlist. Input first receives a song duration, then the name of that song (which you can assume is only one word long). Input example: 424 Time

383 Money

-1

"The issue is I keep getting two spaces after '_' instead of just one."


HINTS:

"songDuration is assigned with the first song's duration before the while loop. The while loop checks if songDuration is greater than or equal to zero. If so, the while loop is entered.


The following operations are repeated in the while loop:

songName is assigned with the song's name.

Then, newSong.SetDurationAndName() sets newSong's duration and name data members.

push_back() appends newSong to playlist.

songDuration is assigned with the next song's duration.


The while loop continues to add songs to playlist until songDuration is assigned with a value less than zero."


#include

#include

#include

using namespace std;


class Song {

public:

void SetDurationAndName(int songDuration, string songName) {

duration = songDuration;

name = songName;

}

void PrintSong() const {

cout << duration << " - " << name << endl;

}

int GetDuration() const { return duration; }

string GetName() const { return name; }


private:

int duration;

string name;

};


int main() {

vector playlist;

Song newSong;

int songDuration;

string songName;

unsigned int i;


cin >> songDuration;

while (songDuration >= 0) {

//code goes here

getline(cin, songName);

newSong.SetDurationAndName(songDuration, songName);

playlist.push_back(newSong);

//code ends

cin >> songDuration;

}


for (i = 0; i < playlist.size(); ++i) {

newSong = playlist.at(i);

newSong.PrintSong();

}


return 0;

}


MY OUTPUT:

163 - Breathe

413 - Time

383 - Money

123 - Eclipse

OUTPUT:

163 - Breathe

413 - Time

383 - Money

123 - Eclipse



PLEASE HELP- thank you

1 Answer

4 votes

By writing the getter() and setter() methods without using them, you extend the runtime of the program. Also, the -Wunused-variable marker is automatically used by your compiler. I edited your code for you, there is no problem.

#include <bits/stdc++.h>

typedef std::string s;

class Song {

public:

s n;

int d;

//Constructor

Song(int d, s n) {

this->d = d;

this->n = n;

}

void print() const{

std::cout << d << " - " << n << std::endl;

}

};

int main(int argc, char* argv[]) {

std::vector<Song> playlist;

s name;

int duration;

while(true) {

std::cin>>duration;

if(duration<0) break;

else {

std::cin>>name;

Song newSong(duration,name);

playlist.push_back(newSong);

}

}

for(int i=0;i<playlist.size();i++) {

Song p = playlist.at(i);

p.print();

}

return 0;

}

C++ PLEASE HELP... I ALREADY HAVE CODE WRITTEN BUT IM NOT GETTING THE CORRECT OUPUT-example-1
User Do Good
by
4.9k points