C++ Program - Arrays- Include the following header files in your program: string
ID: 3852066 • Letter: C
Question
C++ Program - Arrays-
Include the following header files in your program: string, iomanip, iostream
Suggestion: code steps 1 thru 4 then test then add requirement 5, then test, then add 6, then test etc. Add comments to display assignment //step 1., //step 2. etc. This program is to have no programer created functions. Just do everything in main and make sure you comment each step.
Create a program which has:
1. The following arrays created:
a. an array of double with 5 elements, dArr
b. an array of long, lArr, with 7 elements and initialized at the time of creation with the values
100000, 134567, 123456, 9, -234567, -1, 123489
c. a 2 dimensional array of integer, with 3 rows and 5 columns, iArr.
d. an array of char with your name initialized in it. Big enough for 30 typable characters, sName.
2. define 3 variables, , cnt1 and cnt2 (short data types) as general purpose counters and a long double total
3. define 1 long variable called highest
4. a for loop to put a random number into each of the elements of the array of double, dArr. Use rand() and seed a random starting point with srand(). Use a for loop to display all of the values in dArr.
5. another for loop to add up the array of double, dArr, into the variable total
6. one cout to print the total and another cout to print the average of the double array, dArr.
7. a for loop similar to the following for the long array, lArr:
for ( cnt1 = 1, highest = lArr[0] ; cnt1 < 7 ; cnt1++ )
{
//logic to compare each array element, starting with lArr[1], with highest
//replace highest if the value in lArr[cnt] is higher than the value in variable highest
}
8. a cout to print highest as derived in the above code
9. a for loop to put a random number, each with a value no lower than 1 and no higher than 53, into each element of iArr, the array of integer, seed the random generator with srand( (unsigned) time(NULL)). Only have to run srand once…. Use the modulo operator similar to the way you did with dice rolls in Project 2.
10. a separate loop to print iArr with 3 rows on your screen. Each row has 5 numbers. Use setw to control the width of each column. See Chapter 3 for an example of a program using setw. Print row by row.
11. a loop to print the 2 dimensional array, iArr, so that all 3 numbers in column 0 are printed and then on the next line all 3 numbers in column 1, etc. thru column 4. Print column by column.
12. Use cin.getline( ...... ) to type another name into the variable sName.
13. Print the ascii value of each character in the char array, 1 per line. Use a while loop and look for the '' as a signal to end.
14. make the array of char, sName, have the name "Albert Einstein" in it. You must use strcpy_s function.
15. print the ascii value of the 12th character of the string sName
Extend the Array project to include:
16. Define a pointer to a double, pdArray.
17. Assign the pointer, pdArray, to contain the address of the double array, dArr:
18. Use the array name, dArr, to print out the array elements with subscript notation, [ ]. All on 1 line a space between each.
19. Use the pointer to print out the array elements with pointer notation while not changing the pointer itself. Use a for loop. *( pdArray + Cnt1) would be an example. All on 1 line a space between each.
20. Use the pointer to print out the array elements with pointer notation but change the pointer to point to the actual array element rather than the method in 18. All on 1 line.
*pdArray would do this if the loop has the following post loop operation: pdArray++
21. Use the array name for the double array and pointer notation to print the entire array, all on one line.
22. Using a different pointer, piArray, allocate enough memory for 100 int's and assign the address to the pointer.
23. In a for loop assign every item in the array to be a random number from 1 to 49 ( hint: rand() % 6 + 1 gives random numbers from 1 to 6 )
24. Using cout print the first 10 items in the array, all on 1 line.
Explanation / Answer
Here is the code with output for the question. Please post a comment in case of any doubts, I shall respond. Also if the answer helped, request you to rate it . Thank you very much.
Note:
1. In step 1, please put in your name for sName
2. I have used cout << fixed << setprecision(2) for formatting purposes. These need iomanip which is already included. In case you don't need them , you can remove that line on line 31. You can check the difference in output by commenting out that line.
3. In step 14, I have used strcpy() since my system does not have the library function strcpy_s(). You can change it to strcpy_s(sName, sizeof(sName), "Albert Einstein"); and check if that works for you on your system.
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <cstring>
using namespace std;
int main()
{
//step1
double dArr[5];
long lArr[7] = {100000, 134567, 123456, 9, -234567, -1, 123489};
int iArr[3][5];
char sName[31] = "myname"; //30 typable characters + 1 for
//step2
int cnt1, cnt2;
long double total = 0;
//step3
long highest;
//step4 : put random variables in dArr using rand()
srand(10);
for(cnt1 = 0; cnt1 < 5; cnt1++)
dArr[cnt1] = rand();
//print the contents of dArr
cout << fixed << setprecision(2); //used to display in non-scientific format and with 2 decimal places
cout << "dArr: " ;
for(cnt1 = 0; cnt1 < 5; cnt1++)
cout << " " << dArr[cnt1];
cout << endl;
//step5: loop to add to total
for(cnt1 = 0; cnt1 < 5; cnt1++)
total += dArr[cnt1];
//step 6:
cout << " total = " << total << endl;
cout << "average = " << total / 5 << endl;
//step 7:
for ( cnt1 = 1, highest = lArr[0] ; cnt1 < 7 ; cnt1++ )
{
//logic to compare each array element, starting with lArr[1], with highest
//replace highest if the value in lArr[cnt] is higher than the value in variable highest
if( lArr[cnt1] > highest)
highest = lArr[cnt1];
}
//step 8
cout << "highest = " << highest << endl;
//step 9 initialize 3x5 array
srand(time(NULL));
for ( cnt1 = 0 ; cnt1 < 3 ; cnt1++ ) //for each row
{
for(cnt2 = 0; cnt2 < 5; cnt2++ ) //for each col
{
iArr[cnt1][cnt2] = rand() % 53 + 1; //generate a random number from 1- 53
}
}
//step10 display the 2D array
cout << "row wise 2D array" << endl;
for ( cnt1 = 0 ; cnt1 < 3 ; cnt1++ ) //for each row
{
cout << endl;
for(cnt2 = 0; cnt2 < 5; cnt2++ ) //for each col
{
cout << setw(4) << iArr[cnt1][cnt2] ;
}
}
cout << endl;
//step11 display the 2D array columnwise
cout << "col wise 2D array" << endl;
for ( cnt1 = 0 ; cnt1 < 5 ; cnt1++ ) //for each col
{
cout << endl;
for(cnt2 = 0; cnt2 < 3; cnt2++ ) //for each row
{
cout << setw(4) << iArr[cnt2][cnt1] ;
}
}
cout << endl;
//step 12 get another name
cout << "Enter a name: ";
cin.getline(sName, 30);
//step 13 print ascii value one per line
cout << "ascii values of " << sName << endl;
cnt1 = 0;
while(sName[cnt1] != '')
{
cout << (int)sName[cnt1] << endl; //cast to int since we want ascii value of the character
cnt1++;
}
//step 14 copy Albert Einstein to sName
strcpy(sName,"Albert Einstein");
//step 15 print 12th char's ascii value
cout << "12th char's ascii in Albert Einstein is " << (int) sName[11] << endl; //12 char is at index 11
//step 16 define pdArray
double *pdArray;
//step 17 assign address of dArr to pdArray
pdArray = dArr;
//step 18 print the contents of dArr
cout << "dArr: " ;
for(cnt1 = 0; cnt1 < 5; cnt1++)
cout << " " << dArr[cnt1];
cout << endl;
//step 19 print using pdArray without moving pointer
cout << "using pointer notation *(pdArray + cnt1): " ;
for(cnt1 = 0; cnt1 < 5; cnt1++)
cout << " " << *(pdArray + cnt1);
cout << endl;
//step 20 print using pdArray, moving pointer
cout << "using pdArray++ : " ;
for(cnt1 = 0; cnt1 < 5; cnt1++, pdArray++) //move the pointer, cnt1 is used to track how many times to move the pointer
cout << " " << *pdArray;
cout << endl;
//step 21 print using array name and pointer notation
cout << "using *(dArr + cnt1): " ;
for(cnt1 = 0; cnt1 < 5; cnt1++ )
cout << " " << *(dArr + cnt1);
cout << endl;
//step 22 allocate 100 ints and assign to pointer
int *piArray = new int[100];
//step23 assign random number to elements , range is 1-49
for(cnt1 = 0; cnt1 < 100; cnt1++)
*(piArray + cnt1) = rand() % 49 + 1; // it can also written as piArray[cnt1] = rand() % 49 + 1;
//step 24 print out the first 10 elements in a line
cout << "display the first 10 ints : " ;
for(cnt1 = 0; cnt1 < 10 ; cnt1++)
cout << " " << piArray[cnt1];
cout << endl;
return 0;
}
output
dArr: 168070.00 677268843.00 1194115201.00 1259501992.00 703671065.00
total = 3834725171.00
average = 766945034.20
highest = 134567
row wise 2D array
45 7 21 37 49
16 23 45 46 42
13 18 15 1 46
col wise 2D array
45 16 13
7 23 18
21 45 15
37 46 1
49 42 46
Enter a name: john
ascii values of john
106
111
104
110
12th char's ascii in Albert Einstein is 116
dArr: 168070.00 677268843.00 1194115201.00 1259501992.00 703671065.00
using pointer notation *(pdArray + cnt1): 168070.00 677268843.00 1194115201.00 1259501992.00 703671065.00
using pdArray++ : 168070.00 677268843.00 1194115201.00 1259501992.00 703671065.00
using *(dArr + cnt1): 168070.00 677268843.00 1194115201.00 1259501992.00 703671065.00
display the first 10 ints : 20 33 49 12 37 36 24 35 19 6
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.