In: Computer Science
Requirements: Code in C++. With given information, write the solution to this problem so that it is understandable to someone with basic knowledge of C++ (ex: only keep basic libraries, keep coding shortcuts to a minimum). Also leave comments in the code (plz), the logic behind solving this problem if possible, and explanation of what the keys to solving this problem is and how to run test cases to ensure correctness of code.
Problem:
For this problem you will compute various running sums of values for positive integers.
Input
The first line of input contains a single integer P, (1 <=P <=10000), which is the number of data sets that follow. Each data set should be processed identically and independently. Each data set consists of a single line of input. It contains the data set number, K, followed by an integer N, (1 <= N <= 10000).
Output
For each data set there is one line of output. The single output line consists of the data set number, K, followed by a single space followed by three space separated integers S1, S2 and S3 such that: S1 = The sum of the first N positive integers. S2 = The sum of the first N odd integers. S3 = The sum of the first N even integers.
Sample Input
3
1 1
2 10
3 1001
Sample Output
1 1 1 2
2 55 100 110
3 501501 1002001 1003002
A Solution that needs to be rewritten so it can be understood more easily
/* * Sum Kind Of Problem * Compute running sums of odds, evens and all integers * Does it 2 ways... using formulas and loops. * Define EASY_WAY for formulas * Define HARD_WAY for loops * Define both of them to show both results */ #include <stdio.h> #include <stdlib.h> #define EASY_WAY #undef LONG_WAY int main() { int n, i, v, k; #ifdef LONG_WAY int oddsum, evensum, sum, j; #endif scanf("%d", &n); for(i = 1; i <= n; i++){ scanf("%d %d", &(k), &(v)); #ifdef EASY_WAY printf("%d %d %d %d\n", i, v*(v+1)/2, v*v, v*(v+1)); #endif #ifdef LONG_WAY oddsum = evensum = sum = 0; for(j = 1; j <= v; j++){ evensum += j*2; oddsum += j*2 - 1; sum += j; } printf("%d %d %d %d\n", i, sum, oddsum, evensum); #endif } return(0); }
//IF YOU ARE HAPPY WITH THE ANSWER KINDLY LEAVE A LIKE, ELSE COMMENT TO CLEAR DOUBTS
CODE:
#include <iostream>
#include <stdlib.h>
using namespace std;
#define EASY_WAY
#define LONG_WAY
int main()
{
int n, i, v; //n is used for number of datasets, i for loops, v for
assigning data value
int oddsum, evensum, sum, j; //oddsum stores the odd_sum, evensum
stores the even_sum, sum for total sum
//j for loops
cin>>n; //entering the number of datasets
int array[n][2]; //creating a 2D array to store the dataset
for(i = 0; i < n; i++) //loop to get the input
cin>>array[i][0]>>array[i][1];
#ifdef EASY_WAY //EASY WAY DEFINED
cout<<"\n\nSHOWING EASY_WAY ->";
for(i = 0; i< n; i++){ //loop to get the values from array of
datasets
v = array[i][1];//assigning array[i][1] to v so that it is easy to
use the value
cout<<"\n"<<i+1<<"\t"<<v*(v+1)/2<<"\t"<<
v*v<<"\t"<< v*(v+1); //used functions
}
#endif
#ifdef LONG_WAY //LONG WAY DEFINED
cout<<"\n\nSHOWING LONG_WAY ->";
for(i = 0; i < n; i++){ //loop to get the values from array of
datasets
oddsum = evensum = sum = 0; //initializing all values to 0 for
calculating
v = array[i][1]; //assigning array[i][1] to v so that it is easy to
use the value
for(j = 1; j <= v; j++){ //second loop to calculate the
sum
evensum += j*2;
oddsum += j*2 - 1;
sum += j;
}
cout<<"\n"<<i+1<<"\t"<<sum<<"\t"<<oddsum<<"\t"<<evensum;
}
#endif
return(0);
}
CODE PREVIEW: