Read in an array of integers from the command line, one integer per line. When t
ID: 3643487 • Letter: R
Question
Read in an array of integers from the command line, one integer per line. When the user enters a negative number, throw that number away, and top reading. The user must enter atleast 10 numbers. Try the oracle to see what happens if s/he does not. Now print out how many numbers were entered, and then all the entries, on one line with spaces in between each number. Finally, print out the biggest, the second biggest, and the third biggest numbers.Enter next number, negative number to stop > 50
Enter next number, negative number to stop > 56
Enter next number, negative number to stop > 33
Enter next number, negative number to stop > 23
Enter next number, negative number to stop > 80
Enter next number, negative number to stop > 91
Enter next number, negative number to stop > 95
Enter next number, negative number to stop > 78
Enter next number, negative number to stop > 34
Enter next number, negative number to stop > 77
Enter next number, negative number to stop > 66
Enter next number, negative number to stop > 55
Enter next number, negative number to stop > 22
Enter next number, negative number to stop > -1
You entered 13 numbers
The numbers are 50 56 33 23 80 91 95 78 34 77 66 55 22
Top: 95, Second: 91, Third: 80
Explanation / Answer
#include #include typedef struct{ int m_data; struct node* m_next; } node; int main(){ const int TOP_NUMBER = 3; int input = 0; int count = 0; int top[TOP_NUMBER] = {0,0,0} // top 3 node* head; while(input>=0){ printf("Enter next number, negative number to stop > "); scanf("%d", &input); if(input>=0){ node* newNode = (node*) malloc(sizeof(node)); newNode->m_data = input; newNode->m_next = 0; if(0==head){ // head is null head = newNode; } else{ tail->m_next = newNode; } tail = newNode; int i=TOP_NUMBER-1; if(input > top[i]){ top[i] = input; } for(i=0; i top[j]){ int temp = top[i]; top[i] = top[j]; top[j] = temp; } } } // absolutely horrible sorting algorithm O(n^2) // but whatever, it'll work for for our case // hopefully our N doesn't grow that large count++; } } printf("You entered %d numbers ", count); printf("The numbers are"); node* n = 0; for(n=head; n!=0; n=n->m_next){ printf(" %d", n->m_data); } printf(" "); printf("Top: %d, Second: %d, Third: %d ", top[0], top[1], top[2]); return 0; }
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.