468,268 Members | 1,730 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,268 developers. It's quick & easy.

c++ script help

Expand|Select|Wrap|Line Numbers
  1. #include <algorithm>
  2. #include <iomanip>
  3. #include <ios>
  4. #include <iostream>
  5. #include <string>
  6. #include <vector>
  7. using namespace std;
  8. int main ()
  9. {
  10. cout <<" plz enter your first name: ";
  11. string name;
  12. cin>>name;
  13. cout<<"Hello, "<<name<<"!"<<endl;
  14. cout<<plz enter ur midterm and final exam grades: ";
  15. double midterm, final;
  16. cin>>midterm>>final;
  17. cout<<"enter all ur homeworks grades, :
  18. "followed by end-of-file: ";
  19. vector<double> homework;
  20. double x;
  21. while (cin>>x)
  22. homework.push_back(x);
  23. typedef vector<double>::size_type vec_sz;
  24. vec_sz size= homework.size();
  25. if(size==0) {
  26. cout<<endl<<"u must enter ur grades. "
  27. "plz try again."<<endl;
  28. return1; // does that mean if this statement fail it restart the if statement or the whole app
  29. sort(homework.begin(), homework.end() );
  30. vec_sz mid=size/2
  31. double median;
  32. median=size %2 ==0 ? (homework[mid]+homework[mid-1] /2
  33. :homework[mid];
  34. //isn't homework[mid]= to homework homework[size/2] which is how many numbers are contain in homework
  35. //just how does it works don't very get it
  36. streamsize prec=cout.precison(3)
  37. <<0.2+midterm+0.4 *final+0.4*median//isn't median =size%2
  38. <<setprecison(prec)< <end;
  39. return0;
  40. }
  41.  
I have read the book seven times, but still don't get it.
I know it sounds fishy, but I very need ur help.
Ur voice are super important to me.
Plz lend me a hand
Sep 2 '07 #1
20 1641
Studlyami
464 Expert 256MB
What problems are you having? are you getting an error message.? A little more information please.
Sep 2 '07 #2
no i just don't understand the script. Plz help
#
return1; // does that mean if this statement fail it restart the if statement
line 28
line 32-34
#
median=size %2 ==0 ? (homework[mid]+homework[mid-1] /2
#
:homework[mid];
#
//isn't homework[mid]= to homework homework[size/2] which is how many numbers
and line 37
<<0.2+midterm+0.4 *final+0.4*median//isn't median =size%2
Sep 2 '07 #3
kreagan
153 100+
no i just don't understand the script. Plz help
return1; // does that mean if this statement fail it restart the if statement
no no. I means that if no homeworks were inputed, stop the program. The return will break out of main. Basically shutting down your program.

median=size %2 ==0 ? (homework[mid]+homework[mid-1] /2
:homework[mid];
To take the median, you need to find the middle test. However, if there is an even number of tests, which one is the middle. Here's a visual example:

1 2 3 4 5 < the median is 3
1 2 3 4 < the median is (2 + 3)/2

This checks the size, if the size is even, do first command (between question mark and colon), if not, do what is after the colon. Basically it is a boolean if statement.

Hope that helped.
Sep 2 '07 #4
median=size %2 ==0 ? (homework[mid]+homework[mid-1] /2
:homework[mid];
sorry i still don't get it.
I get the non-pc version how to compute median.
Like if it is even divide the size /2
for example
10/2
the median will be 5 number +6 number /2
And the odd number is size/2
then the number to that is the median.
But the problem is isn't
median=size %2 ==0 ? (homework[mid]+homework[mid-1] /2
:homework[mid];
only calculate where is the median located ,but not the median itself???????
Sep 2 '07 #5
Studlyami
464 Expert 256MB
wow i must be slow 2 replies before i finished.

median will equal the value located in the homework vector
or it will equal the average of the two middle values in the homework vector.
Sep 2 '07 #6
Err don't quite get what do u mean by that.
Sorry about that.
Sep 2 '07 #7
Studlyami
464 Expert 256MB
okay

homework is a vector that contains doubles
if (size % 2 == 0) //there are an even number of grades
median = (homework[mid] + homework[mid-1] / 2) // (double + double) / 2
else // there are an odd number of grades
median = homework[mid] //equals the double value located in the middle of the vector
Sep 2 '07 #8
JosAH
11,448 Expert 8TB
Maybe it's because it's Sunday overhere but I find this thread very chaotic.
Suppose the homework[] array is sorted in ascendng or descending order. Let the
number of elements in that homework[] array be 'n'.

There are just two cases:

1) n is odd; the median is homework[n/2];
2) n is even; the median is (homework[n/2]+homework[n/2+1])/2;

if n&1 == 1 then n is an odd number; there's not much more to it.

kind regards,

Jos
Sep 2 '07 #9
o so because size is vector double
Which means it actually contain the number itself and not how many numbers there is right???
It is Sunday, I know I am sorry for bugging u in Sunday.
Sep 2 '07 #10
any answer. Plz i need ur hand.
Sep 2 '07 #11
JosAH
11,448 Expert 8TB
o so because size is vector double
Which means it actually contain the number itself and not how many numbers there is right???
It is Sunday, I know I am sorry for bugging u in Sunday.
You're not 'bugging' me; I'm just being lazy but you are over complicating matters.
What does 'actually contains the number itself' mean? Here's an example:

12, 14, 20, 100, 1000

There are five numbers, so n == 5 and n/2 == 2 (integer division which means
skip the remainder). C and C++ indexes start counting from 0 so, element #2
is the median, i.e. 20 is the median.

Another example:

12, 14, 20, 100

There are four numbers, so n== 4 and n/2 == 2 so element #2 and 2-1 == #1
make up the median (20+14)/2 == 17 is the median.

kind regards,

Jos

ps. I made a mistake in my previous reply (me being lazy); change the n/2+1
to n/2-1 and everything is fine again.
Sep 2 '07 #12
so size is actually
for example if i input these number.
1,2,3,4
size will contain 1,2,3,4
instead of just 4 like counting how many numbers a there
Sep 2 '07 #13
JosAH
11,448 Expert 8TB
so size is actually
for example if i input these number.
1,2,3,4
size will contain 1,2,3,4
instead of just 4 like counting how many numbers a there
I'm sorry, I really don't understand what you're talking about; e.g. these numbers

10, 20, 30, 40

The size of the array/vector/whatever is still 4 but the number 4 isn't one of the
elements off the array/vector/whatever. The median will be the average of the
numbers stored at position 4/2 and 4/2-1 so (30+20)/2 == 25.

kind regards,

Jos
Sep 2 '07 #14
4/2 + 4/2-1 /2
because of order of operation so is the ((4/2+4/2)-1)/2
which is 2+2-1 which is three then divided by 2.
but that is the first number plus second /2.
not second number +the third one??????
Sep 2 '07 #15
JosAH
11,448 Expert 8TB
4/2 + 4/2-1 /2
because of order of operation so is the ((4/2+4/2)-1)/2
which is 2+2-1 which is three then divided by 2.
but that is the first number plus second /2.
not second number +the third one??????
If there are four (4) numbers to be considered, take the 4/2 and 4/2-1, which are
the 2nd and 1st numbers and take the average of them. Remember C and C++
start counting array elements from zero: the 0th, 1st, 2nd, 3rd, 4th, 5th element etc.

kind regards,

Jos
Sep 2 '07 #16
so is the fifth number divided by 2 but rounded up the decimal.
so is 5/2 +5/2-1 then divided by 2
so is 2.5 + 1.5/2
but since they rounded up it is 3+2 /2 right?????
Sep 2 '07 #17
plz come back and help.
I need ur help plz.
Sep 3 '07 #18
or is it 4/2+1 and 4/2-1+1 then divided by two.
Sep 3 '07 #19
JosAH
11,448 Expert 8TB
or is it 4/2+1 and 4/2-1+1 then divided by two.
What are you juggling? Here's another example:

0:10
1:20
2:30
3:40
4:60

The number left of the colon is the index of the number, right of the colon is
the number itself. This array has 5 elements, so 5/2 == 2 so that median is
found at index number 2, which is 30.

For an even number of elements:

0:10
1:20
2:30
3:40

There are four elements so take the average of the numbers at indexes 4/2
and 4/2-1, which are index values 2 and 1 so take the average of 30 and 20
which makes (30+20)/2 == 25.

In general: if n (the number of elements in the array) is odd, take the
element at index value n/2; if n is even take the average of the two numbers
at index positions n/2 and n/2-1. Of course the numbers in the array need
to be sorted, either ascending or descending.

kind regards,

Jos
Sep 3 '07 #20
I get it now thx
for ur great help
Sep 3 '07 #21

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

4 posts views Thread by hupjack | last post: by
8 posts views Thread by Johnny Knoxville | last post: by
9 posts views Thread by Harry Smith | last post: by
3 posts views Thread by David | last post: by
reply views Thread by zattat | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.