Danial Khan - 1 year ago 91

C++ Question

Consider the final score of a football match is m-n where m and n are non-negative integers.

Write a c++ program to read m and n from keyboard and list all possible combinations to get the score m-n.

Example outputs:

`input m : 1`

input n : 0

Possible combinations:

0-0, 1-0

input m : 4

input n : 0

Possible combinations:

0-0, 1-0, 2-0, 3-0, 4-0

input m : 1

input n : 1

Possible combinations:

0-0, 1-0, 1-1

0-0, 0-1, 1-1

input m : 2

input n : 1

Possible combinations:

0-0, 1-0, 2-0, 2-1

0-0, 1-0, 1-1, 2-1

0-0, 0-1, 1-1, 2-1

input m : 2

input n : 2

Possible combinations:

0-0, 1-0, 1-1, 2-1, 2-2

0-0, 1-0, 1-1, 1-2, 2-2

0-0, 1-0, 2-0, 2-1, 2-2

0-0, 0-1, 1-1, 1-2, 2-2

0-0, 0-1, 1-1, 2-1, 2-2

0-0, 0-1, 0-2, 1-2, 2-2

this is the code that i have tried when user enters m=2 and n=1 this code prints only two combinations like

`0-0, 1-0, 2-0, 2-1`

0-0, 0-1, 1-1, 2-1

{

int m, n;

cout<<"Enter the finals scores of both teams";

cout<<"\nenter the score for team m :";

cin>>m;

cout<<"Enter the score for team n :";

cin>>n;

if (m < 0 && n < 0){

cout<<"score can't be negative";

cout<<"\nenter the score for team m :";

cin>>m;

cout<<"Enter the score for team n :";

cin>>n;

}

else{

int k=0;

if (n==0){

for (int j = 0; j <= m; j++){

for (k; k <= n; k+=1){

cout<<j<<"-"<<k<<",\t";

}

k--;

}

}

else if(m==1 && n==1){

int i=0;

int k=0;

for (int j = 0; j <= m; j++){

for (k; k <= n; k+=1){

cout<<j<<"-"<<k<<",\t";

}

k--;

}

cout<<endl<<endl;

for (int j = 0; j <= n; j++){

for (i; i <= m; i+=1){

cout<<i<<"-"<<j<<",\t";

}

i--;

}

}

else {

int i=0;

int k=0;

for (int j = 0; j <= m; j++){

for (k; k <= n; k+=1){

cout<<j<<"-"<<k<<",\t";

}

k--;

}

cout<<endl<<endl;

for (int j = 0; j <= n; j++){

for (i; i <= m; i++){

cout<<i<<"-"<<j<<",\t";

}

i--;

}

}

}

}

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

Simple answer to use recursion, If you don't know recursion read that first

```
void print_goals(int m,int n,int i,int j,string s)
{
if(i == m && j == n)
{
cout<<s+char(48+i)+'-'+char(48+j)<<endl;
return;
}
if(i<=m)
print_goals(m,n,i+1,j,s+char(48+i)+'-'+char(48+j)+',');
if(j<=n)
print_goals(m,n,i,j+1,s+char(48+i)+'-'+char(48+j)+',');
}
```

call it as `print_goals(5,2,0,0,"");`

where m=5 and n=2

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**