Motivate: 10 scores. 10 int variables score1, score2,...score10 ???
cin >> score1; cin >> score2; ...Find largest score, or sort them, or sum them ... Infeasible to make such code. So,
Array: one name, many elements/components each of same type, easily accessed with numeric index.
int score[10]; //declare an array of 10 ints
Access an element: Name of array, integer value index in brackets:
score[2] = 29; if (score[9] > score[8])... cin >> score[i]; cout << score[0];Programmer's responsibility to ensure that index is within bounds (size of the array): major source of errors in programs.
score[i] = x; // i better be between 0 and 9, else bad thing happens: //crash or garbage introduced into memoryElement can be any type: (but all elements of an array can only be same type)
float gpa[100]; //array of 100 floats char code[10], name[20]; //aka C stringsAlso,
Examples:
// read scores, sum them sum = 0; //loop over elements of array for (i=0; i<10; i++) { //process elts, index from 0 to end in for loop cin >> score[i]; //input to Ith element sum += score[i]; //add it to sum } cout << "Sum is " << sum; // find largest score. search for max value in array. int largest=0; // assumuption that scores are positive for (i=0; i<10; i++) if (score[i] > largest) //if this one larger than largest so far largest = score[i]; //make it largest so far cout << "Largest score is " << largest; //How to finc minimum value? // find largest score, alternate version int largest=score[0]; //first is largest so far (only one so far) for (i=1; i<10; i++) //start with second (index 1) if (score[i] > largest) largest = score[i]; cout << "Largest score is " << largest; // change a value of an element cout << "Change which element: "; cin >> index; if (index>=0 && index<10) { cout << "Current value: " << score[index] << endl; cout << "Change to what: " ; cin >> score[index]; } else cout << "Invalid index"; // each score's percentage of total float percent[10]; //array of 10 floats for (i=0; i<10; i++) percent[i] = score[i] / float(sum); //count number of positive values, number of negative values. //You try it now. // squares and square roots of first 50 numbers float sqrs[50], sqrts[50]; for (i=0; i<50; i++) { sqrs[i] = (i+1) * (i+1); // 1*1, 2*2, 3*3, 4*4 ... sqrts[i] = sqrt(i+1); } // search for particular score value int found=-1; //no such index cout << "Search for what: "; cin >> val; for (i=0; i<10; i++) if (score[i] == val) found = i; //found it at this index if (found != -1) cout << "Found at index: " << found; else cout << "Not found in array"; //Will continue to search to end of array even if finds it early. // search, alternate version found = false; // "not yet found" i = 0; while (i<10 && !found) //within bounds and not yet found if (score[i] == val) found = true; //true Found it else i++; //next element index if (found) cout << "Found at index: " << i; else cout << "Not found in array"; // count #times each uppercase letter in input // 26 separate variables: acount,bcount...zcount? UGH! int letter[26]; //26 counters for (i=0; i<26; i++) //initialize each counter element to 0 letter[i] = 0; do { cin >> c; if (isupper(c)) //c is ABC...Z letter[c-'A']++; //A-A=0, B-A=1, C-A=2,...Z-A=25 //index of element that is count for that letter } while (c != '$'); //assume $ marks end of input // average #times each uppercase letter int sum=0; for (i=0; i<26; i++) sum += letter[i]; cout << "Average is " << float(sum) / 26;
const int max_scores=100; int scores[max_scores]; int num_scores; cout << "How many scores: "; cin >> num_scores; // num_scores is the logical/virtual //size of the array now if (num_scores > max_scores) cout << "Sorry, too many!"; else { //will use first num_scores number of elements, //from 0 thru num_scores-1 cout << "Enter the scores: "; for (i=0; i<num_scores; i++) cin >> scores[i]; } // largest score largest = 0; for (i=0; i<num_scores; i++) if (scores[i] > largest) largest = scores[i]; const int max_grades=100; char grades[max_grades]; cout << "Enter number of grades: "; cin >> num_grades; if (num_grades > max_grades) cout << "ERROR Maximum of " << max_grades; else { cout << "Enter the grades: "; for (i=0; i<num_grades; i++) cin >> grades[i]; } // count number of each grade ABCDF and other int grade_count[6]={0}; //initialize all to 0 // (only value that all can be init to) for (i=0; i<num_grades; i++) switch (grades[i]) // a char case 'a': case 'A': grade_count[0]++; break; case 'b': case 'B': grade_count[1]++; break; case 'c': case 'C': grade_count[2]++; break; case 'd': case 'D': grade_count[3]++; break; case 'f': case 'F': grade_count[4]++; break; default: grade_count[5]++; } cout << " A B C D F other" << endl; cout << setw(4) << grade_count[0] << setw(4) << grade_count[1] << setw(4) << grade_count[2] << setw(4) << grade_count[3] << setw(4) << grade_count[4] << setw(4) << grade_count[5] << endl;
Program to do several things with an array array.cpp
Program to compute the standard deviation stddev.cpp
Program to compute the prime factorization of a number primefac.cpp
Next (array arguments)